The Alesis SR-16 is a MIDI drum machine that allows you to create and edit drum patterns, songs, and drumsets. It features a comprehensive system exclusive MIDI format for exchanging patterns, modifying drum setups, and assigning MIDI channels. The SR-16 can also transmit and receive drumset data via MIDI, allowing for advanced customization and integration with other MIDI devices.
advertisement
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
COMMENTS
SYSTEM EXCLUSIVE STATUS BYTE
00H, 00H, 0EH
05H
00H-0AH
...
F7H
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:
SEVEN SR-16 BYTES:
A7 A6 A5 A4 A3 A2 A1 A0
B7 B6 B5 B4 B3 B2 B1 B0
C7 C6 C5 C4 C3 C2 C1 C0
D7 D6 D5 D4 D3 D2 D1 D0
E7 E6 E5 E4 E3 E2 E1 E0
F7 F6 F5 F4 F3 F2 F1 F0
G7 G6 G5 G4 G3 G2 G1 G0
0:
1:
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 B1 B0 C7 C6 C5 C4 C3
0 C2 C1 C0 D7 D6 D5 D4
0 D3 D2 D1 D0 E7 E6 E5
0 E4 E3 E2 E1 E0 F7 F6
0 F5 F4 F3 F2 F1 F0 G7
0 G6 G5 G4 G3 G2 G1 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 DON'T CARE
0C8H
0C9H
0CAH
0CBH
0CCH
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)
0CDH
0CEH
0CFH
0D0H
0D1H
0D2H
0D3H
0D4H
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)
0D5H
0D6H
MIDI note assignment of CRASH (0-127)
MIDI note assignment of PERC 1 (0-127)
0D7H-0DBH DON'T CARE
0DCH
0DDH
MIDI THRU (0=off, 1=on)
MIDI program select (0=off, 1=on)
0DEH
0DFH
0E0H
0E1H
0E2H
Clock mode (0=MIDI & internal, 1=internal only, 2=tape)
MIDI clock out (0=off, 1=on)
0
Click value
0
0E3H
0E4H
0E5H
Drumset mode (0=Pattern, 1=Manual)
Pad dynamics (0-0AH)
Version flag (0=1.00 thru 1.02, 1=1.03 and up)
0E6H
0E7H
1
Note map (0=Normal, 1=00-09, 2=10-19, 3=20-29, 4=30-39, 5=40-49)
0E8H-F3H DON'T CARE
0F4H 0
0F5H-FDH DON'T CARE
0FEH
0FFH
27H
0B5H
Alesis SR-16 MIDI System Exclusive format ________________________ 2
100H-1FFH DON'T CARE
200H
201H
202H
203H
204H
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
205H
"
2C6H
LSB of absolute pointer to pattern 01A
" " " "
MSB of absolute pointer to pattern 49B
2C7H LSB of absolute pointer to pattern 49B
2C8H-2CCH DON'T ALTER
2CDH LSB of absolute pointer to first byte past SONG 99 data
2CEH MSB of absolute pointer to first byte past SONG 99 data
2CFH-2D0H DON'T ALTER
2D1H
2D2H
LSB of FFFFH minus data in 0CDH & 0CEH
MSB of FFFFH minus data in 0CDH & 0CEH
2D3H-2D4H DON'T ALTER
2D5H Shuffle amount (0-3, 0=OFF)
2D6H-2D7H DON'T ALTER
2D8H
2D9H
12, 8, 1)
Tempo (20-255)
Quant clock count (must correspond to Quant value 0-8: 96, 64, 48, 32, 24, 16,
2DAH Quant value (0-8)
2DBH-2FFH DON'T ALTER
300H-301H DON'T ALTER
302H MSB of absolute pointer to song 00
303H
304H
305H
306H
307H
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
"
3C8H
3C9H
" " " "
MSB of absolute pointer to song 99
LSB of absolute pointer to song 99
3CAH-3CCH DON'T ALTER
3CDH-3D2H DON'T CARE
3D3H-3D6H DON'T ALTER
3D7H-3FFH DON'T CARE
400H-4F6H DON'T CARE
4F7H Current drumset number (0-49 user, 64-113 preset)
4F8H-51BH User drumset 00
51CH-53FH User drumset 01
Alesis SR-16 MIDI System Exclusive format ________________________ 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
08H
09H
0AH
0BH
0CH
0DH
0EH-??
??
??-??
??
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 LSB of number of bytes in pattern, including header and fill
01H
02H
MSB of number of bytes in pattern, including header and fill
LSB of offset to start of fill (from location 03H)
03H
04H
05H
06H
07H
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:
03H
04H
05H
06H
07H
08H
09H
0AH
02H
03H
Byte 0, bits 0-7
Byte 1, bit 7
Byte 1, bits 0-6
Byte 2, bits 5-7
Byte 2, bits 3-4
Byte 2, bits 0-2
Sound number 0-232
Output select 0-1, 0=main outs
Volume 0-99
Panning 0-6, 0=left, 3=center, 6=right
Assignment mode 0-3, multi, single, group1, group2
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 LSB of number of bytes in song, including header
01H
02H
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
Step 1 fill start count msb
Step 2 pattern number etc.... xxH 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.
05H
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.
COPY PATTERN, DRUM, OR SONG
07H
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 x: MSB of number of unpacked bytes of data after header
0xxxxxxyB y: LSB of number of unpacked bytes of data after header
0yyyyyyyB if y_0, then x=x+1
000nnnnnB 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 data above in the MIDI bulk dump explanation. It contains a complete
| pattern or song.
00000000B This extra byte is required for proper operation
F7H 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.
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.
08H
F7H 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
36 data bytes, transmitted as 72 MIDI bytes
EOX
09H 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 x=0=MIDI inquiry, x=1=MIDI response
F7H
0AH
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
advertisement
Key Features
- MIDI drum machine
- System exclusive MIDI format
- Pattern and song editing
- Drumset customization
- MIDI data transmission and reception
- Complete memory dump
- Drumset data receive
- MIDI communications test
- Drumset data request
- Copy pattern, drum, or song