ALESIS SR-16 MIDI SYSTEM EXCLUSIVE FORMAT

ALESIS SR-16 MIDI SYSTEM EXCLUSIVE FORMAT
ALESIS SR-16 MIDI SYSTEM
EXCLUSIVE FORMAT
The following information is provided as a guide for programmers wishing to modify the data
received via MIDI from the SR-16 for the purpose of interchanging patterns from separate block
dumps, modification of drum setups, MIDI channel assignments, etc. Great care must be taken to
insure that all modified addresses are valid, since one incorrect value (the length of a pattern, for
example) could result in all data being lost in the SR-16. These errors may not show up
immediately, since the incorrect values may not be accessed by the SR-16 until a particular
pattern or song is selected. Therefore, it is recommended that any data manipulation programs be
thoroughly tested after loading into the SR-16 by selecting and recording on many patterns and
songs before assuming that the data is valid.
All 11 possible commands will be transmitted in the following format:
HEX
F0H
00H, 00H, 0EH
05H
00H-0AH
...
F7H
COMMENTS
SYSTEM EXCLUSIVE STATUS BYTE
ALESIS I.D. NUMBER
SR-16 I.D. NUMBER
SYSEX COMMAND
DATA
EOX
The following sysex commands are transmitted and received by the SR-16:
00H
COMPLETE MEMORY DUMP
A system exclusive MIDI data dump from the SR-16 is initiated by pressing the BACKUP
button, and then pressing the PLAY button. This command is followed by a block of data
representing the contents of the SR-16's memory. In order to optimize the data transfer, 8 MIDI
bytes are used to transmit each block of 7 SR-16 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:
0:
1:
2:
3:
4:
5:
6:
0:
1:
A7
B7
C7
D7
E7
F7
G7
SEVEN SR-16 BYTES:
A6 A5 A4 A3 A2 A1
B6 B5 B4 B3 B2 B1
C6 C5 C4 C3 C2 C1
D6 D5 D4 D3 D2 D1
E6 E5 E4 E3 E2 E1
F6 F5 F4 F3 F2 F1
G6 G5 G4 G3 G2 G1
A0
B0
C0
D0
E0
F0
G0
TRANSMITTED AS:
0 A7 A6 A5 A4 A3 A2 A1
0 A0 B7 B6 B5 B4 B3 B2
Alesis SR-16 MIDI System Exclusive format ________________________
1
2:
3:
4:
5:
6:
7:
0
0
0
0
0
0
B1
C2
D3
E4
F5
G6
B0
C1
D2
E3
F4
G5
C7
C0
D1
E2
F3
G4
C6
D7
D0
E1
F2
G3
C5
D6
E7
E0
F1
G2
C4
D5
E6
F7
F0
G1
C3
D4
E5
F6
G7
G0
In order to use the data properly, it must be decoded properly into SR-16 byte format. The
following list gives the data locations within the "unpacked" (decoded) block of data, starting
with the first byte of the block being 000. NOTE: All absolute addresses must have an offset of
8200H added to them (e.g., an absolute pointer to a pattern that starts at 35AH should have the
pointer value 855AH).
000H-0C7H
0C8H
0C9H
0CAH
0CBH
0CCH
0CDH
0CEH
0CFH
0D0H
0D1H
0D2H
0D3H
0D4H
0D5H
0D6H
0D7H-0DBH
0DCH
0DDH
0DEH
0DFH
0E0H
0E1H
0E2H
0E3H
0E4H
0E5H
0E6H
0E7H
0E8H-F3H
0F4H
0F5H-FDH
0FEH
0FFH
DON'T CARE
MIDI channel
Receive MIDI drum triggers (0=off, 1=on vel 1, 2=on vel 2)
Transmit MIDI drum triggers (0=off, 1=on)
MIDI note assignment of KICK (0-127)
MIDI note assignment of SNARE (0-127)
MIDI note assignment of CLS HAT (0-127)
MIDI note assignment of OPEN HAT (0-127)
MIDI note assignment of CLAPS (0-127)
MIDI note assignment of PERC 2 (0-127)
MIDI note assignment of TOM 1 (0-127)
MIDI note assignment of TOM 2 (0-127)
MIDI note assignment of TOM 3 (0-127)
MIDI note assignment of RIDE (0-127)
MIDI note assignment of CRASH (0-127)
MIDI note assignment of PERC 1 (0-127)
DON'T CARE
MIDI THRU (0=off, 1=on)
MIDI program select (0=off, 1=on)
Clock mode (0=MIDI & internal, 1=internal only, 2=tape)
MIDI clock out (0=off, 1=on)
0
Click value
0
Drumset mode (0=Pattern, 1=Manual)
Pad dynamics (0-0AH)
Version flag (0=1.00 thru 1.02, 1=1.03 and up)
1
Note map (0=Normal, 1=00-09, 2=10-19, 3=20-29, 4=30-39, 5=40-49)
DON'T CARE
0
DON'T CARE
27H
0B5H
Alesis SR-16 MIDI System Exclusive format ________________________
2
100H-1FFH
DON'T CARE
200H
201H
202H
203H
204H
205H
"
2C6H
2C7H
2C8H-2CCH
2CDH
2CEH
2CFH-2D0H
2D1H
2D2H
2D3H-2D4H
2D5H
2D6H-2D7H
2D8H
2D9H
12, 8, 1)
2DAH
2DBH-2FFH
MSB of absolute pointer to pattern 00A
LSB of absolute pointer to pattern 00A
MSB of absolute pointer to pattern 00B
LSB of absolute pointer to pattern 00B
MSB of absolute pointer to pattern 01A
LSB of absolute pointer to pattern 01A
"
"
"
"
MSB of absolute pointer to pattern 49B
LSB of absolute pointer to pattern 49B
DON'T ALTER
LSB of absolute pointer to first byte past SONG 99 data
MSB of absolute pointer to first byte past SONG 99 data
DON'T ALTER
LSB of FFFFH minus data in 0CDH & 0CEH
MSB of FFFFH minus data in 0CDH & 0CEH
DON'T ALTER
Shuffle amount (0-3, 0=OFF)
DON'T ALTER
Tempo (20-255)
Quant clock count (must correspond to Quant value 0-8: 96, 64, 48, 32,
Quant value (0-8)
DON'T ALTER
300H-301H
302H
303H
304H
305H
306H
307H
"
3C8H
3C9H
3CAH-3CCH
3CDH-3D2H
3D3H-3D6H
3D7H-3FFH
DON'T ALTER
MSB of absolute pointer to song 00
LSB of absolute pointer to song 00
MSB of absolute pointer to song 01
LSB of absolute pointer to song 01
MSB of absolute pointer to song 02
LSB of absolute pointer to song 02
"
"
"
"
MSB of absolute pointer to song 99
LSB of absolute pointer to song 99
DON'T ALTER
DON'T CARE
DON'T ALTER
DON'T CARE
400H-4F6H
4F7H
4F8H-51BH
51CH-53FH
DON'T CARE
Current drumset number (0-49 user, 64-113 preset)
User drumset 00
User drumset 01
Alesis SR-16 MIDI System Exclusive format ________________________
24, 16,
3
540H-563H User drumset 02
"
"
"
"
"
BDCH-BFFH User drumset 49
C00H-?
PATTERN 00 DATA
The pattern and song data must be dealt with in a specific manner:
1) All pattern and song data must be in consecutive order, i.e., pattern 05A data cannot be
before pattern 02B's data. The order for the data should be pattern 00A through 49B,
followed by song 00 through 99.
2) If a pattern or song does not exist, its MSB pointer will = 0, which is an illegal pointer
address. Since there will be no data for this pattern, it is skipped, i.e., if pattern 04A is
empty, pattern 04B's data follows after pattern 03B's data.
3) There can be no gaps in the data. Pattern 01A's data must follow directly after pattern
00B's data, etc.
4) Locations 2CDH-2CEH (start of free memory) and 2D1H-2D2H (length of free memory)
must be kept valid.
5) Song 99 MUST exist. This means that at least an empty song (03H 00H FFH) must be at
the end of memory, and song 99 must point to it.
6) It is suggested that all DON'T CARE data be left in the state that it is received in,
although these locations can be replaced with zeroes.
PATTERN DATA FORMAT
The following is the format of each pattern, starting with the address pointed to by the absolute
pointer to the pattern (offset by 8200H):
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH-??
??
??-??
??
LSB of number of bytes in pattern, including header and fill
MSB of number of bytes in pattern, including header and fill
LSB of offset to start of fill (from location 03H)
MSB of offset to start of fill (from location 03H)
Length of pattern in beats (0-128)
Drumset number assigned to pattern (0-49 user, 64-113 preset)
Pattern name digit 1
Pattern name digit 2
Pattern name digit 3
Pattern name digit 4
Pattern name digit 5
Pattern name digit 6
Pattern name digit 7
Pattern name digit 8
PATTERN DATA
0FFH (End of pattern)
FILL DATA
0FFH (End of fill)
Alesis SR-16 MIDI System Exclusive format ________________________
4
Pattern data must follow these rules:
1) Each byte of the pattern data (from 0EH on) is either a drum event, or a count of clocks to
wait, or 0FFH, which indicates the end of the pattern. If the event is a drum event, bit 7
will be 0, bits 4-6 will contain the dynamics of the note (0-7), and bits 0-3 will contain the
drum to be played (0-11). If the event is a count of clocks, bit 7 will be high, and bits 0-6
will indicate the number of clocks to wait (0-126). A wait of 0 clocks is legal, and will
cause the pointer to immediately advance to the next event. An empty 8 beat pattern
would consist of the following pattern data: 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEH,
08CH, 0FFH. This data will count clocks for 126*6+12 clocks (768 clocks, divided by
96 clocks per beat = 8 beats), afterwhich it will loop around since it has reached the end
of the pattern.
2) The number of clocks in a fill pattern must equal the number of clocks in the main
pattern. For an empty 8 beat pattern, the above data would be repeated twice.
3) Adding the number of bytes in a pattern to the absolute pointer of a pattern should point
to 1 byte past the last byte of the pattern.
DRUMSET DATA FORMAT
Each drumset contains 36 bytes; 3 bytes for each of 12 drums. The 3 bytes are as follows:
Byte 0, bits 0-7
Sound number 0-232
Byte 1, bit 7
Output select 0-1, 0=main outs
Byte 1, bits 0-6
Volume 0-99
Byte 2, bits 5-7
Panning 0-6, 0=left, 3=center, 6=right
Byte 2, bits 3-4
Assignment mode 0-3, multi, single, group1, group2
Byte 2, bits 0-2
Tuning 0-7, 0=-4, 4=0, 7=+3
SONG DATA FORMAT
The following is the format of each song, starting with the address pointed to by the absolute
pointer to the pattern (offset by 8200H):
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
02H
03H
LSB of number of bytes in song, including header
MSB of number of bytes in song, including header
Song name digit 1
Song name digit 2
Song name digit 3
Song name digit 4
Song name digit 5
Song name digit 6
Song name digit 7
Song name digit 8
Song tempo (00=no tempo saved)
Step 1 pattern number
Step 1 fill start count lsb
Alesis SR-16 MIDI System Exclusive format ________________________
5
04H
05H
06H
xxH
Step 1 fill start count msb
Step 2 pattern number
etc....
Pattern number 0FFH (end of song)
Song data must follow these rules:
1) There cannot be more than 254 steps in a song.
2) If a step's fill start count is FFFFH, the fill will not play.
3) The fill count represents the number of clocks that should occur before the fill begins
playing -1.
4) Adding the number of bytes in a song to the absolute pointer of a song should point to 1
byte past the last byte of the song.
05H
COPY PATTERN, DRUM, OR SONG
This command is used to copy a pattern to another pattern, a drum to a pattern, or a song
to a song. If the command is to copy a pattern, the data received will be appended to the
end of the currently selected pattern. If the command is to copy a song, the data received
will be appended to the end of the currently selected song. If the command is to copy a
drum, the drum number sent in the mode byte (-1) will be copied to the drum button hit
within 3 seconds of receiving this command, otherwise it will be ignored.
000000xxB
0xxxxxxyB
0yyyyyyyB
000nnnnnB
|
data
|
00000000B
F7H
x: MSB of number of unpacked bytes of data after header
y: LSB of number of unpacked bytes of data after header
if y_0, then x=x+1
n: copy mode: 0=copy patt, 1-12=copy drum, 17=copy song
The data is packed as 8 MIDI bytes per 7 data bytes as described
above in the MIDI bulk dump explanation. It contains a complete
pattern or song.
This extra byte is required for proper operation
EOX
When transmitting any copy function, it is recommended that a pause of one second be
inserted between the copy mode byte and the data that follows it to insure that the
receiving SR-16 has enough time to move memory around to make room for the new
pattern or song. In addition, it is recommended that a delay be added before sending
additional MIDI commands, since it may take a few seconds for the copy operation to be
complete, during which time MIDI data will be ignored. The amount of time required
will be dependent on the length of the patterns or songs being copied, and the amount of
free memory available.
07H
REQUEST SYSEX DUMP
Alesis SR-16 MIDI System Exclusive format ________________________
6
This command is used to request a complete sysex memory dump from the SR-16. After
receiving this command (if not in PLAY mode), the SR-16 will send out its complete
memory via MIDI.
F7H
08H
EOX
RECEIVE DRUMSET DATA
This command is receive only, and is used to change the voice settings of the current
drumset. It can function while the pattern is playing, and will update the display if the
settings being displayed are changed. The format is two MIDI bytes per data byte, with
the most significant data bit transmitted in bit 0 of the first MIDI byte, and data bits 0-6
transmitted in the second MIDI byte. The data edits the currently selected drumset just as
if it had been edited from the front panel. This means that the changes will not be
permanent unless the drumset is stored.
data
F7H
09H
36 data bytes, transmitted as 72 MIDI bytes
EOX
MIDI COMMUNICATIONS TEST
This command is used to ensure that bidirectional MIDI communication is functioning. If
an SR-16 receives the inquiry command (F0H, 00H, 00H, 0EH, 01H, 09H, 00H, F7H), it
will respond with the response command (F0H, 00H, 00H, 0EH, 01H, 09H, 01H, F7H)
only if MIDI ECHO is turned off. If MIDI ECHO is on, the transmitting device will see
the inquiry message returned to it if bidirectional communication is functioning. This
function is useful in determining that the SR-16 is ready to receive additional MIDI
information. For example, selecting a pattern, or copying a pattern can cause a delay in
which the SR-16 will ignore incoming MIDI information if its input buffer overflows. By
sending this command after a copy pattern command (command 5), and then waiting for
the response before sending any additional commands, it can be insured that the SR-16
will not miss any information.
0000000xB
F7H
0AH
x=0=MIDI inquiry, x=1=MIDI response
EOX
REQUEST DRUMSET DATA
This command is used to request the current drumset data to be sent out MIDI. After
receiving this command, the SR-16 will send out the current drumset as described in
command 8 above.
F7H
EOX
Alesis SR-16 MIDI System Exclusive format ________________________
7
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising