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
0bank 026Wave
1bank 127Pitch
2bank 228Pitch Mod
3bank 329Filters
4bank 430Output
5bank 531LF eee
6bank 632Envl
7bank 733Env2
8bank 834Env3
9bank 935Effects (Programming)
10BankSet39Select Voice
11Sounds40Copy
12Presets41Write
13Storage42Compare
14up arrow, INC 243Mix/Pan
15down arrow, DEC 44 Attack/Release44Attack/Release
16soft key 0, top left45Brightness/Timbre
17soft key 1, top middle46Key Zone
18soft key 2, top right47Tuning
19soft key 3, bottom left48Controller Enables
20soft key 4, bottom middle49Performance Options
21soft key 5, bottom right50Track MIDI
22System31Track Effects
23MIDI Control52Tracks 1..6
24Program Control53Tracks 7..12
25Mod Mixer55Replace Track Program

TS — sequencer specific button numbers:

Logical
Number
Front Panel
Button Name
Logical
Number
Front Panel
Button Name
36Seq Control57Edit Seq
37Click58Edit Track
38Locate61Record
54Sequence Bank Select62Play
56Edit Song63Stop

TS – Footswitch simulation button numbers:

Logical
Number
Front Panel
Button Name
Logical
Number
Front Panel
Button Name
59Footswitch 160Footswitch 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.

0000000101Command Type
00000vvv0vVoice Number, [0..5]
0ppppppp0pParameter Page Number, [0..127]
00000sss0sParameter Slot Number, [0..5]
iiiiiiiiiiMulti Param Index, [0..n or 255 if void]
HHHHLLLLHLAbsolute Value Hi Byte, [0..255]
hhhhllllhlAbsolute Value Lo Byte, [0..255]

Parameter Page Numbers are as follows:

0..3System pages
4..6MIDI Control pages
7..9Program Control pages
10..35Program Voice parameter pages
36..45Program Effect parameter pages
46..99undefined
100..109Select Voice and Option Edit pages
110..255undefined

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.

100Select Voice page
101Select Voice page with Pitch-Table program option active
102Select Voice page with Wave-List program option active
103Select Voice page with Drum-Map program option active
104Pitch-Table Editor page - -
105Pitch-Table Calculator page
106Wave-List Editor page
107Wave-List Pitch editor page
108Wave-List Time editor page
109Drum-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.

000010110BCommand Type
HHHHHHHHHHSequence Data Size in bytes Hi Byte Hi Word
hhhhhhhhhhSequence Data Size in bytes Lo Byte Hi Word
LLLLLLLLLLSequence Data Size in bytes Hi Byte Lo Word
llllllllllSequence 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.

000011000CCommand Type
HHHHHHHHHHSequence Data Size in bytes Hi Byte Hi Word
hhhhhhhhhhSequence Data Size in bytes Lo Byte Hi Word
LLLLLLLLLLSequence Data Size in bytes Hi Byte Lo Word
llllllllllSequence 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

CodeNameMeaning
00NAKThe preceding command message could not be processed. The receiver is busy or the message is unintelligible. The preceding dump command is not acceptable.
01INVALID PARAMETER NUMBERThe parameter voice, page, or slot in the preceding
02INVALID PARAMETER VALUEThe parameter value in the preceding parameter
03INVALID BUTTON NUMBERThe button number in the preceding virtual button message doesn't correspond to any real button
04ACKThe 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.