Skip Navigation.
Section 0

Chroma Expansion Board: MIDI

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+).

Syntech/Chroma Cult vs. CEB Comparison

The MIDI Controllers Map

The original Syntech/Chroma Cult interface maps the MIDI controllers to Chroma parameters in a prefixed way (see the Syntech manual for reference) and only a subset of them is available.

Also, the performance controllers (Lever 1-2, Pedal 1-2, Footswitch 1-2, Volume) can be assigned to a limited number of CC (normally adequate in a typical MIDI setup).

In the MIDI implementation of the CEB firmware I have introduced the MIDI Controllers Map (MCM) functionality, a concept that is widely available on recent instruments; this allow the user to assign each of the 120 available MIDI CC to one of the 128 possible "destinations"; such destinations include all the Chroma parameters and the performance controllers with room for future additions as you can see in the following reference table:

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

There are 4 new user interface parameters (P18 - P21, see The User Interface below) dedicated to the MCM management; the MCM configuration can also be uploaded/downloaded by system exclusive messages (see the System Exclusive section below).

David and I have prepared a "default" MCM: using parameter P20 the map is initialised as follows:

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

The MCM is fully editable; also the user is free to choose between the normal Syntech/Chroma Cult "emulation" mode and the expanded MCM mode.

Local Control

I think this new feature will be welcome among users that would use the Chroma in combination with a MIDI sequencer; it is present in almost all MIDI instruments.

As probably you already know, setting Local Control to off the instrument is logically split in two blocks: a control keyboard and a sound generator module, with no connections between them.

Note: this feature is one of the benefits of having MIDI implemented on board; in fact it is impossible to achieve by an external MIDI converter. This is why the Syntech lacks this function.

Omni On vs. "Play mode"

I have partially changed the function of the P2 parameter: while "Normal mode" is the same of Syntech Omni Off, "Play mode" is functionally as Syntech Omni On but the instrument will receive only on the base channel.

I think it is more usable this way (Omni On mode is of little use these days...).

The User Interface

David Clarke [21030085++] has written the user interface code and the following reference:

The CEB firmware intentionally attempted to stay consistent with Syntech operation. Wherever possible, 'additional' functionality was added in a non-conflicting manner.

This process was also done in such a way so that a Chroma could actually even be fitted with both the Syntech interface and the CEB interface at the same time.

In terms of a comparison, to enter into the "MIDI Programming Mode", the Syntech interface requires the user to press Set Split: 46. Upon entering this mode, the large LED display shows "Pr" (to confirm that programming mode has been entered).

For the CEB, a similar functionality is present. In this case, pressing Set Split: 36 will enter Programming Mode. To provide a visual indication that it is the CEB code which is running, the large LED display is configured to display "EP" (which stands for 'extended programming' mode).

Syntech par.# Syntech par. function CEB par.# CEB par. function 
P1 Base Channel (1-16) P1 Base Channel (1-16)
P2 Omni On/Off P2 Mode
P3 MIDI Out/Thru P3 MIDI Out/Thru See note1
P4 Program Changes P4 Program Changes
P5 Instruments Available P5 Instruments Available
P6 Parameter Changes P6 Parameter Changes
P7 Lever 1 Select P7 Lever 1 Select See note 2
P8 Lever 1 Polarity P8 Lever 1 Polarity
P9 Lever 2 Select P9 Lever 2 Select See note 2
P10 Lever 2 Polarity P10 Lever 2 Polarity
P11 Pedal 1 Select P11 Pedal 1 Select See note 2
P12 Pedal 2 Select P12 Pedal 2 Select See note 2
P13 Footswitch 2 Select P13 Footswitch 2 Select See note 2
P14 Volume Select P14 Volume Select See note 1,2
P15 Param Slider Select P15 Param Slider Select See note 1
P16 MIDI Pressure Mode P16 MIDI Pressure Mode See note 1
P17 Local Control (On/Off)
P18 MCM Mode Selection See note 2
P19 Edit MCM
P20 Init MCM
P21 MCM sysex dump

Note 1: some items are not fully implemented yet (firmware 20.07)

Note 2: while the interface is running in expanded MCM mode (P18 = Cust) some MIDI interface parameters change behaviour as follows:

The Syntech/Chroma Cult MIDI Programming Mode offers 16 settable parameters, which are selected by pressing parameter buttons 1-16.

All the parameters except P2 have exactly the same settings as the Syntech interface and are selectable and editable in the same way.

For the Syntech interface, parameter 2 selects whether the Chroma is in Omni mode or not.

For the CEB, P2 will select 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.

Over and above the 16 'standard' parameters supported by Syntech, the CEB firmware adds on an additional set of settings, as follows:

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 transmitted by the CEB via MIDI.

Sandro's note: the same is true for the performance controllers.

(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 Selection

P19 Edit MCM

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 provide 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 hard 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.

For release 20.07 of the firmware, this default, expanded MCM is as discussed in "The MIDI Controllers Map" section.

P21 MCM sysex dump

When selected, the MCM is dumped via sysex messages (see the sysex section).

System Exclusive

Here is the description of how system exclusive is implemented in firmware Rev. 10.07.

As you can see, program dumps are 100% compatible with the Syntech/Chroma Cult interface.

Values are in Hex if not specified.

Single program dump request:

F0 08 00 4B 59 00 pp

F0       System Exclusive
08       Fender ID
00 4B 59 KMX converter ID
00       Dump request (if non 0 denotes dump)
pp       0 to 50 (decimal) program number
         51 = fifty programs
         52 = MIDI parameters file (not yet implemented)
         53 = MCM file

Fifty programs dump request:

F0 08 00 4B 59 00 33

33 = decimal 51

Single program dump:

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

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

Fifty programs dump:

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

pp 1 to 50 (dec)

Note: the CEB firmware can load an incomplete "fifty programs" dump; only complete programs are stored in memory.

MCM dump request:

F0 08 00 4B 59 00

MCM dump:

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

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