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