ro-drums-909

Emulation of the Roland TR-909 Rhythm Composer (1984), a drum machine with analog voices, sampled hi-hats and cymbals, and a step sequencer.

It runs the original sequencer firmware on an emulated CPU, and models the voicing board part by part from the service notes.

Free, version 0.2.0 beta, source: v0.2.0 on GitHub (GNU AGPLv3)

betaVersion 0.2.0 is a beta

Expect bugs, and changes before 1.0. The installers aren't signed yet, so macOS and Windows warn before opening them. How to open them

Release announcements by email

Nothing else is sent. Mailing list

Dataro-drums-909 0.2.0
Emulates
Roland TR-909 Rhythm Composer
Year
1984
Type
drum machine
Status
working
Without ROM
[~] voice mode
ROM images
tr909_v4.ic609 and the hi-hat, crash and ride ROMs, not included
Outputs
Master L and R, ten MULTI OUTs
macOS 11+
Universal: AU, VST3, standalone
Windows 10+
VST3, standalone
ro-drums-909 in voice mode: the TR-909 panel with its knobs, keys and display, its brand marks' places left blank, and the plugin bar with SYNC, REAR and SERVICE
A1Sequencer. The CPU, a uPD7811, runs its original program from tr909_v4.ic609.
A2Voices. The voicing board, modelled part by part from the service notes; the hi-hat, crash and ride play their samples from their own ROMs.
FIG. 1Voice mode: the panel with its brand marks' places left blank, and the plugin bar with SYNC, REAR and SERVICE.

The factory patterns

With the version 1.0 program ROM, a new ro-drums-909 holds the factory patterns. Here it plays them as a new instance starts, every knob at its default, in mono, with no effects: each pattern four times at the default tempo, 120.6 BPM, and the song, track 1, at its stored tempo, 110.3 BPM (TEMPO with TRACK 1).

A real TR-909 playing the song, on YouTube
TRACK 1TEMPO 110.3
The factory song, 65 measures
PATTERN 1
PATTERN 2
PATTERN 3
PATTERN 4
PATTERN 5
PATTERN 6
PATTERN 7
PATTERN 8

In numbers

Measured against AudioRealism's recordings of a late TR-909 on a fine grid of knob settings, the unit it is calibrated to. Method: How it was made.

±28 ¢
tom tuning error
At the settings Roland's TR-909 software was measured at; its low tom is 79–120 ¢ flat, its high tom 150–210 ¢ sharp. Over 121 settings, ro-drums-909's median is −4, −6 and −10 ¢ (low, mid, high tom).
±21 ¢
crash and ride clock error over TUNE
Roland's TR-909 software: 29 to 118 ¢ under the real unit's.
14.5 ms
the bass drum's pitch sweep at TUNE 75 %
The real unit: 14.4 ms. Roland's TR-909 software: 20.9 ms, 45 % long.
0.84 ms
the sequencer's shuffle against the real unit's, at all seven settings
Its 40 flam recordings within 0.7 ms. Through 2 min 19 s of a real unit's factory song, every hit within about 2 ms.

Take the panel off

The voicing board and the switch board, every part where the service notes draw it, with the clap's trimmer TM, the circuit by serial number (Board revisions), and a scope on any pin of any part. SERVICE in the guide

62 / 75 Pass
service-note checks
e.g. the master out's 6 Vp-p. The other 13: Differences
ro-drums-909 with SERVICE on: the TR-909's voicing board above its switch board, every part drawn where the service notes put it, and on the right the scope, the peak-to-peak and HAND CLAP LEVEL readouts, the trimmer TM with TEST, and the circuit by serial number
FIG. 2SERVICE: the voicing board above the switch board. On the right, the scope, the trimmer TM and the circuit by serial number, from the first units to the late board.

Board revisions

Roland changed the TR-909 during production. The service notes list each change by the first serial number to have it (SN p.7). SERVICE’s circuit setting picks the unit by serial number, from the first units (360100) to the late board (426700 up, the default), and the model puts back the parts each later change replaced. Every other part is the calibrated unit’s, a late board. The setting is saved with the session. SERVICE in the guide

From serialPartsChangeWhat it doesModelled
371500R495 (bass drum)150 kΩ from Q6’s base to ground removedSurface-mounted on earlier boards (SN p.11)Yes
381500C9 (bass drum)0.22 µF → 0.33 µF“For expanding the TUNE range”Yes
381500C87, R306, R312 (tape)C87 removed; R306 4.7 kΩ → 47 kΩ; R312 470 kΩ → 4.7 MΩTape LOADNo: the tape interface isn’t emulated
392600R442, R440 (crash, ride)33 kΩ → 10 kΩThe sample clocks’ TUNE rangeYes
393000D701 (power supply)RD6.8JB2 → RD5.6JB2The reset at a brown-outNo: the supply isn’t modelled
415300R417 (rim shot)12 kΩ → 3.3 kΩ“For giving the voice more realistic sound”Yes
415300C134 (hi-hat)10 µF → 0.01 µF“For rolling off unnecessary lower frequencies”Yes
415300R392, R393, R495, C600 (TRIG OUT)22 kΩ and 10 kΩ → 1 MΩ; a jumper → R495 1 kΩ; C600 0.1 µF addedKeeps the rim shot’s TRIG OUT pulse out of TAPE SYNCYes
415300C500–C512 (jack board)0.01 µF to ground at each jack added“Noise is high in OUTPUT”Yes
426700C54, R194 (tom noise)0.0022 µF → 0.0047 µF; 47 kΩ → 100 kΩ“To emphasize attack of TOM TOMs”Yes

The program ROM changed too: group A, with no version label (SN 360100–393899); Ver. 1, an EPROM or a mask ROM (SN 403900 on); Ver. 2, which fixes STOP/CONTINUE under MIDI clock. ro-drums-909 runs version 4.0 at every serial number. A version 1.0 ROM only makes the factory patterns, which 4.0 dropped (the guide).

What is still different

The bass drum
Its second harmonic is perhaps 3–6 dB strong against three units, and DECAY 0 a little short: down 20 dB at 93 ms, against 106.
The clap
Its fourth tooth is a spike where three units have a full tooth, and with it the tail at 60–250 ms differs. A fourth unit has that tooth 3–12 dB down: units differ.
The rim shot
Its output is taken from IC50a rather than the drawn IC50b: five units' waveforms say so.
Snare and toms
The snare's pitch bend is 3–10 % high in its first milliseconds. The toms' far tail is up to 0.14 octave short at −40 dB.
Units differ
The calibration is one unit's. Another unit's toms sit 14–92 cents higher, and the unit in the video takes its crash a semitone below the lowest CRASH TUNE here. Earlier boards come from the serial number in SERVICE (Board revisions), with the calibrated unit's other parts. Two fitted values lie outside their parts' tolerances: the bass drum's R44 (36k, standing for the click's real cause) and the cymbal clocks' 4011UB gates (1.72 times their typical drive).
The top octave
The snare and clap are 0.4–1.2 dB low at 10–16 kHz at their jacks, against the board run at 384 kHz. The hi-hat, crash and ride are 0.5–0.7 dB low at 15–20 kHz, against ngspice.
Service-note checks
13 of 75 fail. The snare's supply peaks at 4.1 V where the notes draw 5. The low tom's and closed hat's accents span about 8 and 6.5 dB where the notes' traces span 5.8 and 4.7. The hats' positive peaks are 1.2–1.5 times their negative ones against the traces' 1.9–2.0; the AudioRealism unit's agree with ro-drums-909's. The snare's snappy noise bursts as its trigger ends, which the traces don't show; the AudioRealism unit's burst is the same size. At the calibrated unit's TM the clap reads 4.1 Vp-p, against the adjustment's 2.
CPU
The voices run on two worker threads beside the host's. A busy kit takes about three quarters of one core of an Apple M1 Max at 48 kHz; every voice at once comes near a full audio block.

Not emulated

The tape interface (SAVE, LOAD, VERIFY, TAPE SYNC's input), the cartridge, TRIGGER OUT as a plugin output, the clock, start, stop and song select on MIDI out, the analog voices' own power-on transients (they start at their operating points), and the supply rails' ramp.

How it was made

  1. 01

    The firmware

    Roland's v4.0 program runs unmodified on an emulated uPD7811, with the CPU board's battery RAM, key and LED matrices, MEAS/TEMPO display, TEMPO and TOTAL ACCENT pots, MIDI and DIN sync, driving the voicing board through its trigger latches and accent DACs. Every procedure in the owner's manual behaves as the manual says, the firmware's own quirks aside: 54 checks. Against a real unit's recordings, shuffle is within 0.84 ms at all seven settings and the 40 flam recordings within 0.7 ms.

  2. 02

    Schematic and SPICE

    Every circuit of the voicing board and the jack board was transcribed part by part from the service notes into a netlist, which a circuit solver runs sample by sample: no voice is a hand-made approximation. Each netlist is checked against ngspice on the same circuit: the bass drum, snare, toms and rim shot within 0.12 % RMS, the clap 0.65 %, the jack board 0.35 %, the hi-hat and crash 0.45 % and the ride 0.6 % at their 192 kHz; the VCOs' pitch within 0.01 %. The noise generator and the hi-hat's and cymbals' counters, ROMs and latches are their logic, edge by edge.

  3. 03

    Calibration to a real unit

    The schematic doesn't fix the pots' laws, the trimmer or the parts' spread. These were fitted to AudioRealism's recordings of a late TR-909 at every knob on a fine grid, each fit checked on settings held out of it, and on other units' recordings.

    PartSchematic valueFitted
    Bass drum C80.33 µF0.40 µF
    Bass drum R4422 kΩ36 kΩ
    Snare VR7500 kΩ600 kΩ
    Clap trimmer TM, wiper25.5 %30 %
    Crash VR2510 kΩ8.36 kΩ
    Cymbal clocks' 4011UB gates, drivetypical× 1.72

    With the schematic's values, the bass drum's log-spectral distance from the unit is 11.7 dB and the toms' tuning is 46–80 ¢ off RMS; fitted, 4.2 dB and 14–20 ¢. The clap's TM in the service notes, 2 Vp-p at its MULTI OUT, leaves the clap 6 dB under the other voices: its spikes are narrower than the unit's.

Roland's TR-909 software

Its renders measured against the same real unit, at the same knob settings.

Against the real unit. ¢ = cents.
SourceToms' tuningCrash and ride clocksBass drum sweep, TUNE 75 %Open hat at DECAY 0, to −20 dB
Real unit——14.4 ms136–137 ms
ro-drums-909within ±28 ¢within ±21 ¢14.5 ms136–137 ms
Roland's softwarelow 79–120 ¢ flat, high 150–210 ¢ sharp29–118 ¢ under20.9 ms31 ms

Roland's software also places the clap's fourth burst 3–5 ms late, and its rim shot's tail is half as long. ro-drums-909 was calibrated on this unit; Roland's software wasn't.

Measured with Roland's TR-909 software 1.1.3: single-knob sweeps around its default kit, at 48 kHz, MIDI velocity 127.

ROM images and voice mode

The sequencer program and the hi-hat's, crash's and ride's samples are in ROMs, Roland's copyrighted work, so they aren't included. With the images from MAME's tr909 set, ro-drums-909 runs the program, tr909_v4.ic609, on an emulated CPU, and plays the samples from their ROMs. Without the program ROM, it runs in voice mode: the same voices over MIDI, with no sequencer. Without a sample ROM, that voice is silent. The version 1.0 program ROM gives a new instance the factory patterns. The ROMs and voice mode

Panel artwork

Roland's logo and the model names are trademarks, so their places are blank: three on the top panel and one on the rear. Each place takes an SVG or PNG file of your own in artwork/tr909/ in the ROM folder: drawn yourself, or generated with an AI tool such as Claude or ChatGPT. Panel artwork