********************************************************************************
EMAX MIDI and RS-422 specs
Copyright E-MU Systems 1986
Valid for EMAX Software Rev. 3.0
12/16/86
********************************************************************************
QUICK REFERENCE EMAX MIDI IMPLEMENTATION CHART:
X = item implemented
- = item not implemented
MIDI command Transmitted? Received? Comments
----------------------------------------------------------Note off X X keys# 21 thru 108 (A-1 thru C7)
Note on X X keys# 21 thru 108 (A-1 thru C7)
Poly key pressure - Control Change X X controllers# 0 thru 31
Program Change X X program# (preset#) 0 thru 99
Channel Pressure X X
Pitch Wheel X X
Sustain footswitch X X controller# 64
Local control on/off - X
All notes off - X
Omni mode off/on - - ignores mode, turn all notes off
Mono mode - - ignores mode, turn all notes off
Poly mode - - ignores mode, turn all notes off
Song position pointer - Song select X X
Tune request - Timing clock X X
Start sequence X X
Continue sequence - Stop sequence X X
Active sensing - System reset - System exclusives X X refer to documentation
=> The EMAX will transmit and receive data at one of two speeds:
=> --31.25 Kbaud (asynchronous, MIDI or RS-422).
=> --500.0 Kbaud (synchronous, RS-422 only, odd parity).
=> The EMAX powers up at 31.25 Kbaud.
=> Numbers in parenthesis () decimal, all others hex.
Note Off 9n n = MIDI channel no. (0 to 15)
kk kk= key# (21 to 108) (A-1 to C7)
00 zero velocity
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Note On 9n n = MIDI channel no. (0 to 15)
kk kk= key# (21 to 108) (A-1 to C7)
vv vv = velocity (1 to 127)
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Continuous Controller bn n = MIDI channel no. (0 to 15)
cc cc = controller number (0 to 31)
vv vv = controller value (0 to 127)
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Sustain Footswitch bn n = MIDI channel no. (0 to 15)
40 cc = controller number (64)
vv vv = controller value (0 to 127)
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Preset Change cn n = MIDI channel no. (0 to 15)
pp pp = preset number (0 to 99)
=>EMAX will send this only if preset change has been enabled in current preset.
Channel Pressure dn n = MIDI channel no. (0 to 15)
pp pp = preset number (0 to 127)
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Pitch Wheel en n = MIDI channel no. (0 to 15)
00 wheel lsb = 0
ww ww = wheel value (0 to 127)
=>Not sent by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Send Voice Parameter f0 system exclusive
18 E-mu id
02 EMAX id
30 exclusive #30
kk key # (0 to 87)
0L level (0=primary, 1=secondary)
pp voice parameter # (see list)
vv voice parameter value
f7 EOX
=>EMAX will only do this if requested to (exclusive #00). Uses current preset.
Send Preset Parameter f0 system exclusive
18 E-mu id
02 EMAX id
31 exclusive #31
pp preset# (0 to 99, or 127 for
current preset)
pp preset parameter # (see list)
vv preset parameter value
f7 EOX
=>If parameter# 0's value is zero, then the preset is empty.
=>EMAX will only do this upon receiving a request (exclusive #01).
Send Sample Info f0 system exclusive
18 E-mu id
02 EMAX id
33 exclusive #33
kk key # (0 to 87)
0L level (0=primary, 1=secondary)
0s sample rate (0 to 7)
0: 10.000khz
1: 15.625khz
2: 20.000khz
3: 22.050khz
4: 27.778khz
5: 31.250khz
6: 41.667khz
7: 44.100khz
LL length (bits 0-6)
LL length (bits 7-13)
LL length (bits 14-18)
ss sustain loop start (bits 0-6)
ss sustain loop start (bits 7-13)
ss sustain loop start (bits 14-18)
ee sustain loop end (bits 0-6)
ee sustain loop end (bits 7-13)
ee sustain loop end (bits 14-18)
ss release loop start (bits 0-6)
ss release loop start (bits 7-13)
ss release loop start (bits 14-18)
ee release loop end (bits 0-6)
ee release loop end (bits 7-13)
ee release loop end (bits 14-18)
0f loop & direction flags
bit0: loop on
bit1: loop in release
bit2: backwards
f7 EOX
=>EMAX will only do this upon receiving a request (exclusive #03).
Send Crossfade Info f0 system exclusive
18 E-mu id
02 EMAX id
34 exclusive #34
kk key # (0 to 87)
0c crossfade info:
bits 0-2:
0: off
1: velocity fade
2: velocity switch
3: positional
4: realtime fade
5: realtime switch
bit 3:
0: primary hard
1: secondary hard
ss positional start key (0 to 87)
0k # keys in pos section-1(0 to 15)
f7 EOX
=>EMAX will only do this if requested to (exclusive #04). Uses current preset.
Send Primary Voice Map f0 system exclusive
18 E-mu id
02 EMAX id
35 exclusive #35
pp primary voice# for key# (00)
pp primary voice# for key# (01)
.. primary voice# for keys# (02-86)
pp primary voice# for key# (87)
f7 EOX
=>A voice number of 127 (7f) denotes an empty voice.
=>While these voice numbers do not match the voice numbers the EMAX displays on
the LCD when selecting voices, there is a one-to-one correspondence between
the two sets of numbers.
=>EMAX will only do this upon receiving a request (exclusive #05).
Send Secondary Voice Map f0 system exclusive
18 E-mu id
02 EMAX id
36 exclusive #36
ss secondary voice# for key# (00)
ss secondary voice# for key# (01)
.. secondary voice# keys# (02-86)
ss secondary voice# for key# (87)
f7 EOX
=>A voice number of 127 (7f) denotes an empty voice.
=>While these voice numbers do not match the voice numbers the EMAX displays on
the LCD when selecting voices, there is a one-to-one correspondence between
the two sets of numbers.
=>EMAX will only do this upon receiving a request (exclusive #06).
Send One Sample Fast f0 system exclusive
18 E-mu id
02 EMAX id
37 exclusive #37
kk key # (0 to 87)
0L level (0=primary, 1=secondary)
LL length (bits 0-6)
LL length (bits 7-13)
LL length (bits 14-18)
f7 EOX
=>EMAX then switches internally to 500 kbaud.
=>EMAX waits for receive to send ACK (see MMA exclusives) at 500khz:
=>if no ACK comes within the timeout period, (programmable by using
exclusive #21) EMAX displays error and aborts.
=>EMAX starts high speed transfer by sending MMA-type data packet at 500 kbaud:
=>Sound data in the data packet is sent as 12 bit SIGNED linear data.
=>Data packet (see MMA Data Packet) contains 120 bytes packed like this:
byte 0: bbaaaaaa aaaaaa = 6 ls bits of data word 0
byte 1: ccccbbbb bbbbbb = 6 ms bits of data word 0
byte 2: ddddddcc cccccc = 6 ls bits of data word 1
dddddd = 6 ms bits of data word 1
byte 3: ffeeeeee eeeeee = 6 ls bits of data word 2
--etc- byte 119: zzzzzzyy zzzzzz = 6 ms bits of data word 79
=>Note that bit 7 is used in these packets, unlike standard MMA format.
=>EMAX then waits for an ACK, as per MMA protocol:
=>if no response comes within a few seconds, EMAX sends CANCEL, aborts.
=>if NAK or transmission error, EMAX retransmits packet. EMAX will try
re-sending 5 times before giving up and sending CANCEL.
=>if CANCEL, EMAX displays "Cancelled by Receiver" and aborts.
=>if WAIT, EMAX resets its timeout counter (a few seconds). If receiver
needs more time, it must keep sending WAITs.
=>if ACK, EMAX increments packet number and transmits next packet.
=>Maximum packet number is 127, as per MMA protocol. Packet numbers
wraparound and continue from 0 after that.
=>Receiver must handshake the last packet (respond with ACK).
=>After completion of transfer, EMAX automatically switches back to 31.25 kbaud.
=>The "length" in the header refers to # of 12-bit data words, (80 per
packet) not to the actual number of bytes in the packet, which is 120.
=>If key and level refer to a null voice, EMAX sets length=0 and does no high
speed transfer at all.
=>EMAX will only do this command upon receiving a request (exclusive #07).
=>Uses current preset.
Send Ready f0 system exclusive
18 E-mu id
02 EMAX id
38 exclusive #38
f7 EOX
=>EMAX sends this after processing time-consuming system exclusives.
=>Sender should wait for this signal before sending more commands.
=>EMAX will also send this if requested to (exclusive #08).
MMA Sample Dump Header f0 system exclusive
7e
0c midi base channel (0 to 15)
01 MMA exclusive number
kk sample number (Key # 0 to 87)
0L sample number (Pri/Sec 0 or 1)
0c significant bits (12)
pp sample period (lsb) in nsec
pp sample period (nsb)
pp sample period (msb)
LL sample length (lsb) in words
LL sample length (nsb)
LL sample length (msb)
ss sustain loop start word (lsb)
ss sustain loop start word (nsb)
ss sustain loop start word (msb)
ee sustain loop end word (lsb)
ee sustain loop end word (nsb)
ee sustain loop end word (msb)
0t loop type (0-fwd 1-bkd/fwd)
f7 EOX
MMA Data Packet f0 system exclusive
7e
0c midi base channel (0 to 15)
02 MMA exclusive number
cc packet count (0 to 127)
.. 120 data bytes
..
xx checksum of above 124 bytes
f7 EOX
=>The 120 data bytes represent 60 12-bit unsigned linear EMAX data words:
byte 0: 0bbbbbbb bbbbbbb = 7 ms bits of data word 0
byte 1: 0aaaaa00 aaaaa = 5 ls bits of data word 0
byte 2: 0ddddddd ddddddd = 7 ms bits of data word 1
byte 3: 0ccccc00 ccccc = 5 ls bits of data word 1
--etc- byte 119: 0yyyyy00 yyyyyyy = 5 ls bits of data word 59
Note Off 8n n = MIDI channel no. (0 to 15)
kk kk= key# (21 to 108) (A-1 to C7)
vv vv = velocity (1 to 127) ignored
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Note Off 9n n = MIDI channel no. (0 to 15)
kk kk= key# (21 to 108) (A-1 to C7)
00 zero velocity
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Note On 9n n = MIDI channel no. (0 to 15)
kk kk = key# (21 to 108) (A0 to C6)
vv vv = velocity (1 to 127)
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Continuous Controller bn n = MIDI channel no. (0 to 15)
cc cc = controller # (0 to 31)
vv vv = controller value (0 to 127)
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Sustain Footswitch bn n = MIDI channel no. (0 to 15)
40 cc = controller number (64)
vv vv = controller value
(0 to 63 = off)
(64 to 127 = on)
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
All Notes Off bn n = MIDI channel no. (0 to 15)
7b (123)
00
=>MIDI "All Notes Off" messages only turn off notes whose source was MIDI.
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Poly Mode (all notes off) bn n = MIDI channel no. (0 to 15)
7c (124)
00
=>EMAX ignores the midi mode change, but it does execute "all notes off".
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".
Omni Mode (all notes off) bn n = MIDI channel no. (0 to 15)
7d (125)
00
=>EMAX ignores the midi mode change, but it does execute "all notes off".
=>Ignored by EMAX if the front panel midi option "Notes,Wheels" is set to "no".