<program#>= 0..127 selects individual user programs
<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:
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.
<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.
When received, the DMPro will respond to this message with a MIDI user effects dump
(06h) of the user effect selected.
08h - MIDI Trigger Data Dump
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.
09h - MIDI Trigger Data Dump Request
F0 00 00 0E 19 09 F7
When received, the DMPro will respond to this message with a MIDI Trigger data
dump (08h).
0Ah - MIDI Global Data Dump
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.
When received, the DMPro will respond to this message with a MIDI global data dump
(0Ah).
0Ch - MIDI All Dump Request
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
0Eh - MIDI Drumkit Dump
F0 00 00 0E 19 0E <kit#> <data> F7
<kit#>= 0..63 selects individual user drumkits; 64=drumkit edit buffer
<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.
<mmm>=0=Global, 1=Drumkit, 2=Drum Program, 3=Effects, 4=Triggers
<k ffff>=Function number 0 through 20, depending on mode
!!NOTE!! The MSbit is bit <6> of the <0ksspppp> byte!!
<ss>=Sound 1-4 (0-3) when <mmm>=2
<pppp>=Page 0 through 9, depending on mode and function
<cccccc> =Drum 1 through 64 (0-63) if <mmm> = 1 or 2
<vvvvvvvv>= Parameter value, 8 bit 2’s complement
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.
11h - Sector Erase Command
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 7bit words beginning with the most significant bit of the first byte, as follows:
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.
<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.
14h - FLASH Command ACK Response
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.
15h - FLASH Command NACK Response
F0 00 00 0E 19 15 <error> F7
<error>= 0..4 as follows:
0 = No card present / Not a FLASH card
1 = Card write protected
2 = Erase failed (FLASH chip timeout error)
3 = Checksum didn’t match
4 = Programming failed (usually because block was not erased first)
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.
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.
NOTES ON FLASH CARDS:
•Best case programming time for each megabyte in a FLASH card will be 7 minutes, 45
seconds, assuming a typical FLASH programming time of 65 milliseconds per sector
block, and a typical erase time of 1.5 seconds per sector. This results in a transfer rate
of approximately 43 times slower than real time, assuming the samples are at 48KHz.
•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 DMPro responds to the Universal Device Inquiry message < F0 7E 7F 06 01 F7 >
Upon receiving this message the DMPro will respond with the following:
F0 7E 7F 06 02Universal Device Reply
00 00 0EAlesis Manufacturer ID
19 00DMPro Family ID, LSB first
00 00DMPro Family Member, LSB first
xx xx xx xxSoftware revision, ASCI (ex. 30 31 30 30 = '0100' = 1.00)
F7End-Of-Exclusive
The following specific parameter information shows the locations in which each parameter resides
after unpacking the data from its 7 bit MIDI format into the 8 bit format as described in opcode
00, program data dump.
GLOBAL DATA FORMAT
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.
# Parameter name Func Page LoLimHiLim bits bit address
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.
# Parameter name Func Page Offset Limit bits bit address
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.
# Parameter name Func Page Offset Limit bits bit address
0.Program name digit 010009570:6-0:0
1.Program name digit 110109571:5-0:7
2.Program name digit 210209572:4-1:6
3.Program name digit 310309573:3-2:5
4.Program name digit 410409574:2-3:4
5.Program name digit 510509575:1-4:3
6.Program name digit 610609576:0-5:2
7.Program name digit 710709576:7-6:1
Program Spare8:7-7:0
# Parameter name Func Page Offset Limit bits bit address
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.
# Parameter name Func Page Offset Limit bits bit address
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.
# Parameter name FuncPage Offset LoLimHiLim bits bit address