Alesis DM Pro MIDIImplementation
Alesis DM Pro MIDIImplementation
v. 1.00 01/25/99
This document contains the system exclusive documentation for the DMPro
OPCODE SUMMARY:
00h User Drum Program Dump
01h User Drum Program Dump Request
02h Edit Program Dump
03h Edit Program Dump Request
04h unused
05h unused
06h Effects Dump
07h Effects Dump Request
08h Trigger Data Dump
09h Trigger Data Dump Request
0Ah Global Data Dump
0Bh Global Data Dump Request
0Ch All Dump Request
0Dh unused
0Eh Drumkit Dump
0Fh Drumkit Dump Request
10h Single Parameter Editing
11h Sector Erase Command
12h Sector Write Command
13h Sector Request Command
14h FLASH Command ACK Response
15h FLASH Command NACK Response
16h unused
17h unused
19h Sysex Note Chase
F0 00 00 0E 19 00 <program#> <data> F7
<data> is in a packed format in order to optimize data transfer. Eight MIDI bytes are
used to transmit each block of 7 DMPro data bytes. If the 7 data bytes are looked at as
one 56-bit word, the format for transmission is eight 7-bit words beginning with the
most significant bit of the first byte, as follows:
TRANSMITTED AS:
0: 0 A6 A5 A4 A3 A2 A1 A0
1: 0 B5 B4 B3 B2 B1 B0 A7
2: 0 C4 C3 C2 C1 C0 B7 B6
3: 0 D3 D2 D1 D0 C7 C6 C5
4: 0 E2 E1 E0 D7 D6 D5 D4
5: 0 F1 F0 E7 E6 E5 E4 E3
6: 0 G0 F7 F6 F5 F4 F3 F2
7: 0 G7 G6 G5 G4 G3 G2 G1
There are 190 data bytes sent for a single program dump, which corresponds to 166
bytes of program data. With the header, the total number of bytes transmitted with a
program dump is 198. The location of each parameter within a program dump is shown
in the next section.
F0 00 00 0E 19 01 <prog#> F7
When received, the DMPro will respond to this message with a MIDI user program
dump (00) of the program number selected.
F0 00 00 0E 19 02 <edit#> <data> F7
F0 00 00 0E 19 03 <edit#> F7
When received, the DMPro will respond to this message with a MIDI edit program
dump (02) of the edit program selected.
F0 00 00 0E 19 06 <effect#> <data> F7
<data> is in the same format as described in 00, but with a different number of bytes
due to the difference in the effects parameters. The total number of data bytes sent for a
single effects dump is 28, which corresponds to 24 bytes of effects data. With the
header, the total number of bytes transmitted with a program dump is 36. Although a
Drumkit is stored along with its Effects, they are dealt with independently via MIDI.
F0 00 00 0E 19 07 <effect#> F7
When received, the DMPro will respond to this message with a MIDI user effects dump
(06h) of the user effect selected.
F0 00 00 0E 19 08 <data> F7
<data> is in the same format as described in 00, but with a different number of bytes
due to the difference in the global parameter size. The total number of data bytes sent
for a Trigger data dump is 375, which corresponds to 328 bytes of Trigger data. With
the header, the total number of bytes transmitted with a Trigger dump is 382.
F0 00 00 0E 19 09 F7
When received, the DMPro will respond to this message with a MIDI Trigger data
dump (08h).
F0 00 00 0E 19 0A <data> F7
<data> is in the same format as described in 00, but with a different number of bytes
due to the difference in the global parameter size. The total number of data bytes sent
for a global data dump is 16, which corresponds to 14 bytes of global data. With the
header, the total number of bytes transmitted with a Global dump is 23.
F0 00 00 0E 19 0B F7
When received, the DMPro will respond to this message with a MIDI global data dump
(0Ah).
F0 00 00 0E 19 0C F7
When received, the DMPro will respond to this message with a 128 MIDI User Drum
Program dumps (00), 64 MIDI Effects dumps (06), 64 MIDI Drumkit dumps (0E), a
Global data dump (0A), and a Triggers data dump (08) for a total of 68,821 MIDI bytes.
With sysex headers, the total number of bytes transmitted is 69525.
A delay of 4.25 milliseconds will be placed between each dump. When receiving a
complete dump, the DMPro does not require any delay between dumps.
0Dh - unused
F0 00 00 0E 19 0E <kit#> <data> F7
<data> is in the same format as described in 00, but with a different number of bytes
due to the difference in the drumkit parameters. The total number of data bytes sent for
a single drumkit dump is 640, which corresponds to 560 bytes of drumkit data. With
the header, the total number of bytes transmitted with a drumkit dump is 648. When
loading a drumkit into the drumkit edit buffer, none of the 64 drum program edit
buffers or the effect buffer will be changed, even if the new drumkit buffer contains
drum program numbers different than what is currently selected.
F0 00 00 0E 19 0F <kit#> F7
When received, the DMPro will respond to this message with a MIDI Drumkit dump
(0E) of the drumkit selected.
F0 00 00 0E 19 10 <0mmmffff><0ksspppp><0ccccccv><0vvvvvvv>F7
All parameters to be edited must be sent in this format (11 MIDI bytes), regardless of
the number of bits required to transmit the value of the parameter. When the DMPro
receives this message, it will edit the specified parameter to the new value and display
it. If the function and page selected does not exist in the current configuration, the
command will cause the nearest legal function, page, and parameter to be selected, but
no edit will occur. If a program edit command is received, it will place the DMPro in
Edit mode. If the value received is out of range for the parameter selected, the range
will be limited to the nearest legal value. The function and page numbers for each
parameter are shown in the next section.
F0 00 00 0E 19 11 <sector#> F7
<sector#>= 0..63 selects 128K byte sector number to be erased in FLASH PCMCIA card
The erase command sets all bytes of a sector to FFH. There can be up to 64 sectors of
128K bytes in a FLASH card, which allows for up to 8 megabytes of FLASH memory.
Additional commands should not be sent until receiving an ACK or NACK (described
below) from the DMPro. As much as 10 seconds must be allowed before aborting if no
ACK or NACK is received.
<sector#>= 0..63 selects 128K byte sector number to be written in FLASH PCMCIA card
<block#>= 0..127 selects 1024 byte block of data to be written in FLASH PCMCIA card
<sum>= 0..127 seven bit checksum of previous 1173 bytes.
<data> is in a packed format in order to optimize data transfer. Eight MIDI bytes are
used to transmit each block of 7 FLASH card data bytes. Like with program dumps, if
the 7 data bytes are looked at as one 56-bit word, the format for transmission is eight 7-
bit words beginning with the most significant bit of the first byte, as follows:
TRANSMITTED AS:
0: 0 A6 A5 A4 A3 A2 A1 A0
1: 0 B5 B4 B3 B2 B1 B0 A7
2: 0 C4 C3 C2 C1 C0 B7 B6
3: 0 D3 D2 D1 D0 C7 C6 C5
4: 0 E2 E1 E0 D7 D6 D5 D4
5: 0 F1 F0 E7 E6 E5 E4 E3
6: 0 G0 F7 F6 F5 F4 F3 F2
7: 0 G7 G6 G5 G4 G3 G2 G1
There are 1171 data bytes sent for a single block of a FLASH card sector, which
corresponds to 1024 bytes of FLASH card data. With the header, the total number of
bytes transmitted with a program dump is 1181. This will take a minimum of 377.92
milliseconds to transmit. Additional commands should not be sent until receiving an
ACK or NACK (described below) from the DMPro. Writes should only be performed
on sector blocks known to contain all FFH data. This can be verified by reading the
block first (with the next command), or sending an erase command first.
F0 00 00 0E 19 13 <sector#> <block#> F7
<sector#>= 0..63 selects 128K byte sector number to be written in FLASH PCMCIA card
<block#>= 0..127 selects 1024 byte block of data to be written in FLASH PCMCIA card
This command will cause the DMPro to respond with an opcode 12H (sector write
command), with the contents of the sector block that was requested. If there is no card
present, the DMPro will respond with an opcode 15H.
F0 00 00 0E 19 14 F7
This command is ignored if received by the DMPro. It is sent out by the DMPro after
completing an erase command, or receiving a complete sector block write command.
F0 00 00 0E 19 15 <error> F7
This command is ignored if received by the DMPro. It is sent out by the DMPro after
receiving an erase command that could not be completed, or receiving a complete sector
block write command that could not be programmed or whose checksum was invalid.
In the case of invalid checksum, the sending device is expected to resend the data at
least once before aborting.
F0 00 00 0E 19 18 <note#> F7
When this command is received by the DMPro, it will cause the display to jump in the
same way the Note Chase function operates. It works regardless of whether the
DMPro’s Note Chase function is on or not.
<note#> = 0..127, only notes 33..96 actually do anything since the DMPro only has
notes from 33..96.
• The burden is placed on the sending device to avoid possible errors that can occur if a
sector above the total memory of a card is erased or written to (due to possible address
aliasing). It is not possible for the DMPro to determine the amount of memory in the
card.
• The FLASH card must be a 5 volt only card (no 12 volt required for programming),
must have 64K byte sectors, must have 150 nanosecond or better chip enable read
access time, and must be compatible with the programming commands and
Manufacturer’s ID codes of an Am29F040 4-Megabit FLASH memory from AMD.
The Global parameters are comprised of 14 bytes of data. Unlike the Program, Mix, and Effects
parameters, the Global parameters are not packed into each available bit, so that each parameter
occupies its own byte. This results in unused bits for most of the parameter's bytes. These bits
must remain at 0. In addition, the signed parameters are kept in 2's complement format, so no
offset adjustment is necessary. For direct parameter editing (sysex command 10H), the function
and page number are shown. The Mode should be set to 0 (=Global), and the Sound and Channel
parameters are ignored.
Drumkits contain 560 bytes of packed parameter data. The bit addresses shown are from most
significant bit to least significant bit for each parameter, with the byte number first, followed by a
colon (:), followed by the bit number. Each parameter should never exceed the limit shown in the
table. For bipolar parameters, the limits shown are offset binary, since this is the format that the
parameters are stored in. To view the parameters as two's complement numbers, add the value
shown in the Offset column.
For direct parameter editing (sysex command 10H), the function and page number are shown.
The Edit type <mmm> should be set to 1 (=Kit) for all parameters except Trig 1-16 Note#, MIDI
Song, Card Seq #, and Aux Pedal where the edit type <mmm> should be set to 4 (Trigger). The
Sound parameter is ignored. The Channel parameter should be set to 0 through 63, for Drums 1
through 64, respectively. If the edit type is Trigger, the Channel parameter is ignored. Signed
parameters should be sent in 2's complement format.
Drum Programs contain 166 bytes of packed parameter data. The first 9 bytes are common
parameters for all four sounds. The next four sets of 39 bytes contain each of the four sound's
parameters. The bit addresses must have the correct offset added to them in order to address the
correct sound relative to the beginning of the program. Sound 1's address begins at 9, Sound 2 at
48, Sound 3 at 87, and Sound 4 at 126. This is followed by 1 spare byte The bit addresses shown
are from most significant bit to least significant bit for each parameter, with the byte number first,
followed by a colon (:), followed by the bit number. Each parameter should never exceed the
limit shown in the table. For bipolar parameters, the limits shown are offset binary, since this is
the format that the parameters are stored in. To view them as two's complement numbers, add the
value shown in the Offset column. For direct parameter editing (sysex command 10H), the
function and page number are shown. The Edit Type <mmm> should be set to 2 (=Drum
Program), the Sound parameter set to 0 through 3 for sounds 1 through 4, respectively, and the
Channel parameter should be set to 0 through 63, for channels 1 through 64, respectively. Signed
parameters should be sent in 2's complement format.
Effects contain 24 bytes of packed parameter data. The bit addresses shown are from most
significant bit to least significant bit for each parameter, with the byte number first, followed by a
colon (:), followed by the bit number. Each parameter should never exceed the limit shown in the
table. For bipolar parameters, the limits shown are offset binary, since this is the format that the
parameters are stored in. To view them as two's complement numbers, add the value shown in the
Offset column. For direct parameter editing (sysex command 10H), the function and page
numbers are shown. The Edit type <mmm> should be set to 3 (=Effects), and the Channel
parameter is not used. Signed parameters should be sent in 2's complement format.
OVERDRIVE
10. Overdrive Threshold 1 0 0 99 7 8:4-7:6
11. Overdrive Brightness 1 1 0 99 7 9:3-8:5
DELAY
12. Delay Level 2 0 0 99 7 10:2-9:4
13. Delay Input Balance 2 1 -99 198 8 11:2-10:3
14. Delay Time 10ms 2 2 0 79 7 12:1-11:3
15. Delay Time 1ms 2 3 0 9 4 12:5-12:2
16. Delay Feedback 2 4 0 99 7 13:4-12:6
17. Delay Output to Reverb 2 5 0 99 7 14:3-13:5
PITCH
For Pitch Type = 0-3 (Mono & Stereo Chorus and Flange)
18. Pitch Level 3 0 0 99 7 15:2-14:4
19. Pitch Input Balance 3 1 -99 198 8 16:2-15:3
20. Pitch Type 3 2 0 4 3 16:5-16:3
21. Pitch Waveform 3 4 0 1 1 16:6
22. Pitch Speed 3 3 0 99 7 17:5-16:7
23. Pitch Depth 3 5 0 99 7 18:4-17:6
24. Pitch Feedback 3 6 0 99 7 19:3-18:5
25. Pitch Output to Reverb 3 7 0 99 7 20:2-19:4
EQ
26. EQ High Frequency 4 0 0 5 3 20:5-20:3
27. EQ High Boost 4 1 0 9 4 21:1-20:6
28. EQ Low Frequency 4 2 0 7 3 21:4-21:2
29. EQ Low Boost 4 3 0 12 4 22:0-21:5
FX Spare 23:7..22:1
The Trigger parameters are comprised of 328 bytes of data which contain 4 setups at 82 bytes
each. Like the Global parameters, the Trigger parameters are not packed into each available bit,
so that each parameter occupies its own byte. This results in unused bits for most of the
parameter's bytes. These bits must remain at 0. The Trigger parameters are stored in 2’s
complement. Add the Offset amount to the parameter value to obtain the value displayed. For
direct parameter editing (SysEx command 10H), the function and page numbers are shown. The
Mode should be set to 4 (=Trigger), the Channel parameter should be set to the trigger 0-15, and
the Sound # parameter is ignored.
NOTE: Direct parameter editing only modifies the trigger parameters for the current Trigger
Setup. The current Trigger Setup (0~3) is part of the Global parameters. The parameters for direct
editing the current Trigger Setup are shown here. Bit Addresses are shown for Trigger Setup 1.