Oberheim Matrix 6 / 6R V 2.0 (6 Voice Synthesizer) System Exclusive The M-6 uses System Exclusive messages to send patches from one unit to another and to allow one M-6 to be the "front panel" for another when editing patches and setting parameters. This section describes the system exclusive message functions and formats. General Format All system exclusive messages generated and recognized by the M-6 have the same general structure. This structure consists of three parts: a Lead-In, which starts and identifies the system exclusive sequence, an operation, which contains an opcode and data bytes, and an End of Exclusive status byte. There can only be one operation in the system exclusive message. There are two valid formats of the lead in sequence. One is specific to the Matrix-6 and Matrix-6R and is a "general" message addressable to any device. They differ only in the device ID (06H for the M-6, 7FH for General). Unless otherwise noted, the M-6 will recognize system exclusive messages sent with either lead-in, and will always generate the M-6 specific format on transmission. The format of an entire system exclusive message is: F0H System Exclusive byte 10H Oberheim code dd Device ID, 06H for M-6 specific format. 7FH for general format Opcodes are always in the range 0 through 127. inclusive. The number of date bytes is defined by the . The data bytes are always in the range 0 through 7FH. F7H End of System Exclusive (EOX) While the M-6 always generates an EOX byte to end its system exclusive transmission, it will recognize any status message except real-time messages as ending a received system exclusive message. Any system exclusive message which contains a manufacturer ID other than 10H or a device ID other than 06H or 7FH, or an illegal opcode is ignored. In addition, the Matrix-6 will always wait 20 mSec after sending an EOX byte before sending any other data. Conversely system exclusive data send to the Me - particularly patch dumps - should be separated by at least 20 mSec. The individual operations are described on the next page. --- Patch Transmission See Source The M-6 can both send and receive patches, split patches, and master parameters via MIDI. Patch transmission can be triggered from the front panel or via a MIDI request for a patch dump. The M-6 can also be requested to send all of its single patches, splits and master parameters at once. The operations are: Request Patch Dump This message is used by an external device to request the M6 dump one or all of its patches via MIDI. This is usually used in a Closed loop. MIDI configuration: the MIDI Out of the M-6 goes to the MIDI In of the other device, and the MIDI Out of the other device goes to the MIDI In of the M-6. The format of a Request Patch Dump operation is: Byte Function 04H Opcode xx Code indicating what to transmit: 0: Transmit all single patches, splits, and master parameters 1: Transmit a single patch 2: Transmit a split patch 3: Transmit master parameters pp Patch number to transmit, in range 0 through 99 for single patches, 0 through 49 for splits. This byte is ignored for Transmit Master Parameters and Transmit All requests, but must be included to pad out the fixed-length message. When a DUMP ALL command is received (Code 0), the M-6 will dump all of its internal data as separate patches, splits and master parameter blocks. This means that each patch in the stream will have its own system exclusive header and EOX command. If it is desired to transfer this data to a remote data storage device, the user should be required to tell the device when the transfer is done (> 1 second after the "10 SEND ALL" message reappears on the M-6's display) or the device should assume more data will be incoming until a timeout of > 500 mSec with no further incoming data has occurred. The total number of bytes transmitted in response to the dump all command is approximately 29 Kbytes including headers, checksums and EOX marks. It should be noted that all data (excluding headers, checksums and EOX marks) is transmitted nibblewise so judicious use of space could store all the transmitted data in as little as 15 Kbytes. Note that for downward compatibility with version 1.xx, a single patch can also be requested by the sequence F0, 10, 06, 00, pp. F7 where pp is the requested single patch number in the range 0 to 99. SINGLE PATCH DATA This message contains the actual single patch data. The opcode is followed by a stream of data bytes containing the patch information. When more than one patch is being transmitted at a time (in a "send all" operation), each patch is send as a separate system exclusive message. The form of a single patch dump operation is: Byte Function 01H Opcode pp Single patch number from 0 through 99. xx yy Patch or parameter data. Each byte is sent nibble-by-nibble, as follows: Each byte in the (eight bit) patch data to be transmitted in sent as two bytes. The first sent byte, in its least significant four bits, contains the least Significant four bits of the original byte; the second sent byte, also in its least significant four bits, contain the most significant four Format for the exact format of this data. cc CheckSum. The transmitted (not original) data is summed in seven bits ignoring overflows, and the result is put here. If this checksum does not match that calculated while reading the sent patch in, the patch is ignored. When the M-6 receives a patch data message via MIDI, it checks to see that hardware protect is not on, and the patch whose number is in the message is not protected. It then replaces the patch in M-6 patch storage with the patch received. Split Patch Data This message contains the actual split patch data. The opcode is followed by a stream of data bytes containing the patch information. The form of a single patch dump operation is: Byte Function O2H Opcode pp Split patch number from 0 through 49. xx yy Patch data. Each byte is send nibble-by nibble, as above. cc Checksum. Master Parameter Data This message contains the actual master parameter data. The opcode is followed by a stream of data bytes containing the parameter information. The form of a master parameter dump operation is: Byte Function 03H Opcode xx..yy Parameter data. Each byte is sent nibble-by nibble, as Above. cc CheckSum Remote Editing The M-6 has a set of system exclusive messages which can be used to edit patch parameters via MIDI. This is an alternative to transmitting the entire patch in its edited form. The primary differences are that this editing operation can be performed much more quickly than retransmitting the entire patch, and any currently gated sounds will continue playing through the remote edit operation. This makes it possible to hear a sound change under remote control without regating the sound after each update. The remote editing system exclusive messages are: Select Quick Patch Edit This operation selects the Quick mode of the Patch Edit function on the M-6. The M-6 must be in this mode to act upon parameter change commands. This command should be used as a prefix to any remote editing commands. The select Quick Patch Edit operation has the format: Byte Function 05H Opcode Change Parameter This operation changes the value of the specified parameter. If the value specified is out of range for the parameter, the operation is ignored. This operation implicitly selects the specified parameter as the current parameter, just as does the Select Parameter operation. The M-6 must be in quick patch edit mode to perform this operation: Byte Function 06H Opcode pp Parameter number to change: must be in range 0 through 99, and specify a parameter in the current page. vv New parameter value.; must be within correct range or current parameter. Remote Mode Change For compatibility with the Oberheim Xk, Matrix-12 and Xpander, the following codes are recognized, though they can not be generated: Select Single Patch Mode Byte Function F0H Start of System Exclusive 10H Oberheim Mfg ID 02H Xpander Product Code 0DH Switch Program Mode Opcode 01H Select Single Patch Mode F7H End of System Exclusive Select Split Mode Byte Function F0H Start of System Exclusive 10H Oberheim Mfg ID 02H Xpander Product Code 01H Switch Program Mode Opcode 02H Select Multi-Patch (Split) Mode F7H End of System Exclusive Parameters For any system exclusive messages to be generated or recognized, the parameter M04 SYSTEM EXCLUSIVE must be ON. the master page parameter M10 SEND DATA is used to send a single patch, split patch, or the master parameter set via MIDI to another device. If the MA is in single patch mode, M10 SEND DATA sends the currently selected single patch. If the MA is in split patch mode, M10 SEND DATA sends the currently selected split patch. The parameter M11 SEND ALL sends all of the M-6's 10 single patches, 50 split patches, and master parameter set to another device. A SEND ALL operation takes about 12 seconds to complete. DevicelD=06H: Matrix-6 Opcode Byte Description 00H Single Patch Request (Rev Only) 0ppppppp Patch Number (0-99) 01H Single Patch Data 0ppppppp Patch Number (0-99) See 'Single Patch Data Format" 0ccccccc Checksum 02H Split Patch Data 00pppppp Split Number (0-49) See Split Patch Data Format" 0ccccccc Checksum 03H Master Parameter Data See Global Parameters Data Format" 0ccccccc Checksum 04H General Data Request (Rev Only) 000000xx Code For Request Type 0 = Transmit all single patches, splits and master parameters 1 = Transmit a single patch 2 = Transmit a split patch 3 = Transmit Master Parameters 0ppppppp Patch Number to Transmit 0 - 99 for single patches 0 - 49 for split patches 0 for master parameters 05H Enter Remote Edit Mode (Rev Only) 06H Change Parameter (Rev Only) 0ppppppp Parameter to change 0vvvvvvv New Value Device ID = 02H : Xpander (Compatible with Matrix-12, Xk) Opcode Byte Description 0DH Mode Change (Rev Only) 02H Multi Patch Mode (Split Mode) 0DH Mode Change (Rev Only) 01H Single Patch Mode Single Patch Data Format Statistics: 134 Bytes/Single Patch = 268 Nibbles Transmitted + 4 Bytes Header + 1 byte checksum + 1 byte EOX = 274 Total Transmitted Bytes/Single Patch Byte Parm #Bits Description 0-7 6 each Patch Name Each character is represented by the lower 6 bits of it's ASCII representation. 8 48 2 Keyboard Mode 0 = Rotate 1 = Reassign 2 = Unison 3 = Reassign w/Rob 9 00 6 DCO 1 Initial Frequency LSB= 1 Semitone 10 05 6 DCO 1 Initial Waveshape 0 = Sawtooth, 31 = Triangle 11 03 6 DCO 1 Initial Pulse Width 12 07 2 DCO 1 Fixed Modulations Bit 0 - Lever 1 Bit 1 = Vibrato 13 06 2 DCO 1 Waveform Enable Bit 0 = Pulse Bit 1 = Wave 14 10 6 DCO 2 Initial Frequency LSB= 1 Semitone 15 15 6 DCO 2 Initial Waveshape 0 = Sawtooth, 31 = Triangle 16 13 6 DCO 2 Initial Pulse Width 17 17 2 DCO 2 Fixed Modulations Bit 0 = Lever 1 Bit 1 = Vibrato 18 16 3 DCO 1 Waveform Enable Bit 0 = Pulse Bit 1 = Wave Bit 2 = Noise 19 12 6(signed) DCO 2 Detune 20 20 6 Mix 21 08 2 DCO 1 Fixed Modulations Bit 0 = Portamento Bit 1 = Not used 22 09 DCO 1 Click 23 18 2 DCO 2 Fixed Modulations Bit 0 = Portamento Bit 1 = Keyboard Tracking Enable 24 19 1 DCO 2 Click 25 02 2 DCO Sync Mode 26 21 7 VCF Initial Frequency LSB= 1 Semitone 27 24 6 VCF Initial Resonance 28 25 2 VCF Fixed Modulations Bit 0 = Lever 1 Bit 1 = Vibrato Byte Parm #Bits Description 29 26 2 VCF Keyboard Modulation Bit 0 = Portamento Bit 1 = Keyboard 30 30 6 VCF FM Initial Amount 31 27 6 VCA 1 (Exponential) Initial Amount 32 44 6 Portamento Initial Rate 33 46 2 Lag Mode 0 = Constant Speed 1 = Constant Time 2 = Exponential 3 = Exponential 34 47 1 Legato Portamento Enable 35 80 6 LFO 1 Initial Speed 36 86 2 LFO Trigger 0 = No Trigger 1 = Single Trigger 2 = Multi Trigger 3 = External Trigger 37 87 1 LFO 1 Lag Enable 38 82 3 LFO1 Waveshape (see Table 1 below) 39 83 5 LFO 1 Retrigger point 40 88 5 LFO 1 Sampled Source Number 41 84 6 LFO lnitial Amplitude 42 90 6 LFO 2 Initial Speed 43 96 2 LFO 2 Trigger See LFO 1 Triggers above 44 97 1 LFO2 Lag Enable 45 92 3 LFO2Waveshape (see Table 1 below) 46 93 5 LFO 2 Retrigger point 47 98 5 LFO 2 Initial Amplitude 49 57 3 Env Trigger Mode Bit 0 = Reset Bit 1 = Multi Trigger Bit 2 = Extemal Trigger 50 50 6 Env1 Initial Delay Time 51 51 6 Env1 Initial Attack Time 52 52 6 Env 1 Initial Decay Time 53 53 6 Env 1 Sustain Level 54 54 6 Env 1 Initial Release Time 55 55 6 Env 1 Initial Amplitude 56 59 2 Env 1 LFO Trigger Mode Bit 0 = Gated Bit 1 =LFO Trigger 57 58 2 Env 1 Mode Bit 0 = DADR Mode Bit 1 = Free Run 58 67 3 Env 2 Trigger Mode See Env 1 Trigger Mode Above 59 60 6 Env 2 Initial Delay Time 60 61 6 Env 2 Initial Attack Rime 61 62 6 Env 2 Initial Decay Time 62 63 6 Env2 Sustain Level 63 64 6 Env 2 Initial Release Time 64 65 6 Env 2 Initial Amplitude 65 69 2 Env 2 LFO Trigger Mode See Env 1 LFO Trigger Mode above Byte Parm #Bits Description 66 68 2 Env 2 Mode See Env 1 Mode Above 67 77 3 Env 3 Trigger Mode See Env 1 Trigger Mode Above 68 70 6 Env 3 Initial Delay Time 69 71 6 Env 3 Initial Attack Time 70 72 6 Env 3 Initial Decay Time 71 73 6 Env 3 Sustain Level 72 74 6 Env 3 Initial Release Time 73 75 6 Env 3 Initial Amplitude 74 79 2 Env3 LFO Trigger Mode See Env 1 LF0 Trigger Mode above 75 78 2 Env3 Mode See Env 1 Mode above 76 33 5 Tracking Generator lnput Source Code See Table 2 Below 77 34 6 Tracking Point 1 78 35 6 Tracking Point 2 79 36 6 Tracking Point 3 80 37 6 Tracking Point 4 81 38 6 Tracking Points 82 40 6 Ramp 1 Rate 83 41 2 Ramp 1 Mode 0 = Single Trigger 1 = Multi Trigger 2 = External Trigger 3 = External Gated 84 42 6 Ramp 2 Rate 85 43 2 Ramp 2 Mode See ramp 1 mode above" 86 01 7 (Signed) DCO 1 Freq. by LFO 1 Amount 87 04 7 (Signed) DCO 1 PW by LFO 2 Amount 88 11 7 (Signed) DCO 2 Freq. by LFO 1 Amount 89 14 7 (Signed) DCO 2 PW by LFO 2 Amount 90 22 7 (Signed) VCF Freq. by Env 1 Amount 91 23 7 (Signed) VCF Freq. by Pressure Amount 92 28 7 (Signed) VCA 1 by Velocity Amount 93 29 7 (Signed) VCA 2 by Env 2 Amount 94 56 7 (Signed) Env 1 Amplitude by Velocity Amount 95 66 7 (Signed) Env 2 Amplitude by Velocity Amount 96 76 7 (Signed) Env 3 Amplitude by Velocity Amount 97 85 7 (Signed) LFO 1 Amp. by Ramp 1 Amount 98 95 7 (Signed) LFO 2 Amp. by Ramp 2 Amount 99 45 7 (Signed) Portamento Rate by Velocity Amount 100 31 7 (Signed) VCF FM Amount by Env3 Amount 101 32 7 (Signed) VCF FM Amount by Pressure Amount 102 81 7 (Signed) LFO 1 Speed by Pressure Amount 103 91 7 (Signed) LFO 2 Speed by Keyboard Amount 104 5 Matrix Modulations Bus 0 Source Code (see tbl 2) 105 7 (Signed) MM Bus 0 Amount 106 5 MM Bus 0 Destination code (see table 3) 107 5 Matrix Modulations Bus Source Code (see tbl 2) 108 7 (Signed) MM Bus 1 Amount 109 5 MM Bus 1 Destination code (see table 3) 110 5 Matrix Modulation Bus 2 Source Code (see tbl 2) 111 7 (Signed) MM Bus 2 Amount Byte Parm #Bits Description 112 5 MM Bus 2 Destination code (see table 3) 113 5 Matrix Modulation Bus 3 Source Code (see tbl 2) 114 7 (Signed) MM Bus 3 Amount 115 5 MM Bus 3 Destination code (see table 3) 116 5 Matrix Modulation Bus 4 Source Code (see tbl 2) 117 7 (Signed) MM Bus 4 Amount 118 5 MM Bus 4 Destination code (see table 3) 119 5 Matrix Modulation Bus 5 Source Code (see tbl 2) 120 7 (Signed) MM Bus 5 Amount 121 5 MM Bus 5 Destination code (see table 3) 122 5 Matrix Modulation Bus 6 Source Code (see tbl 2) 123 7 (Signed) MM Bus 6 Amount 124 5 MM Bus 6 Destination code (see table 3) 125 5 Matrix Modulation Bus 7 Source Code (see tbl 2) 126 7 (Signed) MM Bus 7 Amount 127 5 MM Bus 7 Destination Code (see table 3) 128 5 Matrix Modulation Bus 8 Source Code (see tbl 2) 129 7 (Signed) MM Bus 8 Amount 130 5 MM Bus 8 Destination Code (see table 3) 131 5 Matrix Modulation Bus 9 Source Code (see tbl 2) 132 7 (Signed) MM Bus 9 Amount 133 5 MM Bus 9 Destination code (see table 3) Split Patch Data Format Statistics: 18 Bytes / split patch = 36 Nibbles Transmitted + 4 bytes header + 1 byte EOX = 41 Total Transmitted Bytes/Split Patch Byte Parm # Bits Description 0 - 5 6 Each Split Name Each character is represented by the lower 6 bits of it's ASCII representation 6 6 Not Used 7 6 Not Used 8 7 Lower Patch Number 9 7 Upper Patch Number 10 0 7 Left Zone Limit 11 1 6 (Signed) Left Zone Transpose 12 2 1 Left Zone MIDI Out Enable 13 3 7 Right Zone Limit 14 4 6 (Signed) Right Zone Transpose 15 5 1 Right Zone MIDI Out Enable 16 6 6 (Signed) Left/Right Balance -31 = Left only +31 = Right only 17 7 2 Voice Configuration 0 = 2/4 1 = 4/2 2 = 6/0 3 = 0/6 Global Parameters Data Format Statistics: 236 Bytes/Global Parameters = 472 Nibbles Transmitted + 4 Bytes Split Patch + 1 byte EOX = 477 Total Transmitted Bytes/Global Parameters Byte Parm #Bits Description 0 Not Used 1 30 6 Vibrato Speed 2 31 3 Vibrato Waveform 3 32 6 Vibrato Amplitude 4 33 2 Vibrato Speed Mod Source Code 5 34 6 Vibrato Speed Modulation Amount 6 35 2 Vibrato Amp Mod Source Code 7 36 6 Vibrato Amp Modulation Amount 8 55 6 (Signed) Master Tune 9 40 2 Velocity Scale Type 10 41 6 Velocity Sensitivity 11 00 4 MIDI Basic Channel 12 01 1 MIDI OMNI Mode Enable 13 02 1 MIDI Controllers Enable 14 03 1 MIDI Patch Changes Enable 15 04 1 MIDI SysX Enable 16 05 1 MIDI Local Control Enable 17 06 7 MIDI Pedal 1 Controller 18 07 7 MIDI Pedal 2 Controller 19 08 7 MIDI Lever 2 Controller 20 09 7 MIDI Lever 3 Controller 21 42 1 Pedal 2 invert Enable 22 43 1 Levers Invert Enable 23 53 5 Display Brightness 24 56 1 SQUICK Enable 25 17 1 Patch Map Echo Enable 26 57 1 Stereo Output Enable 27 Not Used 28 44 6 Pressure Standoff 29 13 1 Spillover Enable 30 Not Used 31 14 1 MlDI Active Sensing Enable 32 12 1 MIDI Echo Enable 33 15 1 Patch 34 Not Used 35 18 1 MIDI Mono Mode Enable 36-135 6 each Input Patch Map 136-235 6 each Output Patch Map