Happy 303-Day! Get 30% off ABL3 or any plug-in (including bundles). Valid until March 30!

Shop Now!
TR-909 Web MIDI Dumper v2

TR-909 SYSEX TOOL

--- Awaiting Connection ---
TR-909 SYSEX Format

The TR-909 SYSEX Format

The TR-909 will only sysex dump on request from the host, and it needs to be in TRACK PLAY and STOP mode.
Download Service Manual

1. SysEx Dump Scheme

From the TR-909 service manual:

1. REQUEST (HOST → TR-909)

F0 41 51 F7
F0  Exclusive status
41  Roland ID #
51  Operation Code
F7  EOX (End of Exclusive)

2. DATA (HOST ← TR-909)

F0 41 52 01 4n [DATA...] ss F7
F0  Exclusive status
41  Roland ID #
52  Operation code
01  Format type
4n  Block n (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 bits, high bit is 0)
F7  EOX (End of Exclusive)

3. ACK (HOST → TR-909)

F0 41 53 F7
F0  Exclusive status
41  Roland ID #
53  Operation code
F7  EOX (End of Exclusive)

4. Repeat (2) and (3) increasing Block # until n = 15.

All the nibbles can be collected into a linear chunk of data of size 4096 bytes, which makes up the whole memory for the bank.

2. Overview

A bank has 48 patterns split into three groups (that is 16 patterns per group).

Each pattern has 32 bytes of rhythm data (PATTERN DATA) and 2 bytes of timing (PATTERN TIMING).

The rhythm data controls which instrument will sound on each step encoded into bitfields as described below.

3. Pattern Data

Two bytes are needed for each step, and these are found for group (0-2), pattern (0-15) and step (0-15):

byte1 = step + pattern*16 + group*1024;
byte2 = step + pattern*16 + group*1024 + 256;
byte3 = 3072 + step + pattern*16 + 256*group;

Bitfields

Byte 1: mmllssbb
  • bb Bass Drum
  • ss Snare
  • ll Low Tom
  • mm Mid Tom
Byte 2: zyxxcrhh
  • hh High Tom
  • r Rimshot (1=on, 0=off)
  • c Handclap (1=on, 0=off)
  • xx HiHat
  • y Crash (1=on, 0=off)
  • z Ride (1=on, 0=off)
Byte 3: ????tttt
  • tttt Total Accent (1=on, 0=off)
  • ???? Don't care

2-Bit Field Definitions

For bb, ss, ll, mm, hh:

01: Accent
10: Normal
00: Off
11: Flam

For xx (HiHat):

01: Accent Closed
10: Normal Closed
11: Open Hihat
00: Off

4. Pattern Timing

Pattern timing info starts at 3968 (F80) and uses two bytes for each pattern, which can be found at:

byte1 = 3968 + pattern*8 + group*2
byte2 = 3969 + pattern*8 + group*2
Byte Bitfield Parameters
Byte 1 ?cssxxxx xxxx: Length (0-15 for lengths 1-16)
ss: Prescale (0-3)
c: Chain (1=On, 0=Off) - determines if pattern is chained to next
Byte 2 ?bbb?aaa aaa: Shuffle (0-6 for amount 1-7)
bbb: Flam (0-7 for amount 1-8)
?: Unknown or not used

5. Pattern Organization

Offset (Dec) Hex Content
0(0)pattern 1 (group 1)
16(10)pattern 2 (group 1)
32(20)pattern 3 (group 1)
48(30)pattern 4 (group 1)
64(40)pattern 5 (group 1)
.........
240(F0)pattern 16 (group 1)
1024(400)pattern 1 (group 2)
.........
1264(4F0)pattern 16 (group 2)
2048(800)pattern 1 (group 3)
.........
2288(8F0)pattern 16 (group 3)

6. Pattern Timing Map

Offset (Dec) Hex Content
3968(F80)ssssxxxx pattern 1 length
3969(F81)bbbbaaaa pattern 1 flam/shuffle
3970(F82)ssssxxxx pattern 2
3971(F83)bbbbaaaa pattern 2
.........
4062(FDE)ssssxxxx pattern 48
4063(FDF)bbbbaaaa pattern 48

7. Track Data

Offset (Dec) Hex Content
3072(C00)hhhh???? (hhhh = pattern 0-15, ???? = don't care)
.........
3967(F7F)End of Track Data