Emulation of the Roland TB-303 Bass Line (1981), a monophonic bass synthesizer with a built-in step sequencer.
It runs the TB-303's original sequencer firmware on an emulated CPU, and models its voice circuit part by part from the service notes.

Straight from ro-mono-303, with no effects. The lines were written for this page, and in every loop all the knobs move.
A two-bar acid line with every knob ridden through its range, from closed and dull to wide open.
Runs of accents while ACCENT and RESONANCE come up. Each accent in a run climbs higher than the last.
Octave slides, plain and accented. The glide takes the same time however far the note travels.
A melodic line on the 303's own square shaper, from dark to biting.
A plain, closed bass part that opens into a full squelch and closes again.
All clips: saw unless marked, mono, AAC 192 kb/s.
acidvoice.com has recordings of a real TB-303 playing an accent test at three knob settings. These are ro-mono-303 playing the same pattern at the same settings. Play them next to the originals on his site.
ro-mono-303 is set to match his unit: CUT OFF MAX 2.05 kHz and DECAY 65 % (his site doesn't give DECAY). His low A♯ is about 25 cents flat against his high one: his unit's octave is wide, its WIDTH trimmer (TM5) out of trim. These clips leave ro-mono-303's trimmers as the factory set them, so its octaves are exact.
Measured note by note against 400 notes recorded from a real TB-303. Method: How it was made.
On both real units, accented notes low in CUT OFF lose a band around 260–330 Hz that ro-mono-303 keeps, up to 16 dB on one harmonic. Plain notes match. Nothing in the circuit as transcribed accounts for it.
It is fitted to one unit at one setting: acidvoice.com's, with ACCENT and RESONANCE full. Its accents now peak within −70 to +30 cents of the real ones (they were 1.3–2.3 semitones short), and the climb gets halfway 2–3 ms sooner, within one period of the measurement.
Both real units flatten their loudest accents, and the BA662 VCA chip as reverse engineered doesn't. Its output is limited to a fifth of its swing to match; why the real chip does this isn't known. There is no manufacturer data for the BA662.
Brightness in the first 0.1 s of a note is about 25 % off; two takes of the unit differ by about 2 %. With the other knobs at 25 %, the resonant peak is about 250 cents high.
acidvoice.com's unit reaches 2.05 kHz at full CUT OFF, Din Sync's 1.35 kHz, and which is more typical isn't known. CUT OFF MAX in the plugin bar covers the spread.
acidvoice.com's unit's octave is wide: its low A♯ is about 25 cents flat against its high one, its WIDTH trimmer (TM5) out of trim. ro-mono-303 leaves the factory with exact octaves, and SERVICE can trim it to match a unit. How far real units usually drift isn't known.
Record it straight from its output into a 24-bit interface, with no effects, at the settings on the recording sheet, and say whether the unit is stock or modified. Recordings are published under CC-BY with your name on them. With them, this page can also carry a blind test of a real unit against ro-mono-303.
The TB-303's digital side runs its original firmware on an emulated CPU. Its analog voice is modelled part by part from the schematic, and every block is checked against a SPICE simulation.
Each block of the voice was modelled from the schematic in the service notes, then simulated in ngspice from the same schematic and compared with the model, with typical part values and at both ends of their tolerance.
| Block | ro-mono-303 | SPICE |
|---|---|---|
| Slide, time constant | 22.00 ms | 22.04 ms |
| Filter envelope, DECAY centre | 530 ms | 530 ms |
| Accent boost, half / full ACCENT | +4.1 / +8.9 dB | +4.1 / +9.0 dB |
| Note start after the gate | 6.7 ms | 7.0 ms |
| Whole voice, note level | within 0.1–0.3 dB | |
All 16 adjustments and specifications in the service notes pass, among them the pitch scale (two octaves at 4.0005 : 1, specified as 4 : 1 ± 0.5 %), the filter's ring period, the envelope times, TEMPO from 40 to 300 BPM and the gate length.
The schematic doesn't fix trimmer settings, transistor gain or potentiometer taper. These were fitted to Din Sync's TB-303 reference recordings, 400 notes recorded in 2010 from a real TB-303 at documented knob positions, with each value kept within its part's tolerance.
| Part | Schematic value | Fitted |
|---|---|---|
| Filter trimmer TM3, ring period | 2.0 ms | 2.5 ms |
| Resonance-loop transistor gain | 300 | 385 |
| Filter envelope peak | 10 V | 9.3 V |
| DECAY potentiometer | 1 MΩ | 860 kΩ |
| Potentiometer taper | exponential | two linear segments |
| VCA control offset | 0 mV | −80 mV |
| VCA output swing | ±4.5 V | ±1 V |
| Accent-sweep gang of the RESONANCE pot | 50 kΩ | 37.5 kΩ |
| Distance from the real unit | 9.76 | 4.89 |
The largest correction is the taper: with the schematic's exponential taper, the model is about an octave too bright with the controls at maximum. The last three values were fitted to how notes start and how accents peak and sweep, on Din Sync's unit and acidvoice.com's; they barely move the distance.
Units differ. Two controls in the plugin bar correspond to differences inside the hardware:

Measured the same way as ro-mono-303, against the same 400 real notes: the same MIDI, the same knob positions, and its "Simple Saw" patch with no drive or delay.
| Spectrum | Brightness, first 0.1 s | Brightness, later | Resonant peak | Level | |
|---|---|---|---|---|---|
| Real unit, retaken | 2.5 / 2.2 dB | 41 / 60 ¢ | 33 / 30 ¢ | 95 / 43 ¢ | 0.1 dB |
| ro-mono-303 | 2.9 / 2.9 dB | 388 / 410 ¢ | 184 / 174 ¢ | 148 / 135 ¢ | 0.8 dB |
| Roland's software | 3.3 / 3.3 dB | 718 / 812 ¢ | 374 / 326 ¢ | 385 / 333 ¢ | 1.8 / 1.6 dB |
Note by note, ro-mono-303 is closer to the real unit than Roland's software on 89 % of notes for the resonant peak, 84 % for brightness later in the note, 77 % for level, 76 % for brightness at the start and 70 % for the spectrum. ro-mono-303 was calibrated on these recordings; Roland's software wasn't.
Measured with Roland's TB-303 software 1.0.9, KEYBOARD on, POSITION LOCK off. Lemus is not affiliated with or endorsed by Roland Corporation.
The TB-303's sequencer is a program in its CPU's 2 KB mask ROM. With the ROM image present, ro-mono-303 runs that program on an emulated CPU. Without it, the plugin runs in voice mode, and the voice is played over MIDI.
| [✓] ROM present | [~] Voice mode | |
|---|---|---|
| Sound | Complete voice | Complete voice (identical) |
| Sequencer | Original firmware: PATTERN WRITE, pitch and time modes, TAP, accents and slides, used as on the hardware | Not available. Notes come from the host |
| Timing | Internal clock (TEMPO 40–300 BPM), or SYNC: the host transport drives the DIN sync input | Host MIDI |
| Keys and LEDs | Driven by the firmware. Usable with the mouse or the computer keyboard | Shown, but inactive |
| MIDI | In both modes, velocity 100 or more is an accent, and a note started while another is held slides to it. Controllers: CC 74 cutoff, 71 resonance, 12 env mod, 75 decay, 16 accent, 104 tuning, 11 volume. | |
The ROM, d650c-133.ic8 as in MAME's tb303 set, is not included, because the program is Roland's copyrighted work. Put it in the ROM folder, where it is identified by SHA1, or add it with "Add CPU ROM…" in the plugin bar. Patterns are saved with the session in either mode.
Roland's logo and model names are trademarks, so they aren't included either, and their places on the panel are blank. The plugin installs an empty artwork file, tb303.svg, in the ROM folder for users' own artwork. About panel artwork