By Mike Janney · AudioRealism
The Roland TR-909 only performs a System Exclusive (SysEx) dump upon request from a host. To initiate this, the unit must be in TRACK PLAY and STOP mode.
For reference, the original service manual is available here: TR-909 Service Manual
1. SysEx Communication Protocol
The TR-909 uses a request/response handshake divided into 16 blocks.
Step 1: Request (Host → TR-909)
F0 Exclusive Status
41 Roland ID
51 Operation Code (Request)
F7 EOX
Step 2: Data Transfer (Host ← TR-909)
The TR-909 sends data in nibbles (4-bit chunks). Each byte of internal memory is split into a Low Nibble followed by a High Nibble.
F0 Exclusive Status
41 Roland ID
52 Operation Code (Data)
01 Format Type
4n Block Number (n = 0–15)
0x Low nibble of Byte 0
0y High nibble of Byte 0
...
0x Low nibble of Byte 255
0y High nibble of Byte 255
ss Checksum (7-bit)
F7 EOX
Step 3: Acknowledge (Host → TR-909)
F0 Exclusive Status
41 Roland ID
53 Operation Code (ACK)
F7 EOX
Note: Repeat steps 2 and 3, incrementing the Block Number until n = 15. Once reconstructed, you will have a linear 4096-byte chunk representing the entire bank memory.
2. Memory Map Overview
A single bank contains 48 patterns divided into three groups of 16. Each pattern consists of rhythm data and timing information.
Data Type
Description
Size
Pattern Data
Instrument triggers and accents
32 Bytes per pattern
Pattern Timing
Length, scale, flam, and shuffle
2 Bytes per pattern
3. Pattern Data Encoding
Each step in a pattern requires bitfields spread across three different memory offsets. To find the bytes for a specific Group (0–2), Pattern (0–15), and Step (0–15):
- Byte 1: step + (pattern * 16) + (group * 1024)
- Byte 2: step + (pattern * 16) + (group * 1024) + 256
- Byte 3: 3072 + step + (pattern * 16) + (256 * group)
Bitfield Definitions
Byte
Bitfield
Instruments / Controls
Byte 1
mm ll ss bb
Bass Drum (bb), Snare (ss), Low Tom (ll), Mid Tom (mm)
Byte 2
z y xx c r hh
Hi Tom (hh), Rim (r), Clap (c), HiHats (xx), Crash (y), Ride (z)
Byte 3
? ? ? ? tttt
Total Accent (tttt)
Values for 2-bit fields (bb, ss, ll, mm, hh):
- 00: Off
- 01: Accent
- 10: Normal
- 11: Flam
Values for HiHats (xx):
- 00: Off
- 01: Closed (Accent)
- 10: Closed (Normal)
- 11: Open
Values for 1-bit fields (r, c, y, z, t):
- 0: Off
- 1: On
4. Pattern Timing & Metadata
Timing info starts at offset 3968 (0xF80). Two bytes define the behavior of each pattern.
- Byte 1: 3968 + (pattern * 8) + (group * 2)
Format: ? c ss xxxx - Byte 2: 3969 + (pattern * 8) + (group * 2)
Format: ? bbb ? aaa
Parameter Mapping
- xxxx: Length (0–15 for pattern lengths of 1–16)
- ss: Prescale (0–3 decimal)
- aaa: Shuffle Amount (0–6 for levels 1–7)
- bbb: Flam Amount (0–7 for levels 1–8)
- c: Chain (1 = On, 0 = Off) — Determines if pattern is chained to the next.
5. Track Data
Track data is stored starting at offset 3072 (0xC00).
- Format: hhhh ????
- hhhh: Pattern selection (0–15)
- ????: Unused / Reserved / Don't Care / Don't know

.jpg?rotate=0&etag=%22b49e6-68bd804f%22)