TS-10 | TS-12 · MIDI SysEx Implementation Specification V.2.0
Parameter block layouts
4 Parameter Block Data Descriptions
This is a description of the parameter blocks transmitted using the bulk dump messages described in section 3.3. The names and byte offsets of each block parameter are given. The parameter value ranges are included in section 5. The following byte layout is the internal representation and not the MIDI byte format which is described in section 2.3.
4.1 Program Parameters
The first group of parameters through byte offset 92 describe one of the six possible voices in a program. This same structure is repeated with an additional offset of 92 for each of the other five voices. When the program has an option enabled (Pitch Table, Wave List or Drum Map), voices 5 and 6 are replaced with the option data. All of the global program parameters are at the bottom of this list. These parameter descriptions do not reflect the literal names shown on the TS display. Refer to the parameter definitions in section 5 for that information.
| Byte | Parameter Description |
|---|---|
00 | Env1 Release Mod Amount |
01 | Env1 Attack Time |
02 | Env1 Peak Level |
03 | Env1 Decay Time 1 |
04 | Env1 Breakpoint 1 |
05 | Env1 Decay Time 2 |
06 | Envl Breakpoint 2 |
07 | Envl Decay Time 3 |
08 | Env1 Sustain Level |
09 | Envl Release Time |
10 | Env1 Level Velocity Sensitivity |
11 | Envi Attack Time Velocity Sensitivity |
12 | Envl Keyboard Tracking |
13 | Envl Mode (hi nybble) and Velocity Curve (lo nybble) |
14 | Env2 (same structure as Envelope 1) |
28 | Env3 (same structure as Envelope 1) | |
42 | Pitch Root Key |
43 | Pitch Fine Tune |
44 | Pitch Table |
45 | Pitch Env1 Modulation Amount |
46 | Pitch LFO Modulation Amount |
47 | Pitch Glide (hi nybble) and Pitch Modulation Source (lo nybble) |
48 | Pitch Modulation Amount |
49 | Glide Time |
50 | Bend Range |
51 | Filter 1 Cutoff |
52 | Filter 1 Keyboard Modulation Amount |
53 | Filter 1 Env2 Modulation Amount |
54 | Filter 1/2 Mode (hi nybble) and Filter 1 Modulation Source (lo nybble) |
55 | Filter 1 Modulation Amount |
56 | Filter 2 Cutoff |
57 | Filter 2 Keyboard Modulation Amount |
58 | Filter 2 Env2 Modulation Amount |
59 | Filter 2 Modulation Source |
60 | Filter 2 Modulation Amount |
61 | Volume Keyboard Scaling |
62 | Volume Fade Key Zone Low |
63 | Volume Fade Key Zone High |
64 | Volume |
65 | Pan Mod Source (hi nybble) and Volume Mod Source (lo nybble) |
66 | Volume Modulation Amount |
67 | Volume Timbre Modulation Offset |
68 | Pan |
69 | Pan Modulation Amount |
70 | Voice Priority (hi nybble) and Output Routing (lo nybble) |
71 | LFO Waveshape (hi nybble) and LFO Mod Source (lo nybble) |
72 | LFO Depth Mod Amount |
73 | LFO Depth |
74 | LFO Restart Mode (hi nybble) and LFO Speed Mod Source (lo nybble) |
75 | LFO Speed Modulation Amount |
76 | LFO Speed |
77 | LFO Delay Time |
78 | LFO Phase |
79 | Waveform (WaveList Start) |
80 | Wave Class |
81 | Wave Direction (hi nybble) and Wave Mod Source (lo nybble) |
82 | Wave Mod Amount |
83 | Wave Start/Index (WaveList Loop Start) |
84 | Wave Shift (WaveList Loop End) |
85 | Wave Delay Time (word = 2 bytes) |
87 | Noise Source Rate |
88 | Mixer Curve (hi nybble) and Mixer Mod Source 1 (lo nybble) |
89 | Mixer Scaler (hi nybble) and Mixer Mod Source 2 (lo nybble) |
90 | Lo Velocity Threshold |
91 | Hi Velocity Threshold |
(end of Voice 1 structure)
| Byte | Parameter Description |
|---|---|
92 | Voice 2 (same structure as Voice 1) |
184 | Voice 3 (Same structure as Voice 1) |
276 | Voice4 (same structure as Voice 1) |
368 | Voice5 (same as Voice 1 or program option data, if enabled) |
460 | Voice6 (same as Voice 1 or program option data, if enabled) |
552 | Program Name - (11 bytes or characters) |
563 | Program Patch 1 (lo 6 bits) |
564 | Program Patch 2 (lo 6 bits) |
565 | Program Patch 3 (lo 6 bits) |
566 | Program Patch 4 (lo 6 bits) |
567 | Pressure Mode1 (hi nybble) and Program Option (lo nybble) |
568 | Program Category |
569 | Program Patch Select Mode1 (hi nybble) and Restrike (lo nybble) |
570 | Program Timbre1 |
571 | Program Release1 |
572 | Program Attack1 |
573 | Program Brightness1 |
574 | Program Rate1 |
575 | Program External Controller (XCTRL)1 |
576 | Program Effect Parameters 2 |
(end of Program structure)
Total size: 616 bytes
4.2 Preset Parameters
4.2.1 Preset Track Parameter Structure
The parameters from each of the three individual tracks of a Preset are stored as an array of variable size bit fields packed into 21 consecutive bytes.
| Byte | Bit Mask | Parameter Description |
|---|---|---|
| 0 | dddddddd | Detune (8 bits) |
| 1 | tttttttt | Transpose (8 bits) |
| 2 | Fmmmmmmm | Mix (7 bits); F =FX-CNTRL switch |
| 3 | Axxxxxxx | XCNTRL (7 bits); A = All Notes Off switch |
| 4 | Rkkkkkkk | Key Zone Low Key (7 bits); R = Reset Controllers switch |
| 5 | Skkkkkkk | Key Zone High Key (7 bits); S = Sustain switch |
| 6 | Mvvvvvvv | Vel.Range Low Key (7 bits); M = Mod Wheel switch |
| 7 | Pvvvvvvv | Vel.Range High Key (7 bits); P = Pitch Wheel switch |
| 8 | Pppppppp | MIDI Program number (7 bits); P = Prog Change! switch |
| 9 | Bbbbbbbb | MIDI Bank number (7 bits); B = Bank MSB switch |
| 10 | Pppppppp | Pan (7 bits); P = Pan Mode switch |
| 11 | Oaaaaaaa | Attack (7 bits); 0 = Sampled Sound number2 bit 0. |
| 12 | 1rrrrrrr | Release (7 bits); 1 = Sampled Sound number2 bit 1. |
| 13 | 2bbbbbbb | Brightness (7 bits); 2 = Sampled Sound number2 bit 2. |
| 14 | 3ttttttt | Timbre (7 bits); 3 = Sampled Sound number2 bit 3. |
| 15 | 4aaaaaaa | Rate (7 bits); 4 = Sampled Sound number2 bit 4. |
| 16 | vvvvCCCC | Vel. Sensitivity (4 bits); C = MIDI Channel (4 bits) |
| 17 | eeeeSSSS | Effect Bus (4 bits); S = MIDI Status (4 bits) |
| 18 | ppppPPPP | Pressure mode (4 bits); P = Patch Select (4 bits) |
| 19 | Sbbbbbbb | Track BankSet (7 bits); S = Sostenuto switch |
| 20 | pppppppp | Track Program (8 bits) |
4.2.2 Preset Dump Structure
A complete preset dump is composed of three sets of packed track parameters (63 bytes), followed by a 3 byte track status array containing information about layering, an effect parameter block (40 bytes), a name (11 characters), and a spare byte for a total of 118 bytes.
| Byte Offset | Size | Description |
|---|---|---|
| 0 | 21 | Preset Track 0 parameters (see 4.2.1 above) |
| 21 | 21 | Preset Track 1 parameters (see 4.2.1 above) |
| 42 | 21 | Preset Track 2 parameters (see 4.2.1 above) |
| 63 | 3 | Preset Track status array (see note 3 in 4.2.1 above) |
| 66 | 40 | Preset Effect parameters |
| 106 | 11 | Preset Name |
| 117 | 1 | spare (reserved for future use) |
4.3 Track Parameters
This message consists of specific track parameters from the 12 tracks, the track status array, and an effect definition.
| Byte Offset | Parameter Name |
|---|---|
| 0 | Track 1 Bank Set number |
| 1 | Track 1 Program number |
| 2 | Track 1 Surrogate Bank Set number |
| 3 | Track 1 Surrogate Program number |
| 4 | Track 1 XCTRL |
| 6 | Track 1 Timbre |
| 8 | Track | Brightness |
| 10 | Track 1 Release |
| 12 | Track 1 Attack |
| 14 | Track 1 Rate (LFO/Wave-List) |
| 16 | Track 1 (Reserved) |
| 18 | Track 1 Mix |
| 20 | Track 1 Pan |
| 22 | Track 1 Effect Bus override |
| 23 | Track 1 Patch Select override |
| 24 | Track 1 Enables (byte 1) |
| 25 | Track 1 Enables (byte 2) |
| 26 | Track 1 MIDI Bank Select |
| 27 | Track 1 MIDI Program number |
| 28 | Track 1 MIDI Channel |
| 29 | Track 1 MIDI Pressure type (off,mono,poly) |
| 30 | Track 1 MIDI Status |
| 31 | Track 1 MIDI Status bit array |
| 32 | Track 1 Key Zone low key |
| 33 | Track 1 Transpose |
| 34 | Track 1 Key Zone high key |
| 35 | Track 1 Velocity Range lower limit |
| 36 | Track 1 Velocity Range upper limit |
| 37 | Track 1 Velocity Sensitivity |
| 38 | Track 1 Detune |
| 39 | Track 1 Pedal Mode |
| 40 | Track 1 Sampled Sound number |
(end of Track 1 structure)
| Byte Offset | Paramter Name |
|---|---|
| 41 | Track 2 parameters (same structure as Track 1) |
| 82 | Track 3 parameters (same structure as Track 1) |
| 123 | Track 4 parameters (same structure as Track 1) |
| 164 | Track 5 parameters (same structure as Track 1) |
| 205 | Track 6 parameters (same structure as Track 1) |
| 246 | Track 7 parameters (same structure as Track 1) |
| 287 | Track 8 parameters (same structure as Track 1) |
| 328 | Track 9 parameters (same structure as Track 1) |
| 369 | Track 10 parameters (same structure as Track 1) |
| 410 | Track 11 parameters (same structure as Track 1) |
| 451 | Track 12 parameters (same structure as Track 1) |
| 492 | Seq/Song Track status array (see note 3 in 4.2.1 above) |
| 504 | Tracks Effect Parameters |
4.4 Single Sequence Dump Parameters
This message consists of the data from one sequence and the sequence header.
| Byte Offset | Parameter Name |
|---|---|
| 0 | Sequence Data |
| n | Sequence Header |
4.5 All Sequence Dump Parameters
This message consists of the data for all of the defined sequences and songs, 60 sequence and song headers, and the global sequencer parameters.
Byte Offset Parameter Name
| Byte Offset | Parameter Name |
|---|---|
| 0 | Sequence Data Offsets - A table of 60 long word offsets (one for each sequence/song), with each entry containing the relative offset of the corresponding sequence/song data block from the beginning of the sequencer data block. |
| 239 | Sequence Data |
| n | Sequence Header Segment |
| n+header_size | Global Parameters |
In an unexpanded system, the Sequence Data segment can contain a maximum of 131,072 bytes. In an expanded system (with SQX-70), the maximum is 393,216 bytes. The individual Sequence Header size is 338 bytes. The complete Sequence Header Segment is 20,408 bytes, which includes 60 headers, a table of pointers and some additional overhead. The Global Parameters segment is 38 bytes. Remember that all of this data is transmitted via MIDI as nybblized bytes, so the actual number of bytes transmitted is twice as large for each component of the dump. The size of the largest dump for an unexpanded TS in actual transmitted MIDI bytes may be calculated as follows:
| Component | Actual Size (bytes) | Nybblized Size |
|---|---|---|
| SysEx Header | 6 | |
| Data Pointer Table | 480 | 240 nybblized |
| Sequence Data | 262,144 | 131,072 nybblized |
| Sequence Headers | 40,816 | 20,408 nybblized |
| Global Parameters | 76 | 38 nybblized |
| End of Exclusive Length | 1 |
Total Number of bytes sent: 303,543
This implies that an expanded system would have a maximum dump size that was larger by twice the difference in the Sequence Data segment size (i.e. two times 393,216 - 131,072 or 524,288 bytes). Therefore, the largest dump size for a fully expanded system would be a total of 827,811 MIDI bytes (or 1617 blocks).