Skip Navigation.
Section 0

The Chroma CPU Plus (CC+): User's Guide

by Sandro Sfregola [21010294] <>
and David Clarke [21030085++] <>

Table of Contents

May 2011 (Rev 1.2)


The CC+ provides 'an extension to the original functionality' of the Chroma, building on the last production released firmware from CBS/Rhodes/Fender (Rev 14) and adhering to some of the data formats supported by the Chroma Cult/Syntech/KMX MIDI interface.

New features have been kept as compatible as possible with the pre-existing interfaces, and so the following pre-existing documents are still good/appropriate references for a CC+ equipped Chroma:

The following sections outline those areas where the operation of the CC+ differs from that discussed in the documents above.

Note: Not all features are available in all firmware releases. Please refer to the firmware page for additional information.

Support for 4 Banks of 50 Patches

The original Chroma documentation describes the programs by saying "...there are fifty programs in the Chroma's memory that can be called upon at any time, numbered 1 through 50. There is a fifty-first program (program 0) that controls the sound of the instrument."

The CC+ now offers storage for 200 programs (201, including 'program 0'). It does so in terms of 4 banks of 50 programs each. At any time there is always a 'base bank of 50 programs", and that base bank will operate identically to the original documented functionality for the Chroma. By selecting a different bank, the contents of the newly selected bank are moved to the 'base bank' and once again, the Chroma behaves as if it only has those initial 50 banks to operate on.

In terms of the banks, the 'current' bank is represented by the decimal points in the small DATA READOUT display on the front of the Chroma.

Under normal circumstances, one of the decimal points in the display will be illuminated - and that decimal point will represent the bank, as below:

Bank 1: 8.8 8 8 8 8 8 8

Bank 2: 8 8 8.8 8 8 8 8

Bank 3: 8 8 8 8 8.8 8 8

Bank 4: 8 8 8 8 8 8 8.8

To change banks from MIDI you can issue a Program Change of "50 + desired bank". For instance, a Program Change of 51 would result in selecting bank 1. A Program Change of 52 would result in selecting bank 2, and so on.

To change banks from the Front Panel, hold down the "Prog Select" button in the "Panel Mode" section, and then press the number associated with the desired bank in the "Program Select/Parameter Select" section. In summary:

[Prog Select] + [1] = Bank 1
[Prog Select] + [2] = Bank 2 ...

Whichever method is chosen, the display will reflect the newly chosen bank.

When a bank is selected, the program which was previously the 'active' program is still active following the bank switch. For instance, if you had been using program 5 from bank 1 and then switched to bank 3, then program 5 from bank 1 will still be the one which is 'active'. This is signified by "5" still being present as the current program number, and the "Prog Modified" flag being present in the display.

It is exactly this 'carrying over' of the active/current patch data which can be used to copy patches from one bank to another. For instance, you can select a patch you like from bank X, make it current, switch to bank Y, save current patch in bank Y.

Linking is a bank inclusive operation - i.e., you can not link across banks.

NOTE: Since the MIDI bank change is controlled by a program change - if the MIDI interface is configured to disallow MIDI program changes - then bank changes from MIDI are similarly disabled.

Additional User Interface Options

The Chroma uses key combinations of Set-Split + {number} for certain functions. The following sections outlines additional combinations added by the CC+, as well as slight clarifications on functionality for existing combinations.

Set Split 6 Show "Battery" Voltage

The original Chroma CPU required two AA batteries in order to maintain the memory settings. The system allowed the general state of the batteries to be checked by pressing [SET SPLIT] then [6] to see the battery voltage. The recommendation from the manuals was to replace the batteries whenever the value was less than 2.5V.

The CC+ does not have (nor does it require) batteries - but to maintain functionality, the board has been set up to provide a fixed voltage to the battery monitoring circuitry. Pressing [SET SPLIT] then [6] with the CC+ will provide a voltage on-board the CPU board itself, and should always return a value greater than 2.5V (this voltage will be approx. 3.0V).

Set Split 20 Send Program 0 over the MIDI Interface

[Set Split 20] is a standard Chroma command which allows the user to "Send [the current] Program over [the] Chroma Interface". This command also sends the current program [Program 0] over the MIDI interface as a single program SYSEX message.

Set Split 36 Enter/Exit Programming Mode

For familiarity of operation, the configuration interface used for the CC+ is similar in structure to that used for the Syntech MIDI interface. For the Syntech interface, the MIDI Programming Mode is entered by pressing Set Split 46. Upon entering this mode, the large LED display shows "Pr" to confirm that programming mode has been entered.

For the CC+, pressing Set Split 36 will enter Programming Mode. To provide a visual indication that it is the CC+ code which is running, the large LED display is configured to display "EP" (which stands for 'extended programming' mode). Details of the selections available in Programming Mode are outlined in the Configuration Interface & MIDI Support section of this document.

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 digit used to represent the "B" voices.

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 debugging (to determine which channel of which voice card is currently sounding).

In terms of output, a 'held' note (such as you would get when you hold down a key) is shown differently than a 'latched' note (which you would get via the latch pedal).

Each of these digits has 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':

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.

No data is shown when running in 'random' or 'arpeggio' modes. Also, you must exit from this mode before being able to enter Set Split 36 mode.

Set Split 38 Random Patch Generator

The [Set Split 38] key combination now invokes a 'Random Patch' functionality. It creates a new patch in the work buffer that is immediately active. The parameters of that patch are randomly chosen.

In order to help ensure that the patch is as likely as possible to be heard/make sound, some parameters are not allowed to be completely random - as follows:

As the patch is generated randomly, it won't necessarily always produce wonderful sounds - instead, the intent is to give a basis for experimentation and manipulation. When experimenting, initial parameters to consider will be the wave shape type (e.g., SAWS, PULSE, NOISE, etc.), the Patch Control Algorithm (P1) and the envelope attack settings.

Set Split 39 Create Scratch Patch (Program 0)

As documented in the Chroma manuals, you can create 'scratch patch' by selecting the "Edit A" and "Edit B" buttons, and then holding down the "Param" button while pressing each of the 50 Chroma parameter buttons in turn. This certainly works, but it can be a bit more work than you would sometimes like. (You've got to use both hands, and perform over 50 key presses to get a scratch patch).

Set Split 39 was set up to be a 'shortcut' to this procedure. 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.

This patch can then be modified and stored in whatever memory location you like.

Set Split 40 Display Autotune Failure Information

The CC+ internally keeps track of what failed on which channels during auto-tune. That failure information can be viewed after-the-fact to determine the nature of the failure. Issuing [Set Split][40] tells the CC+ to print details of any auto-tune failures to the Alphanumeric Display.

The information printed to the display consists of individual messages of the form:


where "n" represents the hexadecimal channel number (e.g., 0 -> f for channels 0 -> 15) and "m" represents one of the 10 different error locations, as below:

The amount of data captured will depend on the type of auto-tune performed.

For a standard auto-tune (the type you get with the Auto-tune button or a power-up), you will only receive information on the first error caught on a channel.

If [Set Split][31] is used to tune the Chroma, then all elements of the channel cards are checked and all failures will be logged.


Further background on these error locations is generally presented in How the Chroma Tunes Itself.


  1. The output only goes to the alphanumeric display. That means it is necessary to have a display installed and operational before you can take advantage of this feature.
  2. As each message takes 5 characters, and the display supports 80 characters, at present a maximum of 16 failure messages (the first 16 errors logged) can be shown.
  3. If there are no auto-tune errors detected, pressing [Set Split][40] will display a blank screen.

Set Split 46/47/48/49 Syntech-Specific Settings

The Syntech interface uses certain panel controls for MIDI-specific functions. While the CC+ has implemented MIDI SysEx data structures similar to the Syntech MIDI interface, the front panel controls for that interface were not duplicated on the CC+.

If you are not using a Syntech MIDI interface, then the Syntech-specific 'set split' commands (Set Split 46, 47, 48 and 49) are not active.

If you are using a Syntech MIDI interface - then those commands will still be fully supported with the CC+, and will control Syntech functions/features.

Configuration Interface & MIDI Support

The Syntech/Chroma Cult MIDI Programming Mode offers 16 settable parameters, which are selected by pressing parameter buttons 1-16. The CC+ has analogous settings. Of the first 16, all except P2 have the same function as the Syntech interface and are selectable and editable in the same way.

The 16 initial parameters are summarized below:

P1 Base Channel (1-16)  
P2 Mode For the Syntech interface, parameter 2 selects whether the Chroma is in Omni mode or not. For the CC+, P2 selects between "normal" and "play" mode. "Normal" mode is essentially the same as "Omni off". "Play" mode is very similar to the Syntech "omni on" mode, with the notable difference that the instrument will only receive on the selected base channel - but the Chroma will play links, splits, etc. - just as it would in omni mode. To help achieve a "Master Keyboard" behaviour, the transmit behaviour of Play mode is the same as Normal mode.
P3 MIDI Out/Thru While the selection will allow you to specify Out or Thru, the setting itself will not change the behaviour of the interface. Specifically, the interface is designed to have In/Out/Thru, and so Thru and Out are always available.
P4 Program Changes Also controls whether MIDI Program changes are sent (i.e., if this is 'off', then local program changes will not get sent over MIDI). Note - since banks are selected via a 'program change' - if MIDI program changes are disabled, MIDI bank changes are similarly disabled.
P5 Instruments Available  
P6 Parameter Changes NOTE: This is strictly for channel 'parameters'. Items such as Volume, Lever 1, Lever 2, Pedal 1, Pedal 2, Footswtich, etc. are not turned off/controlled by this parameter. Same note applies for both Sending and receiving of parameters.
P7 Lever 1 Select  
P8 Lever 1 Polarity  
P9 Lever 2 Select  
P10 Lever 2 Polarity  
P11 Pedal 1 Select  
P12 Pedal 2 Select  
P13 Footswitch 2 Select  
P14 Volume Select  
P15 Param Slider Select  
P16 MIDI Pressure Mode  

Over and above the 16 'standard' parameters supported by Syntech and CC+, the CC+ firmware adds on an additional number of settings, as outlined below:

P17 Local Control (On/Off)

If Local Off is selected, notes played on the Chroma keyboard do not trigger the internal sound generators of the instrument; but rather are only transmitted via MIDI. Local Control On would configure the Chroma to operate as per the Syntech default.

In either mode (local on or local off), the Chroma is still fully capable to receive (and play) sounds via MIDI.

P18 MCM Mode Selection

You can select a 'MIDI Controller Map' to use the same assignments as the Syntech interface - or a custom/user provided mapping.
Cult = Use Emulation Mode MCM (Syntech Mode)
Cust = Use Expanded Mode (custom MCM Mode)

P19 Edit MCM

This selection allows the user to modify/edit/review the mapping in the current controller map.

When selected, the small LED display shows the controller number to the left ("C" followed by 000-127) and the destination Chroma Parameter to the right (000-127). Moving the slider changes the controller number. Pressing "Edit A" will instruct the slider to make changes to the controller number. Pressing "Edit B" will instruct the slider to make changes to the destination parameter number.

P20 Init MCM

Parameter 20 provides a quick, convenient way to reset the Expanded MCM back to a known state. This effectively resets any changes made with P19 and allows the user to start fresh.

To protect against those times when you might accidentally enter this mode - and you don't want your custom edited MCM to be erased, when P20 is first pressed, no changes are made - but the display will say "Init"

If you leave this parameter - no changes will have been made.

If you do want to initialise the MCM however, simply move the parameter slider while the "Init" message is on the screen, and the MCM will be reset to the value stored in ROM.

P21 MCM SysEx Dump

When selected, the MCM is dumped via SysEx (to allow a custom map to be stored on computer, for later use - for instance).

P22 Configure Panel/Keyboard Mode

0 = Configure Interface for the Chroma (Chro)
1 = Configure Interface for the Expander (Pndr)

P23 Fifty Program SysEx Dump Request

Initiates a dump of 50 program data to MIDI via SysEx

P24 Select MIDI Continuous Controller Mode.

If "Inst" is selected, the Continuous Controller data will only affect the 'instrument', and not affect the program. (i.e., the changes are gone when the program is reselected, the Chroma is turned off, etc.) If "Prog" is selected, then any Continuous Controller data will change the values for Program 0.

P25 Display Firmware Version

Place 3-digit the CC+ version number is the small LED display.

P26 MIDI Pressure Transmit (On/Off)

If set to 'On', pressure commands will be sent via MIDI (if they are generated from an installed pressure sensor). If set to 'Off', pressure commands will not be sent via MIDI, regardless of whether a pressure sensor is installed.

P27 Serial Display Type (PArL/SFun)

If set to 'PArL', the firmware assumes that the Parallax 27979 LCD unit is used for the Alphanumeric Display. If set to 'SFun', the firmware assumes that the SparkFun serial-to-LCD unit is used for the Alphanumeric Display.

P28 Sweep Clock Source (int/nIdi)

If set to "int" the Chroma’s Internal Clock is used to drive the Sweep/Arpeggiator functionality and the "Sweep Rate" parameter directly controls the sweep rate (normal Chroma operation). If set to "nIdi" an external MIDI clock is used to drive the Sweep/Arpeggiator functionality and the "Sweep Rate" parameter behaves as a MIDI clock multipler.

P29 MIDI Tx Velocity Tbl (int/CUSt)

If "int" is selected, the internal (default/normal) CC+ MIDI velocity map is used. If "CUSt" is selected, the last received user-defined MIDI velocity map is used.

P30 Auto-Send MIDI CC (On/Off)

If set to 'On', the Chroma will automatically send the contents of its current panel program as a dump of MIDI Continuous Controller messages whenever a front-panel patch change (Program Button or Sequence Footswitch) is made. If set to 'Off', there is no automatic MIDI Continuous Controller messages sent (this is the traditional/default configuration).

Note: When set to 'on', program changes requested via MIDI won't cause a MIDI CC dump EXCEPT if the CC+ is configured for 'PLAY' mode ([Set Split 36][P2] = PLAY) because in that mode a MIDI Program Change behaves just like a front panel change.

P31 Microtonal Key Map (On/Off)

If set to 'Off', Microtonal Key Map support is off, and the Chroma’s keys will use the standard key mapping (normal Chroma operation). If set to ‘On’, then Microtonal Key Map support is enabled, and the frequencies associated with the keyboard (and received MIDI notes) will be defined by the last successfully received MIDI Tuning Specification Bulk Tuning Dump message.

MIDI Controllers Map

The original Syntech/Chroma Cult interface maps the MIDI controllers to Chroma parameters in a predefined way and only a subset of the full number of Chroma control sources are available. Also, the performance controllers (Lever 1-2, Pedal 1-2, Footswitch 1-2, Volume) can only be assigned to a limited number of Continuous Controllers (CCs) (normally adequate in a typical MIDI setup).

The MIDI implementation of the CC+ introduces the MIDI Controllers Map (MCM) functionality, a concept that is widely available on recent instruments. The MCM allows the user to assign each of the 128 available MIDI CCs to one of the 120 possible Chroma control "destinations". These destinations include all the Chroma parameters and the performance controllers with room for future additions, as presented in Table 1.

Table 1: Chroma Parameter Assignment

Parameter # Destination Item Parameter # Destination Item
000 Not assigned (off) 064 B-Env1 Attack
001 Patch 065 B-Env1 Attack Mod
002 Fsw Mode 066 B-Env1 Decay
003 Kybd Alg 067 B-Env1 Decay Mod
004 Detune 068 B-Env1 Release
005 Out Select 069 B-Env2 Delay
006 A-Glide Rate 070 B-Env2 Ampl Touch
007 A-Glide Shape 071 B-Env2 Attack
008 A-Sweep Mode 072 B-Env2 Attack Mod
009 A-Sweep Rate 073 B-Env2 Decay
010 A-Sweep Rate Mod 074 B-Env2 Decay Mod
011 A-Sweep Wave Shape 075 B-Env2 Release
012 A-Sweep Ampl Mod 076 B-Pitch Tune
013 A-Env1 Ampl Touch 077 B-Pitch Mod1 Select
014 A-Env1 Attack 078 B-Pitch Mod1 Depth
015 A-Env1 Attack Mod 079 B-Pitch Mod2 Select
016 A-Env1 Decay 080 B-Pitch Mod2 Depth
017 A-Env1 Decay Mod 081 B-Pitch Mod3 Select
018 A-Env1 Release 082 B-Pitch Mod3 Depth
019 A-Env2 Delay 083 B-Wave Wave Shape
020 A-Env2 Ampl Touch 084 B-Wave Width
021 A-Env2 Attack 085 B-Wave Mod Select
022 A-Env2 Attack Mod 086 B-Wave Mod Depth
023 A-Env2 Decay 087 B-Cutoff LP/HP
024 A-Env2 Decay Mod 088 B-Cutoff Resonance
025 A-Env2 Release 089 B-Cutoff Tune
026 A-Pitch Tune 090 B-Cutoff Mod1 Select
027 A-Pitch Mod1 Select 091 B-Cutoff Mod1 Depth
028 A-Pitch Mod1 Depth 092 B-Cutoff Mod2 Select
029 A-Pitch Mod2 Select 093 B-Cutoff Mod2 Depth
030 A-Pitch Mod2 Depth 094 B-Cutoff Mod3 Select
031 A-Pitch Mod3 Select 095 B-Cutoff Mod3 Depth
032 A-Pitch Mod3 Depth 096 B-Volume Mod1 Select
033 A-Wave Wave Shape 097 B-Volume Mod1 Depth
034 A-Wave Width 098 B-Volume Mod2 Select
035 A-Wave Mod Select 099 B-Volume Mod2 Depth
036 A-Wave Mod Depth 100 B-Volume Mod3 Select
037 A-Cutoff LP/HP 101 Lever 1
038 A-Cutoff Resonance 102 Lever 2
039 A-Cutoff Tune 103 Pedal 1
040 A-Cutoff Mod1 Select 104 Pedal 2
041 A-Cutoff Mod1 Depth 105 Footswitch 1
042 A-Cutoff Mod2 Select 106 Footswitch 2
043 A-Cutoff Mod2 Depth 107 Volume
044 A-Cutoff Mod3 Select 108 Performance Tune
045 A-Cutoff Mod3 Depth 109 Unused (free)
046 A-Volume Mod1 Select 110 Unused (free)
047 A-Volume Mod1 Depth 111 Unused (free)
048 A-Volume Mod2 Select 112 Unused (free)
049 A-Volume Mod2 Depth 113 Unused (free)
050 A-Volume Mod3 Select 114 Unused (free)
051 Not assigned (off) 115 Unused (free)
052 Not assigned (off) 116 Unused (free)
053 Not assigned (off) 117 Unused (free)
054 Not assigned (off) 118 Unused (free)
055 Not assigned (off) 119 Unused (free)
056 B-Glide Rate 120 Unused (free)
057 B-Glide Shape 121 Unused (free)
058 B-Sweep Mode 122 Unused (free)
059 B-Sweep Rate 123 Unused (free)
060 B-Sweep Rate Mod 124 Unused (free)
061 B-Sweep Wave Shape 125 Unused (free)
062 B-Sweep Ampl Mod 126 Unused (free)
063 B-Env1 Ampl Touch 127 Unused (free)

The default MCM which is installed with Enhanced Programming (Set Split 36, P20) is below. This map attempts to provide a direct mapping for all the standard front-panel parameters on the Chroma.

MIDI CC# MCM Dest# Dest. Item MIDI CC# MCM Dest# Dest. Item
1 101 Lever 1 60 0  
2 0   61 0  
3 0   62 0  
4 103 Pedal 1 63 0  
5 0   64 105 Footswitch 1
6 0   65 0  
7 107 Volume 66 0  
8 108 Performance Tune 67 106 Footswitch 2
9 0   68 0  
10 6 A-Glide Rate 69 0  
11 7 A-Glide Shape 70 56 B-Glide Rate
12 8 A-Sweep Mode 71 57 B-Glide Shape
13 9 A-Sweep Rate 72 58 B-Sweep Mode
14 10 A-Sweep Rate Mod 73 59 B-Sweep Rate
15 11 A-Sweep Wave Shape 74 60 B-Sweep Rate Mod
16 12 A-Sweep Ampl Mod 75 61 B-Sweep Wave Shape
17 13 A-Env1 Ampl Touch 76 62 B-Sweep Ampl Mod
18 14 A-Env1 Attack 77 63 B-Env1 Ampl Touch
19 15 A-Env1 Attack Mod 78 64 B-Env1 Attack
20 16 A-Env1 Decay 79 65 B-Env1 Attack Mod
21 17 A-Env1 Decay Mod 80 66 B-Env1 Decay
22 18 A-Env1 Release 81 67 B-Env1 Decay Mod
23 19 A-Env2 Delay 82 68 B-Env1 Release
24 20 A-Env2 Ampl Touch 83 69 B-Env2 Delay
25 21 A-Env2 Attack 84 70 B-Env2 Ampl Touch
26 22 A-Env2 Attack Mod 85 71 B-Env2 Attack
27 23 A-Env2 Decay 86 72 B-Env2 Attack Mod
28 24 A-Env2 Decay Mod 87 73 B-Env2 Decay
29 25 A-Env2 Release 88 74 B-Env2 Decay Mod
30 26 A-Pitch Tune 89 75 B-Env2 Release
31 27 A-Pitch Mod1 Select 90 76 B-Pitch Tune
32 28 A-Pitch Mod1 Depth 91 77 B-Pitch Mod1 Select
33 29 A-Pitch Mod2 Select 92 78 B-Pitch Mod1 Depth
34 30 A-Pitch Mod2 Depth 93 79 B-Pitch Mod2 Select
35 31 A-Pitch Mod3 Select 94 80 B-Pitch Mod2 Depth
36 32 A-Pitch Mod3 Depth 95 81 B-Pitch Mod3 Select
37 33 A-Wave Wave Shape 96 82 B-Pitch Mod3 Depth
38 34 A-Wave Width 97 83 B-Wave Wave Shape
39 35 A-Wave Mod Select 98 84 B-Wave Width
40 36 A-Wave Mod Depth 99 85 B-Wave Mod Select
41 37 A-Cutoff LP/HP 100 86 B-Wave Mod Depth
42 38 A-Cutoff Resonance 101 87 B-Cutoff LP/HP
43 39 A-Cutoff Tune 102 88 B-Cutoff Resonance
44 40 A-Cutoff Mod1 Select 103 89 B-Cutoff Tune
45 41 A-Cutoff Mod1 Depth 104 90 B-Cutoff Mod1 Select
46 42 A-Cutoff Mod2 Select 105 91 B-Cutoff Mod1 Depth
47 43 A-Cutoff Mod2 Depth 106 92 B-Cutoff Mod2 Select
48 44 A-Cutoff Mod3 Select 107 93 B-Cutoff Mod2 Depth
49 45 A-Cutoff Mod3 Depth 108 94 B-Cutoff Mod3 Select
50 46 A-Volume Mod1 Select 109 95 B-Cutoff Mod3 Depth
51 47 A-Volume Mod1 Depth 110 96 B-Volume Mod1 Select
52 48 A-Volume Mod2 Select 111 97 B-Volume Mod1 Depth
53 49 A-Volume Mod2 Depth 112 98 B-Volume Mod2 Select
54 50 A-Volume Mod3 Select 113 99 B-Volume Mod2 Depth
55 0   114 100 B-Volume Mod3 Select
56 0   115 1 Patch
57 0   116 2 Fsw Mode
58 0   117 3 Kybd Alg
59 0   118 4 Detune
      119 5 Out Select

The MCM is fully editable.

Syncing Sweeps/LFO to MIDI

As noted above, the Sweep Clock Source can be chosen by going into the Configuration Interface [Set Split 36] and selecting parameter 28 [P28].

When ‘nIdi’ is selected, the sweep rate is determined by the MIDI timing clock (MIDI realtime message 0xF8). In this mode, Chroma Parameter #9 no longer directly controls the rate; instead, it behaves as a MIDI clock multipler.

Per normal Chroma operation, for ‘arpeggiator’ keyboard algorithms, the arpeggio rate is determined by Sweep Rate A (e.g., Parameter 9). The “x1” clock multipler was chosen such that 4 arpegiator notes would sound in a 4/4 bar (e.g., 1 quarter note represents 24 ticks of the MIDI clock).

The ‘Sweep Rate’ parameter significance when in MIDI sync mode is as follows:

Sweep Rate Val MIDI Clock Factor
0 /256
1 /128
2 /64
3 /32
4 /19
5 /18
6 /16
7 /15
8 /14
9 /13
10 /12
11 /11
12 /10
13 /9.667
14 /9
15 /8.333
16 /8
17 /7
18 /6.667
19 /6.333
20 /6
21 /5.5
22 /5
23 /4.667
24 /4.333
25 /4
26 /3.75
27 /3.5
28 /3.25
29 /3
30 /2.75
31 /2.583
32 /2.5
33 /2.25
34 /2.167
35 /2
36 /1.75
37 /1.667
38 /1.5
39 /1.417
40 /1.333
41 /1.25
42 /1.167
43 /1.083
44 1
45 x 1.091
46 x 1.143
47 x 1.2
48 x 1.263
49 x 1.333
50 x 1.412
51 x 1.5
52 x 1.6
53 x 1.714
54 x 1.846
55 x 2
56 x 2.182
57 x 2.4
58 x 2.667
59 x 3
60 x 3.429
61 x 4
62 x 4.8
63 x 6

As part of supporting the MIDI timing clock for synchronization, the MIDI ‘start’ real time message is also supported. When a ‘start’ message is received, the sweep is reset.

Some of the higher multiplers/divisors may not necessarily be ‘musical’, but are included in the implementation as they do sometimes result in interesting behaviours.

The higher the input MIDI tempo, the fewer number of ‘higher’ multiplers that will be useful. The fastest useful sweep rate is approximately 12.5Hz.

The original Chroma operation is such that when the Sweep Generator is running in Asynchronous Free Running mode (Sweep Mode, Parameter 8, set to “0”), the sweep automatically runs 1.5x faster than the requested rate. All original functionality is carried over into this current implementation - meaning some consideration always needs to be given to the Sweep Mode selected and modulations sources chosen.

Microtonal Key Mapping/Arbitrary Key Tuning

“Microtonal Key Map” support is enabled via [Set Split 36][P31].

When set to ‘On’, the frequencies for each ‘key’ are defined by an internal lookup table, 128 entries in size (one entry for each possible MIDI note).

The Chroma accepts Bulk Tuning Dump messages, as defined in the MIDI Tuning Specification to update the user-defined mapping inside the Chroma.

The Scala software package is a convenient method to develop/download custom key mappings to the Chroma.

To get up and running with Scala and the Chroma quickly - configure Scala for your MIDI interface - then go to "Opts", "Synth", choose the Tuning Model to be "MIDI Tuning Standard bulk tuning dump" and the “MTS Preset” to be 0. Load your desired scale and use Scala to ‘send’ the mapping to the Chroma. The Chroma is set up to accept any Device ID, Preset 0 - and it ignores the received checksum (as is the guidance of the MIDI Manufacturer’s Association).

When enabled by [Set Split 36][P31] the custom tuning is always ‘live’ - meaning that if you change the tuning data while a note is already sounding, the pitch of the sounding note will dynamically change to match the new tuning.

MIDI System Exclusive (SysEx)

The CC+ supports MIDI System Exclusive (SysEx) messages to access features inside the device.

The SysEx format used in the CC+ has been implemented in such a way to keep the program dumps/requests 100% compatible with the Syntech/Chroma Cult interface. The CC+ also supports SysEx messages not available on the Syntech/Chroma Cult intterface.

Specifically, the following messages are supported via SysEx on the CC+:

The general format of the SYSEX request messages are:

F0 08 00 4B 59 00 pp F7


F0 System Exclusive Start
08 Fender ID
00 4B 59 KMX (Syntech/Chroma Cult) converter ID
00 Dump request (if non 0 denotes an actual dump)
pp 0 to 50 (decimal) = Program Number 0 - 50
  51 (0x33) = Fifty Program
  52 (0x34) = MIDI Parameters File (not yet implemented)
  53 (0x35) = MIDI Controller Map File
  54 (0x36) = Patch Parameter Value
  55 (0x37) = Performance Tune (Byte Control)
  56 (0x38) = All Controllers CC Request
  57 (0x39) = Custom MIDI Velocity Tx Table
F7 End Of Exclusive

Note - all values are in hexadecimal if not otherwise specified.


Single program dump request for program 2:

F0 08 00 4B 59 00 02 F7

Expected Response:

F0 08 00 4B 59 7F 02 0h 0l 0h 0l... F7

(118 data bytes: 59 (decimal) data bytes that make up a Chroma program, nibblized and sent high nibble first)

Fifty programs dump request:

F0 08 00 4B 59 00 33 F7

Expected Response:

F0 08 00 4B 59 7F 33 pp 0h 0l .... pp 0h 0l .... F7

where pp will go from 1 to 50 (dec)

Note: a program dump is parsed as it is received - so if the original SysEx has become corrupt, the firmware will still try to store as many complete programs as it can.

MCM dump request:

F0 08 00 4B 59 00 35 F7

MCM dump:

F0 08 00 4B 59 7F 35 dd dd dd .... F7

dd = 128 MCM bytes (dec values 0 - 127)

SYSEX read and writes of all the parameters in Program 0 (one at a time) are supported, as below:

Write program 0 parameter command:

F0 08 00 4B 59 01 36 pn pv F7


F0 System Exclusive
08 Fender ID
00 4B 59 KMX converter ID
01 (Any non-zero value)
36 (decimal 54) Write Program 0 Command
pn Parameter Number
pv New Parameter Value
F7 End Of Exclusive (optional; the firmware execute the command after reception of pv)

Read program 0 parameter command:

F0 08 00 4B 59 00 36 pn F7

After reception the instrument reply with the following data:

F0 08 00 4B 59 01 36 pn pv F7


pn Parameter Number
pv Read Parameter Value

Performance Tune Read:

F0 08 00 4B 59 00 37 F7


F0 08 00 4B 59 01 37 aa F7

Where "aa" is a value 0->7F (0-127 decimal), to represent the read tune value.

Performance Tune Write:

F0 08 00 4B 59 01 37 aa F7

Where "aa" is a value 0->7F (0-127 decimal), to represent the desired tune value.

A value of "0" would be 1 semitone flat (as would occur with the maximum 'pull' on the Chroma's Tune slider). A value of "127" would be almost 1 semitone sharp (maximum 'push' on the slider). A value of "64" represents the centre setting of the tune slider.

All Controllers Request:

F0 08 00 4B 59 00 38 F7

This command requests the Chroma send all of its current parameter values via Continuous Controllers - and so the expected response to this command is a stream of MIDI CC messages from the Chroma, one for each parameter of the current program.

This sort of request and data can be used to update parameter data for external knob-box or patch display devices.

Custom MIDI Velocity Tx Table dump:

To send a custom map to the Chroma, a MIDI SYSEX message like the following would be used:

F0 08 00 4B 59 7F 39 dd dd dd .... F7

where dd = 32 bytes, corresponding to the desired 32-position table for MIDI Tx values (from 0 to 127)

Custom MIDI Velocity Tx Table dump request:

You can also request the current custom map to be sent back to you from the CC+ you via SYSEX. That would be done with a MIDI Tx Velocity lookup table dump request, as below:

F0 08 00 4B 59 00 39 F7

In addition to the “Manufacturer SysEx” messages defined above, the CC+ also supports receipt of a Bulk Tuning Dump from the MIDI Tuning Specification, which is a specific instance of a Non-Real-Time SysEx message. The Chroma will accept receipt of a message of the format:

F0 7E <device ID> 08 01 tt <tuning name> [xx yy zz] ... chksum F7

where we have:

F0 7E Universal Non-Real Time SysEx header
<device ID> ID of responding device (CC+ will accept any)
08 sub-ID#1 (MIDI Tuning)
01 sub-ID#2 (bulk dump reply)
tt tuning program number (Only #0 received by CC+)
<tuning name> 16 ASCII characters (needed to be received, but ignored by CC+)
[xx yy zz] frequency data for one note (repeated 128 times)
chksum checksum (needed to be received, but ignored by CC+)

Special Features/Changes

Over and above MIDI and changes to the user-interface, there are other features provided via the addition of the CC+. These items as discussed in the following sections. (The physical location of the DIP switches is highlighted in Board Outline section.)

Delayed Start

DIP SW#1 = Power on delay.

If DIP switch #1 is in the ON position at power-up/hardware reset, a 2 second delay routine is called before auto-tune. This delay can be used to allow the on-board reference voltage to stabilize before attempting tuning.

DAC Offset Adjustment Service Mode

DIP SW#2 = Service Mode Select

If DIP switch #2 is in the ON position at power-up/hardware reset, then after power on initialisation is performed, on-board code execution will be redirected to execute a "service" routine.

This routine writes a zero value to both the main and reference DACs and then executes the SYNC processor instruction. SYNC will cause the CPU to stop, and both the address and data buses will go a high impedance state, 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.

One CPU/Program Load for Both the Chroma and Expander

In the past, a different set of on-board EPROMs were required depending on whether you were running a Rhodes Chroma (keyboard-version) or a Rhodes Chroma Expander (keyboardless).

The CC+ interface supports both the Chroma and Expander through the same firmware load. The CC+ configuration interface (Set Split 36), Parameter 22 and the Parameter Control slider will configure the firmware for Chroma or Expander mode.

From that menu, selecting "Chro" will put the firmware into Chroma mode - with full keyboard support as well as Link Upper/Link Lower support. Selecting "Pndr" will select Expander mode, and will remove keyboard support and reconfigure the Panel buttons/LEDs appropriate for the Expander.

When queried over the Chroma port via the 'identification' opcode (ref: the Computer Interface Manual), the CC+ will correctly respond with the Chroma or Expander identification code, as dictated by the "Chro" or "Pndr" selections.

Changed Memory Map

The Chroma Computer Interface Manual provides a list of addresses as "Useful Locations in the Chroma."

All values in that document for addresses below 0x2000 remain intact with the CC+ while addresses recorded at 0x2000 and above have been relocated.

NOTE: It is known that the Syntech interface make specific use of certain memory locations in the original Chroma firmware, including address 0xC100 as the "Return address" and addresses 0xCD8a and 0xCD90. Provisions have been made in CC+ to allow these addresses to be responded to properly, even while the underlying memory map may have actually changed.

MIDI Activity Indicator

The large 2-digit LED display on the Chroma's front panel normally shows the Program Number for the current program. The right-most decimal point is used to indicate if there are changes between the 'current' program and the program which has the displayed number.

The decimal point in the middle of the display (i.e., the decimal associated with the left digit in the display) is used to report CC+ MIDI activity. This point will flash when the Chroma is successfully receiving MIDI data from the CC+ interface.

Out-board, the MIDI interface cable also houses two LEDs. One of these LEDs (the Green LED) will also signal MIDI activity.

Support for MIDI 'Tune Request'

The Chroma listens for MIDI opcode 0xF6 (Tune Request) and will perform a 'Tune All' in response to receiving it.


While it is hoped that no problems will be experienced with the CC+, the following points highlight some possible scenarios, along with some possible solutions and/or items to check.

Problem Items to Check
CPU does not power up.

Confirm that the connectors were installed into the I/O board fully, with no bent pins.

Confirm power cord has been reattached to the Chroma.

Confirm that jumpers are not in 'test mode'.

If the Chroma has been retrofitted with a switching power supply, confirm that the 'minimum load' requirement is achieved with the lower-power CC+. Confirm that the Chroma will still boot properly if the original CPU is reinstalled

No sounds are heard when keys are pressed, but the Chroma does make sound when MIDI data is received.

The interface may be set to have "Local Off."

The interface may be set in Expander Mode vs. Chroma Mode.

Can't enter Programming Mode (Set Split 36)

No CC+ installed.

Currently in Voice-Watch mode.

Link Unison/Link Upper/Link Lower doesn't work properly

Confirm that parameter P22 f(Configure Panel/Keyboard Mode) is set appropriately for the synthesizer that the CC+ is installed in (i.e., Chroma or Expander).

The "Data Readout" is all blank - but the keyboard otherwise seems to be OK.

In Voice Watch mode.

No MIDI activity is being reported by the LEDs

Wrong base channel selected.

MIDI cable disconnected (from the CC+, from the back plane).

Wrong cable connection (i.e., MIDI cables installed in wrong locations)

I'm not seeing controller data being sent/continuous controllers are not controlling what I would expect.

Check the MCM Mode from the interface.

Confirm that the listed controller map is mapping to the controllers expected.

I turned on the Chroma, but all the lights stay off for an extended period of time

Check the DIP switches on the board to turn off the startup delay.

The CC+ Doesn't seem to be receiving some/all of the MIDI CC messages sent to it and/or the wrong parameters are changed on the Chroma via MIDI CC. Press [Set Split 36] and confirm that P6 (Parameter Changes) are turned on, that P18 (MCM Mode Selection) is set as desired. For P18, 'Cult' should be selected to choose the KMX/Syntech mapping - the 'Cust' setting should be chosen for full MIDI CC support (as is normally used for external knob boxes/editors).
One or more of the features outlined in the User's Manual don't seem to work on my CC+ Not all features are available in all firmware releases. The installed version of firmware can be checked with [Set Split 36][P25]. The features enabled in different versions of firmware can be checked on the Firmware page.
After a firmware upgrade the keyboard doesn't work/the MIDI mapping is not correct/MIDI parameters are not received, etc. The location of customization parameters may have changed between the old version of firmware and the new. Issue [Set Split 36] and step through each of the configuration parameters and ensure that they are set appropriately for your desired configuration.
Corrupted/wrong/scrolling data in the LCD display

Wrong LCD type chosen in the Configuration Interface. Select [Set Split], [36]: [P27] and ensure the correct choice is made for the type of display.

The SparkFun controller was not properly configured for 4-line x 20 character mode and/or not configured for 19,200 baud rate.

No data in the LCD display

Whether UART chip has been added to the CC+ board (and it is installed correctly)

Correct wiring to the LCD

No/Bad/Unexpected MIDI Velocity Behaviour Select [Set Split 36][P29] and ensure the internal velocity map is used. If problem goes away, correct/replace contents of the custom velocity table.
Auto-Send MIDI CC option is being used, but wrong controllers seem to be updated on the external device.

Select [Set Split], [36]: [P18] and ensure the MIDI Controller Map being used matches the mapping expected on the external device.

If using the Custom MIDI Controller Map, ensure that the expected assignments are present (e.g., reset with [Set Split 36][P20] and a move of the slider).

The Sweep Sources/Arpeggiator doesn’t appear to advance.

The Sweep Clock Source is set to MIDI but there is no external MIDI clock present. Select [Set Split 36][P28] and ensure the correct choice is made and/or ensure there is an external MIDI timing clock present.

External MIDI sync sync is selected, but the divisor (Sweep Rate setting) is set to such a low value that the value is changing very, very slowly and only seems to not advance.

Keyboard notes appear with incorrect/inconsistent tuning.

The Microtonal Key Map feature is enabled. If it isn’t desired, turn it off by going into [Set Split 36][P31] and selecting ‘Off’.

Keyboard notes all appear to be the same.

The Microtonal Key Map feature is enabled and there has not been a MIDI Tuning Specification file received by the Chroma. To address, either turn off the Microtonal Key Map support by going into [Set Split 36][P31] and selecting ‘Off’ - or download the intended tuning via a MIDI Tuning Specification MIDI Full Dump file to tuning preset location 0.