oberheim     matrix-1000

 

general info

midi spec

firmware notes

hardware notes

 

 

 

 

 

 

 

 

 

MIDI SUMMARY: RECOGNIZED MESSAGES (UPDATED)
NOTE: Changes/corrections/additions to the manual are
highlighted!

CHANNEL VOICE MESSAGES

Status Data Bytes Description
     
1000 xxxx 0nnn nnnn Note off
  0vvv vvvv (Release Velocity = 1-127)
     
1001 xxxx 0nnn nnnn Note on
  0vvv vvvv (Velocity= 1-127,0=Note off)
     
1011 xxxx 0ccc cccc Controller change
  0nnn nnnn Any controller 0-121 can be used; 7 bits only
     
1100 xxxx 0nnn nnnn Program select
     
1101 xxxx 0vvv vvvv   Channel pressure (receive only)                  
     
1110 xxxx 0000 000n Pitch bend (LSB)
  0nnn nnnn Pitch bend (MSB)

CHANNEL MODE MESSAGES

1011 xxxx 79H Reset all controllers
  00H  
     
1011 xxxx 7BH All notes off
  00H  
     
1011 xxxx 7CH OMNI mode off
  00H  
     
1011 xxxx 7DH OMNI mode on
  00H (OMNI mode is assumed off in MONO on)
     
1011 xxxx 7EH MONO mode on
  06H  
     
1011 xxxx 7FH MONO mode off
  00H  

SYSTEM COMMON MESSAGES

1111 0000 10H System Exclusive - Oberheim ID
  06H Matrix-6/6R/1000 Device ID
  <opcode>  
  <databytes>  
  0F7H End of System Exclusive
     
1111 0111 0F7H End of System Exclusive

SYSTEM REAL TIME MESSAGES

1111 1110 0FEH Active Sensing


MATRIX-1000 SYSTEM EXCLUSIVE DATA FORMAT :

All "data" in patch and parameter dumps is unpacked for transmission.
The general algorithm for transmission is:

1: Transmit header and messages code(s).
2: Clear checksum.
3. Fetch next data byte to be transmitted.
4: Add byte to checksum.
5: Transmit (data & 0FH).
6: Transmit (data/16 & 0FH).
7: Repeat 3-6 for all data bytes.
8: Transmit (checksum & 07FH).
9: Transmit F7H.



01H - Single Patch Data

F0H 10H 06H 01H <num> <patch data> <checksum> F7H

<num>      = destination patch number (0-99)
<data>     = patch data unpacked to two nibbles per byte
             see patch format listing
<checksum> = sum of packed (not transmitted) <data>


NOTE: On receipt, this data will be stored into the specified patch location
in the current bank. If this patch is currently selected in the M-100, the
newly stored sound will be recalled into the edit buffer.

NOTE: A gap of at least ten msec should be allowed between patches when sending
multiple patches to the M-1000.


02H - Split Patch Data (for Matrix-6 compatibility, transmit only!)

F0H 10H 06H 02H <num> <split data> <checksum> F7H

<num>      = split patch number (0-49)
<data>     = dummy split data (18 bytes) unpacked to two nibbles per byte
<checksum> = sum of packed <data>


03H - Master Parameter Data

F0H 10H 06H 03H <version> <data> <checksum> F7H

<version>  = 03H for M-1000
<data>     = master data unpacked to two nibbles per byte
             see master parameter format listing
<checksum> = checksum of packed <data>


04H - Request Data

F0H 10H 06H 04H <type> <number> F7H

<type>     = 0 to request all patches in current bank and master parameters.
           = 1 to request a single patch from the current bank
           = 3 to request master parameters
           = 4 to request edit buffer
<number>   = 0 when <type> = 0 or 3
           = Number of patch requested when <type> = 1

NOTE: When all patches are requested, 100 patches from the current bank are
transmitted in ascending order using individual Single Patch messages (code
01 above). This is followed by 50 dummy "split" patches for compatibility
with the "Request All" function of the Matrix-6. Each of these splits has
the form F0H 10H 06H 02H
<number> <36 bytes of data> <checksum> F7H. For
further information on this format, see the Matrix-6 MIDI Specification.
All patches are transmitted with ten msec between patches.


06H - Remote Parameter Edit

F0H 10H 06H 06H <parm> <val> F7H

<parm>     = Matrix-1000 parameter number (see patch format) 0-99
<val>      = the value to which that parameter should be set.

NOTE: All values are sign extended from bit 6 into bit 7 except for parameter
121 (VCF frequency). Range checking should be done on the value of each
parameter before it is sent.


07H - Set Group Mode (NOT IMPLEMENTED ON MATRIX-1000!!!)

F0H 10H 06H 07H <num> <ID> F7H

<num>      = Total number of units in group (2-6)
<ID>       = 0 to set yhe first unit to be the master
           = 1-5 to set the unit to be a slave.

NOTE: The value recieved for <ID> is used as the unit ID for certain SYSX
messages. It is also accessable from the front panel as extended function 5.

NOTE: On receipt of this message, the unit enters group mode with its unit
number set to <ID>. It then re-transmits this message with the ID incremented.



08H - Set Group Mode

F0H 10H 06H 08H <num> <ID> F7H

<num>      = Total number of units in group (2-6)
<ID>       = 0 to set yhe first unit to be the master
           = 1-5 to set the unit to be a slave.

NOTE: The value recieved for <ID> is used as the unit ID for certain SYSX
messages. It is also accessable from the front panel as extended function 5.

NOTE: On receipt of this message, the unit enters group mode with its unit
number set to <ID>. It then re-transmits this message with the ID incremented.


09H - Clear Group Mode

F0H 10H 06H 09H F7H

On receipt of this message, the unit exits group mode with its unit number set
to 0 and number of units set to 1. It then re-transmits this message.


0AH - Set Bank

F0H 10H 06H 0AH <bank> F7H

<bank>     = bank number to select(0-9).

On receipt of this message, the unit will change banks and enable the bank
lock.


0BH - Remote Parameter Edit

F0H 10H 06H 0BH <path> <source> <val> <dest> F7H

<path>     = Matrix Modulation path number (0-9).
<source>   = 0 to delete this path
           = 1-20 to specify modulation source (see table 2).
<val>      = Modulation amount
<dest>     = 0 to delete this path
           = 1-32 to specify modulation destination (table 3).

NOTE: The value is sign extended from bit 6 into bit 7. Range checking should
be done on all data before it is sent.


0CH - Unlock Bank

F0H 10H 06H 0CH F7H

On receipt of this message, Bank Lock will be disabled.


0DH - Single Patch Data to Edit Buffer

F0H 10H 06H 0DH 0 <patch data> <checksum> F7H

<data>     = patch data unpacked to two nibbles per byte
             see patch format listing
<checksum> = sum of packed (not transmitted) <data>

NOTE: On receipt, this data will be stored into the edit buffer.

NOTE: Wait at least ten msec after sending a patch to the Matrix-1000.


0EH - Store Edit Buffer

F0H 10H 06H 0EH <num> <bank> <ID> F7H

<num>      = patch number within bank (0-99).
<bank>     = bank number (0-9)
<ID>       = 0 if Group Mode is off
           = Unit ID for target M-1000 in Group Mode.
           = 7FH for any unit in Group Mode.
 
= 268 nybbles transmitted + 5 bytes Header + 1 byte



MATRIX-1000 SINGLE PATCH DATA FORMAT

Statistics: 134 Bytes/Single Patch
Checksum : + 1 byte EOX
= 275 total transmitted bytes/Single Patch

Byte Parameter #Bits Description
       
0-7   6 each Patch name. Each character is represented by the lower 6 bits of its ASCII representation.
8 48 2 Keyboard mode  0=Reassign  1=Rotate  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  Bit0=Lever 1  Bit1=Vibrato
13 06 2 DCO 1 Waveform Enable  Bit0=Pulse  Bit1=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  Bit0=Lever 1  Bit1=Vibrato
18 16 3 DCO 2 Waveform Enable  Bit0=Pulse  Bit1=Wave  Bit2=Noise
19 12 6(signed) DCO 2 Detune
20 20 6 Mix
21 08 2 DCO 1 Fixed Modulations  Bit0=Portamento  Bit1=Not used
22 09 1 DCO 1 Click
23 18 2 DCO 2 Fixed Modulations  Bit0=Portamento  Bit1=Keyboard Tracking enable
24 19 1 DCO 2 Click
25 02 2 DCO Sync mode  0=NO  1=SOFT  2=MEDIUM  3=HARD
       
26 21 7 VCF Initial Frequency  LSB= 1 Semitone
27 24 6 VCF Initial Resonance
28 25 2 VCF Fixed Modulations  Bit0=Lever 1  Bit1=Vibrato
29 26 2 VCF Keyboard Modulation  Bit0=Portamento  Bit1=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,3=Exponential
34 47 1 Legato Portamento Enable
       
35 80 6 LFO 1 Initial Speed
36 86 2 LFO 1 Trigger  0=No Trigger  1=Single Trigger  2=Multi Trigger  3=External Trigger
37 87 1 LFO 1 Lag Enable
38 82 3 LFO 1 Waveshape (see table 1)
39 83 5 LFO 1 Retrigger point
40 88 5 LFO 1 Sampled Source Number
41 84 6 LFO 1 Initial Amplitude
42 90 6 LFO 1 Initial Speed
       
43 96 2 LFO 2 Trigger  0=No Trigger  1=Single Trigger  2=Multi Trigger  3=External Trigger
44 97 1 LFO 2 Lag Enable
45 92 3 LFO 2 Waveshape (see table 1)
46 93 5 LFO 2 Retrigger point
47 98 5 LFO 2 Sampled Source Number
48 94 6 LFO 2 Initial Amplitude
       
49 57 3 Env 1 Trigger Mode  Bit0=Reset  Bit1=Multi Trigger  Bit2=External Trigger
50 50 6 Env 1 Initial Delay Time
51 51 6 Env 1 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  Bit0=Gated  Bit1=LFO Trigger
57 58 2 Env 1 Mode  Bit0=DADR Mode  Bit1=Freerun
       
58 67 3 Env 2 Trigger Mode  Bit0=Reset  Bit1=Multi Trigger  Bit2=External Trigger
59 60 6 Env 2 Initial Delay Time
60 61 6 Env 2 Initial Attack Time
61 62 6 Env 2 Initial Decay Time
62 63 6 Env 2 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  Bit0=Gated  Bit1=LFO Trigger
66 68 2 Env 2 Mode  Bit0=DADR Mode  Bit1=Freerun
       
67 77 3 Env 3 Trigger Mode  Bit0=Reset  Bit1=Multi Trigger  Bit2=External Trigger
68 70 6 Env 3 Initial Delay Time
69 69 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 Env 3 LFO Trigger Mode  Bit0=Gated  Bit1=LFO Trigger
75 78 2 Env 3 Mode  Bit0=DADR Mode  Bit1=Freerun
       
76 33 5 Tracking Generator Input Source Code (See Table 2)
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 Point 5
       
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  0=Single Trigger  1=Multi Trigger  2=External Trigger  3=External Gated
       
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 Velovity Amount
95 66 7(signed) Env 2 Amplitude by Velovity Amount
96 76 7(signed) Env 3 Amplitude by Velovity 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 Env 3 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 Modulation Bus 0 Source Code (See Table 2)
105   7(signed) M Bus 0 Amount
106   5 MM Bus 0 Destination Code (See Table 3)
107   5 Matrix Modulation Bus 1 Source Code (See Table 2)
108   7(signed) M Bus 1 Amount
109   5 MM Bus 1 Destination Code (See Table 3)
110   5 Matrix Modulation Bus 2 Source Code (See Table 2)
111   7(signed) M Bus 2 Amount
112   5 MM Bus 2 Destination Code (See Table 3)
113   5 Matrix Modulation Bus 3 Source Code (See Table 2)
114   7(signed) M Bus 3 Amount
115   5 MM Bus 3 Destination Code (See Table 3)
116   5 Matrix Modulation Bus 4 Source Code (See Table 2)
117   7(signed) M Bus 4 Amount
118   5 MM Bus 4 Destination Code (See Table 3)
119   5 Matrix Modulation Bus 5 Source Code (See Table 2)
120   7(signed) M Bus 5 Amount
121   5 MM Bus 5 Destination Code (See Table 3)
122   5 Matrix Modulation Bus 6 Source Code (See Table 2)
123   7(signed) M Bus 6 Amount
124   5 MM Bus 6 Destination Code (See Table 3)
125   5 Matrix Modulation Bus 7 Source Code (See Table 2)
126   7(signed) M Bus 7 Amount
127   5 MM Bus 7 Destination Code (See Table 3)
128   5 Matrix Modulation Bus 8 Source Code (See Table 2)
129   7(signed) M Bus 8 Amount
130   5 MM Bus 8 Destination Code (See Table 3)
131   5 Matrix Modulation Bus 9 Source Code (See Table 2)
132   7(signed) M Bus 9 Amount
133   5 MM Bus 9 Destination Code (See Table 3)


Table 1
LFO Wave codes

0 = Triangle 4=Random
1 = Up Sawtooth 5=Noise
2 = Down Sawtooth 6=Sampled Modulation
3 = Square 7=Not Used


Table 2
Modulation Source Codes
Tracking Generator Inputs

Unused modulations must have their Sources and Destinations set to 0.

0=Unused Modulation*

1=Env 1 11=Tracking Generator
2=Env 2 12=Keyboard Gate
3=Env 3 13=Velocity
4=LFO 1 14=Release Velocity
5=LFO 2 15=Pressure
6=Vibrato 16=Pedal 1
7=Ramp 1 17=Pedal 2
8=Ramp 2 18=Lever 1
9=Keyboard 19=Lever 2
10=Portamento 20=Lever 3

* The "0=Unused Modulation" parameter in this Table is found in the
Modulation Source list only. This parameter is not a Tracking Generator input
and thus will not be displayed in parameter 33 TRACK INPUT.


Table 3
Modulation Destibation Codes

Unused Modulations must have their Sources and Destinations set to 0.

0=Unused Modulation

1=DCO 1 Frequency 17=Env 1 Amplitude
2=DCO 1 Pulse Width 18=Env 2 Delay
3=DCO 1 Waveshape 19=Env 2 Attack
4=DCO 2 Frequency 20=Env 2 Decay
5=DCO 2 Pulse Width 21=Env 2 Release
6=DCO 2 Waveshape 22=Env 2 Amplitude
7=Mix Level 23=Env 3 Delay
8=VCF FM Amount 24=Env 3 Attack
9=VCF Frequency 25=Env 3 Decay
10=VCF Resonance 26=Env 3 Release
11=VCA 1 Level 27=Env 3 Amplitude
12=VCA 2 Level 28=LFO 1 Speed
13=Env 1 Delay 29=LFO 1 Amplitude
14=Env 1 Attack 30=LFO 2 Speed
15=Env 1 Decay 31=LFO 2 Amplitude
16=Env 1 Release 32=Portamento Time


Matrix-1000 Global Parameters Data Format

Statistics: 172 bytes/Global Parameters
= 344 nybbles transmitted + 5 bytes Header
+ 1 byte Checksum + 1 byte EOX
= 351 total transmitted bytes/Global parameters

Byte #Bits Description
     
0   Not Used
1 6 Vibrato Speed
2 2 Vibrato Speed Mod Source Code
3 6 Vibrato Speed Modulation Amount
4 3 Vibrato Waveform
5 6 Vibrato Amplitude
6 2 Vibrato Amp Mod SOurce Code
7 6 Vibrato Amp Modulation Amount
8 6(signed) Master Tune
9   Not Used
10   Not Used
11 4 MIDI Basic Channel
12 1 MIDI OMNI Mode Enable
13 1 MIDI Controllers enable
14 1 MIDI Patch Changes Enable
15   Not Used
16   Not Used
17 7 MIDI Pedal 1 Controller
18 7 MIDI Pedal 2 Controller
19 7 MIDI Lever 2 Controller
20 7 MIDI Lever 3 Controller
21-31   Not Used
32 1 MIDI Echo Enable
34 6(signed) Master Transpose
35 1 MIDI Mono Mode Enable
36-161 1 each Group Enables (One bit per patch, LS bit first)
162-163   Not Used
164 1 Bend Range
165 1 Bank Lock Enable (In MSB only)
166 1 Number of Units (Group Mode)
167 1 Current Unit Number (In MSB only)
168 1 Group Mode Enable (In MSB Only)
169 1 Unison Enable
170 1 Volume Invert Enable
171 1 Memory Protect Enable

Miscellaneous Matrix-1000 Commands

Bank Select

F0H 7FH <id> 02H 01H <chan> <disc-lo> <disc-hi>
           <dir-lo> <dir-hi> <bank-lo> <bank-hi> F7H

<id>       = 7FH for all devices (including this one)
           = (0-5) must match unit's ID
<disc-lo>  = Don't Care
<disc-hi>  = Don't Care
<dir-lo>   = Don't Care
<dir-hi>   = Don't Care
<bank-lo>  = bank to select(0-9)
<bank-hi>  = 0


Device Inquiry

F0H 7EH <chan> 06H 01H F7H

<chan>     = 7FH for any device (including this one)
           = (0-15) must match unit's basic channel

Device ID

F0H 7EH <chan> 06H 02H <mfg> <fam-lo> <fam-hi>
           <memb-lo> <memb-hi> <rev-0> <rev-1> <rev-2> <rev-3> F7H

<chan>     = Transmitting device's Basic Channel
<mfg>      = 10H (Oberheim)
<fam-lo>   = 6H (Matrix-6/6R/1000)
<fam-hi>   = 0H
<memb-lo>  = 2H (Matrix-1000)
<memb-hi>  = 0H
<rev-0> thru
<rev-3>    = Four ASCII Characters of the version number, right justified.
             E.g., version 1.10 is represented by:
                    <rev-0> = 20H ('')
                    <rev-1> = 31H ('1')
                    <rev-2> = 31H ('1')
                    <rev-3> = 31H ('0')

Active Controllers

01 Vibrato Amount (Lever 2)
02 Breath Control (Lever 3)
04 Foot Pedal (Pedal 1)
06 Data Entry
07 Volume
31 Bank Change Enable
64 Sustain (Pedal 2)
96 Increment
97 Decrement
98 Non-Reg Parm LSB
99 Non-Reg Parm MSB
100 Reg Parm LSB
101 Reg Parm MSB


Registered Parameters

00 Pitch Bend Range (in semitones)
01 Fine Tune (in 128ths of a semitone)
02 Transpose (in semitones)


Non-registered parameters may be used to control any parameter by using the
front panel parameter number. Matrix modulations must be controlled by use of
the System Exclusive message. When using registered or non-registered parameter
editing, all recieved data entry controller values are offset by 40H, except
when the currently selected parameter is the registered pitch bend range.
Thus, a data entry value of 40H will update the selected parameter to be 0, while
3EH is interpreted as -2. This allows for transmission of negative numbers.