The Yamaha CS-80, rebuilt from its circuits.
Eight voices · two synthesis lines · polyphonic touch · ribbon · ring modulator · BBD orchestra effect
An Audio Unit, VST3 and CLAP instrument by Jardim Sonoro, written in Rust with truce.
Yamaha built the CS-80 in 1977: a 100 kg, eight-voice polyphonic synthesizer in which every voice is two complete synthesizers playing at once, under a keyboard that feels how fast you strike each key and how hard you lean into it afterwards. Above the keys runs a felt ribbon that bends the whole instrument in pitch. It was never easy to own, and it was never replaced: the sound of Vangelis's Blade Runner, and of countless records from Toto to Michael Jackson, is the sound of this circuit.
Tyrell80 is not a "CS-80-inspired" synthesizer. It is a study of the original electronics, stage by stage, taken from the Yamaha service manual and from the people who have measured real units, and then run as a model of those circuits.
Every voice of the CS-80 is a pair of M boards. This is the path a note takes on one of them, and what each part does to the sound:
IG00153 VCO ─► IG00158 waveshaper ─┬─ saw ─┐
├─ pulse┼─ + zener noise ─► IG00156 HPF ─► IG00156 LPF ─► VCF LEVEL ─┐
└─ sine ─────────────────────────────────────────────────► SINE ─────┤
IG00151 LEVEL VCA (level + touch + sub osc) ◄─────────┘
IG00151 envelope VCA (IG00159) ─► out
IG00152 filter envelope ─► both filters (the LPF moves 2.1× as far as the HPF)
The oscillator is linear, not exponential. The IG00153 is a Hz-per-volt relaxation oscillator: the keyboard's resistor ladder produces exponential voltages, the chip turns them into frequency in a straight line. Vibrato, the initial pitch bend and the ribbon therefore act on frequency proportionally, and the ribbon can drag a note all the way down to a slow flutter at 0 Hz, as the real one does.
Each cycle starts with a 30 µs pulse. The chip resets its capacitor with a one-shot and lets that pulse show through, so every waveform carries a small pedestal. At the top of the keyboard the pedestal is a quarter of the period: part of why high CS-80 notes sound the way they do.
The fifths are just. The 5⅓' and 2⅔' feet are made by putting two resistors in parallel, which gives an exact 3:2, not an equal-tempered fifth.
The sine bypasses the filters. The waveshaper derives a sine from a sliced triangle and sends it straight to its own VCA, so the fundamental can be kept while the filters sculpt everything above it.
Two filters in series, and they cannot scream. The IG00156 is a state-variable filter whose resonance comes from reducing damping, not from feedback. Following Jürgen Haible's analysis of the circuit, Tyrell80 solves it component by component: a 4.7 MΩ resistor across each integrator keeps the cutoff from falling below about 22 Hz; 1.2 MΩ across the damping cell caps the Q near 5, so the filter never self-oscillates and its peak compresses instead of whistling; 180 pF across that resistor softens the resonance as the cutoff rises. The high-pass feeds the low-pass, and touch, brilliance and the sub oscillator move the low-pass three times as far as the high-pass, so playing harder widens the band rather than just shifting it.
Envelopes that bend. The IG00152 and IG00159 charge a capacitor through a transconductance amplifier. At the start of every decay and release they briefly run five times faster, then continue gently: a fast fall followed by a long tail. The filter envelope travels from a negative initial level up to the attack level, settles at zero and falls back below it on release.
The keyboard remembers how you played. Velocity is held on a capacitor that discharges over about three seconds, so a hard strike stays brighter and louder for a while. The initial pitch bend is the same signal differentiated: it starts the note below pitch and lets it rise in a tenth of a second. After-touch is smoothed and applied per voice.
Eight voices, no stealing. The KAS key assigner keeps its voices in a queue and gives a new key the first idle one. With eight keys down, a ninth is simply ignored. Glissando steps through semitones on its own clock, and portamento is that staircase smoothed by an RC network.
After the voices. The two lines are mixed (not with a plain cross-fader) and pass through a ring modulator built on a µA796 Gilbert cell, whose carrier speed is swept by its own attack/decay envelope; then an expression and wah stage driven by LED/LDR photocouplers, with their slow optical lag; then the orchestra effect, an MN3001 bucket-brigade delay whose two outputs are panned left and right by four VCAs and two LFOs that never stay in step.
After the instrument: the studio. The records were not made with a dry CS-80. Vangelis played it into a Lexicon 224 and onto multitrack tape, and the STUDIO page adds that chain: a hall built on the figure-eight tank Jon Dattorro published "in the style of Griesinger" (the 224's designer), and a tape stage with wow, flutter, saturation, head bump and high-frequency loss. It is not part of the circuit model, is off by default, and the Blade Runner presets switch it on.
No two units alike. Each of the sixteen M boards gets its own tolerances — pitch, filter rank, Q, envelope timing, gain — plus slow thermal drift and a little mains hum, seeded by a Unit Serial number. Change the serial and you are playing a different CS-80; set Analog to zero for an ideal one.
- The Yamaha CS-80 service manual (S/#1001~): the overall block diagram
and schematic, every board, and the datasheet pages of the custom IG chips.
The full scans are in
CS80_Service_Manual/(from the therogoffs.com/cs80 archive). - The 22 factory tones are read, not imagined. Each tone-selector preset is a column of resistors on the T51–T54 boards; every resistor sets one of 26 parameters. All 572 cells were transcribed, including the late production changes marked on the drawings.
- Jürgen Haible, Analyzing the CS-80 VCF (2001): the filter topology and its built-in limits.
- Joachim Milson, CS-80 Interactive Diagram: board-by-board analysis with measurements on a working CS-80 — voice-assignment rules, the VCO pulse, envelope bend, 80 % filter tracking, LFO ranges, keyboard-scaling curves, touch-signal shapes.
- Scott Rider (Old Crow): oscilloscope work on the IG00153.
- The CS-80 owner's manual: control ranges, portamento and sustain times, chorus and tremolo speeds, ring-modulator behaviour.
Where the documentation stops, the choice is written down. The absolute scale of the filter levers is not in the manual, so it was calibrated so that the 22 factory tones — whose values are exact — come out balanced the way Yamaha voiced them. That and the few other estimates (OTA headroom, ring-modulator range, BBD clock) are listed in docs/HARDWARE.md, each isolated in one constant, ready to be corrected against a real instrument.
The 75 presets live inside the plugin, not in your DAW's preset list. The bar
at the top of the editor steps through them (< >); clicking the name opens
the browser, with categories and a search that also covers artists and songs.
Clicking a preset loads it and leaves the browser open, so you can audition
from the keyboard.
SAVE stores the whole panel under the User category, as one file per
preset shared by every plugin format; saving under an existing name overwrites
it, and hovering a user preset shows × to delete it. The project remembers
which preset is loaded. The SETTINGS page (analog variance, unit serial,
noise, mains, oversampling, velocity curve, bend law, transpose) belongs to the
instrument, so it stays as it is when a preset loads.
- Factory — the 22 tone-selector presets, String 1 to Funky 4, exactly as wired on T51–T54.
- Vangelis — Blade Runner (Blues lead, Main Titles, Tears in Rain, Love Theme pads, chimes), Chariots of Fire and the Flute + Bass pairing. No original settings were ever published; these follow what is documented about how the sounds were made: two saws about 10 cents apart, a low cutoff that after-touch opens until it breaks into brilliance, vibrato brought in only by after-touch (depth and speed), a ±12 st ribbon for the falling slides, and the STUDIO hall and tape.
- Classics — 37 sounds in the style of other CS-80 records, from Toto,
Michael Jackson, Kate Bush, ELO, Genesis, 10cc, Paul McCartney, Bruce
Springsteen, the 1980 Doctor Who theme and others. Each preset's comment
names the record. They come in two grades:
- Published recipes: Reverb Machine's walk-throughs (Africa, Billie Jean, Wonderful Christmastime, Mr Crowley, Walking on a Dream, The Face Part II, 4001), mapped from Arturia's CS-80 V onto these levers.
- Reconstructions: the part is documented (mostly from Andy Whitmore's 28 famous riffs), its settings are not. These are starting points built from the role of the part and the Yamaha tones, and were not matched against the recordings.
- Performance — whole-panel patches using both lines, touch and effects.
When a channel plays a factory tone, the CS-80 ignores that row of levers; the editor shows the tone's own lever positions as outlines, and EDIT ON PANEL copies them onto the levers so you can start from there.
| MIDI | CS-80 |
|---|---|
| Velocity | Initial touch: brilliance, level, pitch bend |
| Polyphonic after-touch / channel pressure | After touch, per voice: brilliance, level, vibrato, sub-oscillator speed |
| Pitch bend | The ribbon (linear in Hz), or semitones — in Settings |
| CC 1 | Extra vibrato |
| CC 11 | Foot controller for EXP / EXP-WAH |
| CC 64 | Sustain foot switch (with its assigner on), otherwise a hold pedal |
| CC 65 | Portamento/glissando foot switch |
The on-screen slide controller behaves like the ribbon: touching it does nothing, sliding right raises the pitch by up to an octave, sliding left lowers it toward silence, letting go returns to centre.
Download the installer for your system from Releases. The builds are not code-signed, so the system will warn you the first time.
- macOS (universal: Apple Silicon and Intel; AU, VST3, CLAP):
tyrell80-*-macos.pkg. If macOS blocks it, right-click the file and choose Open. - Windows (x64; VST3, CLAP): the
.exeinstaller. In the SmartScreen warning choose More info › Run anyway. - Linux (x64; VST3, CLAP): unpack the tarball and run
./install.sh.
Then rescan plug-ins in your DAW: Jardim Sonoro › Tyrell80.
cargo install cargo-truce
cargo truce install --au2 # build + install the Audio Unit
cargo truce install # or every format (AU, VST3, CLAP)
cargo truce run # standalone app
cargo test --release # DSP and plugin tests
cargo run --release --example render # render the factory tones to renders/Validation: auval passes; clap-validator passes 35 of 38 (the three
state-reproducibility failures come from the framework's CLAP wrapper and
also show on truce's own example synth). CPU: about 10 % of one Apple Silicon core with
all eight voices and both lines sounding at 2× oversampling.
| Path | What lives there |
|---|---|
src/dsp/osc.rs |
IG00153 VCO and IG00158 waveshaper |
src/dsp/vcf.rs |
IG00156 filter, component-level |
src/dsp/eg.rs |
IG00152 / IG00159 envelopes |
src/dsp/kas.rs |
Key assigner, glide, sample & holds |
src/dsp/voice.rs |
M board, touch, keyboard scaling |
src/dsp/presets.rs |
T51–T54 resistor matrices |
src/dsp/effects.rs |
Ring modulator, EXP/WAH, orchestra effect, output |
src/dsp/studio.rs |
Hall and tape after the instrument (not CS-80) |
src/bank.rs |
Preset bank: compiled-in presets, user presets |
bank/ |
Preset sources, generated by tools/gen_presets.py and compiled in by build.rs |
src/ui/ |
The editor and the preset browser |
docs/HARDWARE.md |
Every source, derivation and estimate |
Pushing a tag vX.Y.Z makes GitHub Actions
build all three platforms and publish them as a release.
Circuit knowledge: Yamaha's CS-80 service and owner's manuals; Jürgen Haible; Joachim Milson; Scott Rider. Preset research: Reverb Machine; Andy Whitmore. Framework: truce (MIT/Apache-2.0). Yamaha and CS-80 are trademarks of Yamaha Corporation; artist and film names are used only to describe the style of a preset. Tyrell80 is an independent, non-commercial study and is not affiliated with Yamaha or with any of the artists mentioned.
Free software under the GNU General Public License v3.0 or later: use it, study it, change it and share it, as long as what you share stays free too.
