The Chroma CPU Plus (CC+): User's Guide
by Sandro Sfregola [21010294] <chroma.tech.one@gmail.com>and David Clarke [21030085++] <ac151@ncf.ca>
Table of Contents
May 2011 (Rev 1.2)
- Introduction
- Support for 4 Banks of 50 Patches
- Additional User Interface Options
- Set Split 6 Show "Battery" Voltage
- Set Split 20 Send Program 0 over the MIDI Interface
- Set Split 36 Enter/Exit Programming Mode
- Set Split 37 Show Voice Allocations
- Set Split 38 Random Patch Generator
- Set Split 39 Create Scratch Patch (Program 0)
- Set Split 40 Display Autotune Failure Information
- Set Split 46/47/48/49 Syntech-Specific Settings
- Configuration Interface & MIDI Support
- Special Features/Changes
- Troubleshooting
Introduction
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:
- Rhodes Chroma Programming Manual
- Rhodes Chroma Performance Manual
- Rhodes Chroma Parameter Chart
- Rhodes Chroma Service Manual
- Rhodes Chroma Computer Interface Manual
- [Syntech/Chroma Cult/KMX] Chroma MIDI Converter User's Manual
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:
- 'Threshold' modulation selections are excluded
- The 'Output' selection is always set to Output 0
- The 'Chord Buffer' keyboard algorithm is excluded
- Link Balance is set to 0
- Footswitch Mode is always set to 'Left = Latch, Right = Sustain'
- Link is always set to 'no link.'
- The keyboard split is always set to 0 (mid keyboard)
- Volume Mod Depths A1, A2, B1 & B2 are set to Deep (15)
- 'Pedal' settings for Ampl. Mod Select 3 are excluded.
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:
CnEm
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:
- 0 = Oscillator scale factor high end measurement
- 1 = Oscillator scale factor low end measurement
- 2 = Oscillator scale factor computation
- 3 = Oscillator offset measurement
- 4 = Oscillator offset computation
- 5 = Filter scale factor high end measurement
- 6 = Filter scale factor low end measurement
- 7 = Filter scale factor computation
- 8 = Filter offset measurement
- 9 = Filter offset computation
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.
Examples:
- Channel Board 5 with VCO (chip Z3) missing
- Normal Auto-Tune LCD Output: CbE0
- Set Split 31 LCD Output: CbE0 CbE1 CbE3
- Channel Board 7 missing
- Normal Auto-Tune LCD Output: CeE0
- Set Split 31 LCD Output:
- CeE0 CeE1 CeE3 CeE5
- CeE6 CeE7 CeE8 CfE0
- CfE1 CfE3 CfE5 CfE6
- CfE7 CfE8
Further background on these error locations is generally presented in How the Chroma Tunes Itself.
Notes
- 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.
- 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.
- 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. |
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) |
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. |
P32 | Initial Pressure from Velocity | When this parameter is set to "On", an initial pressure value is assigned based on key velocity (original Chroma behaviour). When this parameter is set to "Off", the CC+ will not assign an initial pressure value based on velocity - and will instead always assume an initial key-strike pressure of '0'. |
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+:
- Single Program Dump
- Single Program Dump Request
- Fifty Program Dump
- Fifty Program Dump Request
- MIDI Controller Map (MCM) Dump
- MIDI Controller Map (MCM) Dump Request
- Write Parameter Value to Program
- Read Parameter Value from Program
- Write Master Tune Value to Chroma
- Read Master Tune Value from Chroma
- Request All Program Parameters be Sent via CC
- Custom MIDI Velocity Tx Table dump
- Custom MIDI Velocity Tx Table dump request
The general format of the SYSEX request messages are:
F0 08 00 4B 59 00 pp F7
where:
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.
Examples:
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
Where:
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
Where:
pn | Parameter Number |
pv | Read Parameter Value |
Performance Tune Read:
F0 08 00 4B 59 00 37 F7
Response:
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+) |
F7 | EOX |
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.
Troubleshooting
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. |