TS-10 | TS-12 · MIDI SysEx Implementation Specification V.2.0
Commands, errors, and bulk dumps
3 Message Type List
The next few sections describe the messages to be used between EXT and TS. The message type corresponds to the last byte of the system exclusive packet head described in section 2.1.
3.1 Command Messages (Message Type = 00)
Messages which need some interpretation by the receiver are called command messages. Every command message Is transmitted using the message format described in section 2.3. The first byte of each command message is the command type, which follows the message type byte in the packet head. The command type is shown in the section headings.
3.1.1 Virtual Buttons (Command Type = 00)
EXT can simulate button presses from the front panel of the TS by sending this command. Sending the listed button numbers in a command will simulate a single button down being held down. Button up commands add an offset of 96 to the the button down numbers. The button number follows the command type byte in the message. Remember to send a button up command for every button down command that is sent.
3.1.1.1 Button Numbers
| Logical Number |
Front Panel Button Name |
Logical Number |
Front Panel Button Name |
|---|---|---|---|
| 0 | bank 0 | 26 | Wave |
| 1 | bank 1 | 27 | Pitch |
| 2 | bank 2 | 28 | Pitch Mod |
| 3 | bank 3 | 29 | Filters |
| 4 | bank 4 | 30 | Output |
| 5 | bank 5 | 31 | LF eee |
| 6 | bank 6 | 32 | Envl |
| 7 | bank 7 | 33 | Env2 |
| 8 | bank 8 | 34 | Env3 |
| 9 | bank 9 | 35 | Effects (Programming) |
| 10 | BankSet | 39 | Select Voice |
| 11 | Sounds | 40 | Copy |
| 12 | Presets | 41 | Write |
| 13 | Storage | 42 | Compare |
| 14 | up arrow, INC 2 | 43 | Mix/Pan |
| 15 | down arrow, DEC 44 Attack/Release | 44 | Attack/Release |
| 16 | soft key 0, top left | 45 | Brightness/Timbre |
| 17 | soft key 1, top middle | 46 | Key Zone |
| 18 | soft key 2, top right | 47 | Tuning |
| 19 | soft key 3, bottom left | 48 | Controller Enables |
| 20 | soft key 4, bottom middle | 49 | Performance Options |
| 21 | soft key 5, bottom right | 50 | Track MIDI |
| 22 | System | 31 | Track Effects |
| 23 | MIDI Control | 52 | Tracks 1..6 |
| 24 | Program Control | 53 | Tracks 7..12 |
| 25 | Mod Mixer | 55 | Replace Track Program |
| Logical Number |
Front Panel Button Name |
Logical Number |
Front Panel Button Name |
|---|---|---|---|
| 36 | Seq Control | 57 | Edit Seq |
| 37 | Click | 58 | Edit Track |
| 38 | Locate | 61 | Record |
| 54 | Sequence Bank Select | 62 | Play |
| 56 | Edit Song | 63 | Stop |
| Logical Number |
Front Panel Button Name |
Logical Number |
Front Panel Button Name |
|---|---|---|---|
| 59 | Footswitch 1 | 60 | Footswitch 2 |
3.1.2 Parameter Change (Command Type = 01)
Single parameters can be edited on the TS by EXT using this command. Since this is a short message relative to the much longer bulk dump of a complete program, program editors running on EXT can change single parameters by using this command faster than by sending a complete program dump when only one or a few parameters change.
This message is transmitted by the TS when parameters are edited if SYS-EX=ON and SEND-PARAMS=ON on the MIDI Control page.
Absolute parameter values depend on the parameter page and slot numbers which uniquely define each parameter. Slot numbers are equivalent to soft button numbers numbered clockwise from upper left 0 to 5. See section 5 of this document for the parameter definitions. Most parameter values are contained in the low byte of the absolute value word, but some parameter types, including key range and word types, use the whole word. Remember — these bytes are transmitted as nybbles.
00000001 | 01 | Command Type |
00000vvv | 0v | Voice Number, [0..5] |
0ppppppp | 0p | Parameter Page Number, [0..127] |
00000sss | 0s | Parameter Slot Number, [0..5] |
iiiiiiii | ii | Multi Param Index, [0..n or 255 if void] |
HHHHLLLL | HL | Absolute Value Hi Byte, [0..255] |
hhhhllll | hl | Absolute Value Lo Byte, [0..255] |
Parameter Page Numbers are as follows:
| 0..3 | System pages |
| 4..6 | MIDI Control pages |
| 7..9 | Program Control pages |
| 10..35 | Program Voice parameter pages |
| 36..45 | Program Effect parameter pages |
| 46..99 | undefined |
| 100..109 | Select Voice and Option Edit pages |
| 110..255 | undefined |
Parameter Page Numbers 100..109 are used for the Select Voice page and all of its related pages. For each of the program options there is a variant of the select voice page and one or more edit pages. Page number values above 109 will cause an error message to be returned and will be ignored by the TS.
| 100 | Select Voice page |
| 101 | Select Voice page with Pitch-Table program option active |
| 102 | Select Voice page with Wave-List program option active |
| 103 | Select Voice page with Drum-Map program option active |
| 104 | Pitch-Table Editor page - - |
| 105 | Pitch-Table Calculator page |
| 106 | Wave-List Editor page |
| 107 | Wave-List Pitch editor page |
| 108 | Wave-List Time editor page |
| 109 | Drum-Map Editor page |
Refer to Section 5 for parameter definitions.
3.1.3 Edit Change Status (Command Type = 02)
This command is only transmitted by the TS; it is not received. It allows the external editor to retain synchronization with the compare buffer in the TS. The edit change status command is sent whenever an edit operation initiated from the front panel of the TS causes more than one parameter to change. The edit change status command will always be preceded by at least one parameter change message. Although the TS will send parameter change messages, it may not be able to send the new value of every parameter that changed, due to the complexities of internal editing. When EXT receives this message, it should request a complete program dump to re-establish editing sync. The command type is the only byte in this command.
3.1.4 Single Program Dump Request (Command Type = 03)
The TS will dump the current program using the bulk dump message described in section 4.1.1 when it receives this command. If the current program is being edited, the edited version of the program will be transmitted.
3.1.5 Single Preset Dump Request (Command Type = 04)
The TS will dump the current preset using the bulk dump message described in section 4.2.1 when it receives this command. If the current preset is being edited, the edited version of the preset will be transmitted.
3.1.6 Track Parameter Dump Request (Command Type = 05)
The TS will dump the track parameters using the bulk dump message described in section 4.3.1 when it receives this command.
3.1.7 Dump Everything Request (Command Type = 06)
The TS will dump the internal RAM program banks, the internal RAM preset banks, and the track parameters using the bulk dump messages described in section 4.3 when it receives this command. Each dump is a separate message, i.e. the messages are not combined into one.
3.1.8 Internal Program Bank Dump Request (Command Type = 07)
The TS will dump the internal RAM program banks using the bulk dump message described in section 4.1.2 when it receives this command.
3.1.9 Internal Preset Bank Dump Request (Command Type = 08)
The TS will dump the internal RAM preset banks using the bulk dump message described in section 4.2.2 when it receives this command.
Sequence Dump Protocol: Since the receiver of a sequence dump message must be prepared to store the sequence data, sequence dumps are performed using two messages from the transmitter and a handshaking message from the receiver. The transmitter sends the dump command which informs the receiver of the next message. The receiver should respond with an error message containing an ACK or NAK error code (see section 3.2.1). If the receiver does not respond within one second, the transmitter will send the dump message anyway. This timeout feature allows "dumb" System Exclusive recorders to store TS sequence data. If the receiver responds with a NAK error code, the transmitter should not send the dump message.
3.1.10 Single Sequence Dump (Command Type = 09)
This message is the first message of a sequence dump. The message contains the size of the sequence data which will follow in the single sequence dump message.
00001011 | 0B | Command Type |
HHHHHHHH | HH | Sequence Data Size in bytes Hi Byte Hi Word |
hhhhhhhh | hh | Sequence Data Size in bytes Lo Byte Hi Word |
LLLLLLLL | LL | Sequence Data Size in bytes Hi Byte Lo Word |
llllllll | ll | Sequence Data Size in bytes Lo Byte Lo Word |
3.1.11 All Sequence Memory Dump (Command Type = 10)
This message is the first message of a complete sequence memory dump. The message contains the size of the sequence data which will follow in the all sequence dump message.
00001100 | 0C | Command Type |
HHHHHHHH | HH | Sequence Data Size in bytes Hi Byte Hi Word |
hhhhhhhh | hh | Sequence Data Size in bytes Lo Byte Hi Word |
LLLLLLLL | LL | Sequence Data Size in bytes Hi Byte Lo Word |
llllllll | ll | Sequence Data Size in bytes Lo Byte Lo Word |
3.1.12 Single Sequence Dump Request (Command Type = 11)
The TS will dump the currently selected sequence using the bulk dump message described in section 5.1.1 when it receives this command, The command type is the only byte in this command.
3.1.13 All Sequence Dump Request (Command Type = 12)
The TS will dump all sequence memory using the bulk dump message described in section 3.1.11 when it receives this command. The command type is the only byte in this command.
3.2 Error Messages (Message Type = 01)
Error messages are transmitted by the TS when an error occurs while processing any of the command messages described in section 3.1. The TS ignores error messages unless a sequence dump is being processed.
3.2.1 Command Message Error Codes
These codes are the data byte of error messages.
Code Name Meaning
| Code | Name | Meaning |
|---|---|---|
00 | NAK | The preceding command message could not be processed. The receiver is busy or the message is unintelligible. The preceding dump command is not acceptable. |
01 | INVALID PARAMETER NUMBER | The parameter voice, page, or slot in the preceding |
02 | INVALID PARAMETER VALUE | The parameter value in the preceding parameter |
03 | INVALID BUTTON NUMBER | The button number in the preceding virtual button message doesn't correspond to any real button |
04 | ACK | The preceding dump command is acceptable. |
3.3 Bulk Dumps of Programs, Presets, Track Parameters, and Sequences
Bulk dump data messages are transmitted using the message format described in section 2.3. The message type byte, which is part of the system exclusive header, is given in hexadecimal with the name of the dump message. The actual data bytes for programs, presets, and sequences are described in section 4. The MIDI data byte lengths are listed in decimal for each message type, and represent the actual byte length doubled (to account for nybblization) plus the header, tail and any other message overhead.
3.3.1 One Program (Message Type = 03)
Number of actual data bytes: 616
MIDI message length: 1232 + head and tail = 1239
In response to a request, the current selected program is transmitted. If the compare buffer is active (the Compare LED is on), then the program in the compare buffer will be transmitted. If this message is received, the new program will be put into the compare buffer so it can be subsequently written to a User RAM program location. Remember that the compare buffer is over-written by the incoming data and its previous contents are lost. The parameter block structure is described in section 4.1.
3.3.2 Program BankSet (Message Type = 04)
Number of actual data bytes: 616*60 = 36960
MIDI message length = 73920 + BankSet number + head and tail = 73928
All 60 programs in the 10 program banks from either one of the 2 User RAM BankSets are contained in this message. The BankSet number which follows the header identifies the source/destination User RAM Bankset.
3.3.3 One Preset (Message Type = 05)
Number of actual data bytes: 118
MIDI message length: 236 + head and tail = 233
In response to a request, the currently selected preset is transmitted. If the preset edit buffer is active (*EDITED*), then the edited preset will be transmitted. If this message is received, the new preset will be put in the preset edit buffer so it can be subsequently written to any User RAM preset location. The parameter block structure is described in section 4.2.
3.3.4 Preset BankSet (Message Type = 06)
Number of actual data bytes = 118*60 = 7080
MIDI message length = 14160 + BankSet number + head and tail = 14168
All 60 presets in the 10 presets banks from either one of the 2 User RAM BankSets are contained in this message. The BankSet number which follows the header identifies the source/destination User RAM Bankset.
3.3.5 Single Sequence Dump (Message Type = 07)
MIDI message length = variable depending on amount of sequence data
This message is transmitted according to the sequence dump protocol described before section 3.1.12. It contains sequence data and track parameters.
3.3.6 All Sequence Dump (Message Type = 08)
MIDI message length = variable depending on amount of sequence data
This message is transmitted according to the sequence dump protocol described before section 3.1.12. It contains global sequence parameters, sequence data, and sequence track parameters.
3.3.7 Track Parameters (Message Type = 09)
Number of actual data bytes: 492 (41*12) + 12+40=544
MIDI message length: 1088 + head and tail = 1095
Track parameter data for 12 tracks (41 bytes each), the track status array (12 bytes), and the sequence/song effect parameters (40 bytes) are transmitted. The parameter block structure is described in section 4.3.