Skip Navigation.
Section 0

Chroma Expansion Board: Features

by Sandro Sfregola [21010294] <chroma.tech.one@gmail.com>
with David Clarke [21030085++] <ac151@ncf.ca>

The CEB was the precursor of the CPU Plus (CC+), implementing the initial functionality of the CC+ as an add-on rather than a replacement board. The information on these pages is provided for historical interest; there will be no further updates or firmware revisions. See The Chroma CPU Plus (CC+).

New "non MIDI related" features currently supported

David Clarke has written the code for the three following features; they are commented by the author.

Set Split: 37, Show Voice Allocations

When Set Split: 37 is pressed, the Chroma will toggle in to/out of 'Voice Display' mode. In Voice Display mode, the 8-digit LED display will be used to show the voice activity.

The 8 digits of the display are used to represent the 8 dual-channel voice cards, with the top-part of the digit used to represent the "A" voices and the bottom-part of the dig used to represent the "B" voices.

Specifically, in all voice allocation modes (except for the 'sequencer' modes), the Chroma keeps track of whether the voice is 'released', 'latched' or 'held'.

Voice Display mode dynamically shows which channels are active; this can be used to give a feel for how many channels are still free (i.e., which could still be assigned to other sounds), or even to assist with debug (to determine which channel of which voice card is currently sounding).

In terms of output, a 'held' note (such as you'd get when you simply hold down notes on the keyboard) are shown differently than an 'latched' note (which you'd get via a pedal).

Each of these digits have seven segments, as below:

When an "A" voice is 'held', the whole top portion of the digit is lit, as below:

When a "B" voice is 'held', the whole bottom portion of the digit is lit, as below:

If a particular voice is latched, only the top-most segment (for 'A') or bottom-most (for 'B') is shown.

The representation below illustrates what would appear in the display if, for instance, Channel A0, B0, A1, B1, A5, B6 and B7 were 'held' with A2, A3 and B4 'latched':

Off course, all the assignment indications change dynamically as the Chroma is played (either from the keyboard, from MIDI or both).

Pressing Set Split: 37 again returns the display back to its previous (normal) contents.

(While not currently implemented, this routine could potentially be updated to display other voice-related information - such as which voices were currently disabled).

Set Split: 38, Branch to RAM location

Set Split 38 has been used in development. At present, it branches to an absolute address in RAM (address 0x5000). This is useful during software/firmware investigation when code is placed into RAM for testing. In that case, Set Split 38 provides a quick way to simply jump to any development code which has been loaded into RAM.

(This feature would not currently be of any use to a 'general' Chroma user.)

Sandro's note: to avoid crashes and potential RAM data corruption, I disabled this feature in the "public" version of the firmware.

Set Split: 39, Create Scratch Patch (Program 0)

There is a general procedure which can be used to create a 'scratch patch' for the Chroma. Specifically, you can press "Edit A" and "Edit B" buttons, hold down the "Param" button, and then press each of the 50 Chroma parameter buttons in turn. This certain works, but it can be a bit more work than you'd like sometimes.

Set Split: 39 was set up to be a 'shortcut' to this procedure. Specifically, pressing Set Split: 39 will cycle through all the parameters and create the scratch patch, leaving the results stored in the 'current' program (The display will change to show "0" as the current program number). You can then modify the scratch patch and then store it to whatever memory location you'd like.

This provides a quick and easy starting point for custom patches.

DIP switch controlled special modes

Power on delay (DIP SW#1)

Setting the dip switch #1 to ON at power on (hardware reset) a 2 seconds delay routine is called before auto-tune: this allow for the reference voltage to stabilize properly.

I implemented this feature for personal purposes (I made a custom reference voltage circuit) but if you see the service notes by Martin Straw (about power on tuning failures caused by the original PSU), you could find it useful for you as well.

DAC Offset Adjustment Service Mode (DIP SW#2)

The procedure indicated in the Chroma Service Manual for adjusting Z25 offset is the only possible without a special firmware function; nevertheless this is not the most accurate: during normal operation of the instrument, the DAC generate a sequence of different voltage steps; since the gain of Z25 is finite, a fraction of these output voltages appear at the inverting input (TP1) causing a DVM reading error; the best result can be achieved writing a digital 0 to Z24 and cancelling out the output voltage of Z25 (pin 6) in respect of TP0 (the DAC ground).

Setting dip switch #2 to on, after power on initialisation the program execute the "service" routine: a zero value is written on both the main and reference DAC, then the SYNC instruction is executed; the CPU stops, both address and data buses go in high impedance, minimizing radiated noise; this "static" condition allow for precise offset adjustment at the main DAC op-amp output and to check the offset at the reference DAC.