Vintage polysynth · free in the browser

A polysynth inspired by the 80s, playable right now.

Oh a Synth is a 6-voice polysynth inspired by the classic sounds of the 80s. Its real engine runs in this page. Pick a patch, sweep the filter, punch the chorus in. Power it on and play.

Play it in your browser
The Oh a Synth front panel: ARPEGGIO, MAIN, LFO, DCO, HPF, VCF, VCA, ENV and CHORUS sections over a six-octave keyboard
Click to power on. Silent until you do.

Why this exists

Oh a Synth chases the feel, down to the small component tolerances that make six voices sound like six voices. The polysynths of the 80s stay on records because they do a few things perfectly: rock-solid digital oscillators against a warm analog filter, and a chorus that turns one voice into a wall. Software versions usually get the panel right and the feel wrong.

DCO

One digitally-exact oscillator per voice: polyBLEP saw, pulse with manual or LFO-swept width, a square sub one octave down, and a noise source shared across all voices, as on the hardware.

That era's character is solid pitch against a moving filter. Tuning never drifts here; the voice-to-voice tolerances live in the filter and amp instead, where the real chips had them.

The DCO section of the Oh a Synth panel: RANGE, LFO, PWM, PWM SRC, PULSE, SAW, SUB and NOISE controls
Slot: close crop of the DCO section, PWM SRC set to LFO (screenshot, 1280×800)

VCF + HPF

A 24 dB/oct zero-delay-feedback ladder filter that self-oscillates near the top of the RES range and tracks the keyboard via KYBD. In front of it sits the 4-position HPF. Position 0 is the famous low-shelf bass boost.

Sweep FREQ on a held chord and there is no zipper, no stair-stepping: slider moves are smoothed per-sample inside the audio thread.

The HPF and VCF sections of the panel: FREQ switch, and FREQ, RES, ENV POL, ENV, LFO, KYBD sliders
Slot: the VCF mid-sweep with RES high, showing filter self-oscillation (screenshot, 1280×800)

CHORUS

Two latching buttons, I and II; press both for I+II. A BBD-style stereo chorus modeled on the MN3009 bucket brigades: one delay line, two taps modulated in antiphase, wet path band-limited to 9 kHz.

This is the effect the era is remembered for. I is slow and lush, II runs faster, and I+II is the quick shallow warble the LESLIE ORGAN patch is built on.

The CHORUS section: buttons I and II with LEDs lit
Slot: CHORUS I engaged, LED lit (screenshot, 1280×800)

ARPEGGIO

UP, UP&DN, or DOWN across 1, 2, or 3 octaves. Free-running from 0.5 to 20 Hz, or hit SYNC and the RATE slider snaps to twelve note divisions from 1/1 to 1/64, dotted values included. HOLD latches the chord.

Synced, it locks to your DAW's playhead in the plugin and to MIDI beat clock everywhere else, realigned every beat so it cannot drift.

Slot: 15 s silent loop of the plugin in a DAW, arp synced, a knob turning (assets/video/synth-daw.mp4/.webm)

PATCHES

Eight factory patches, from FAT BASS to LESLIE ORGAN. Save and name your own, and export or import them as flat .ohasynth.json files. In the app and plugin, favourite a patch ♥ and it gets its own section at the top of the selector.

The same file loads in the browser, the Mac app, and the plugin. A patch sketched on a laptop opens in Logic unchanged.

The patch selector open, showing FAVOURITES, FACTORY and USER sections
Slot: native patch menu open. FAVOURITES / FACTORY / USER sections visible (screenshot, 1280×800)

MIDI

Notes with velocity, pitch bend with separate DCO and VCF depths, mod-wheel vibrato, sustain pedal, and 24-ppqn beat clock for the arp. The status readout names what's connected and what isn't.

Those machines ignored velocity entirely. The VEL slider maps it gently to level; set it to zero for that behavior.

The BENDER lever with LFO TRIG button and DCO/VCF bend-depth sliders
Slot: the BENDER mid-throw with keys held (screenshot, 1280×800)

Hear it in a track

Thirty seconds, every sound from Oh a Synth: bass, pads, brass stabs, and the arp, recorded straight out of the plugin.

Slot: 30 s musical bed using only Oh a Synth, captions burned in (assets/video/synth-in-a-track.mp4/.webm)

Get it

In your browser

Free and immediate. The synth at the top of this page runs the real engine, not a demo loop. Patches, filter and chorus are live here. The whole panel is in the app.

Play it now

In your DAW

The same instrument as an AU/VST3 plugin and standalone app for macOS. Every parameter is automatable. Patches are shared with the browser version. Builds are done. Distribution is waiting on Apple Developer ID signing and notarization.

Tell me when the full version ships. One email to Nate, one reply when it's live.

Specifications

Polyphony6 voices, with voice stealing (releasing voices stolen first)
Oscillator1 DCO per voice: polyBLEP saw + pulse (manual/LFO PWM), square sub −1 octave, shared noise; 16′/8′/4′ range
Filter24 dB/oct zero-delay-feedback ladder, self-oscillating; env (±, up to 9 oct), LFO (±3 oct), key follow to 105%
High-pass4-position HPF; position 0 is a low-shelf bass boost
Envelope1 ADSR shared by VCF and VCA, RC-style exponential segments; VCA env or gate mode
LFOTriangle, 0.1–30 Hz, 0–2.5 s delay with fade-in, LFO TRIG override; routes to pitch, PWM, VCF
EffectsBBD-style stereo chorus: I (0.513 Hz), II (0.863 Hz), I+II (9.75 Hz)
ArpeggiatorUP / UP&DN / DOWN, 1–3 octaves, HOLD; free 0.5–20 Hz or synced (12 divisions, 1/1–1/64 incl. dotted); tempo from DAW transport (plugin), MIDI clock, or BPM 40–300
Browser versionFree. AudioWorklet DSP, ~3–12 ms latency. Chrome, Edge, Firefox, Safari. Web MIDI is unavailable in Safari
Plugin & appAU, VST3, and standalone. macOS 11+, universal binary (Apple Silicon + Intel). All parameters host-automatable, state saved with the project
MIDINotes with velocity, 14-bit pitch bend, mod wheel (CC1), sustain (CC64), all-notes-off (CC120/123), 24-ppqn beat clock
Patches8 factory + unlimited user patches; flat .ohasynth.json, interchangeable across browser, app, and plugin
PriceNot announced

Questions

Does the browser version sound like the plugin?

Yes. The JavaScript and C++ engines are kept line-for-line equivalent: same oscillators, same filter, same chorus constants, same factory patches. Only the plumbing differs. The browser adds a few milliseconds of latency and runs at your audio device's rate.

Will it work in my DAW?

On macOS, yes: AU for Logic, VST3 for everything else. Every panel parameter is host-automatable, the current patch saves with your project, and you can run as many instances as you like.

What about Windows?

The desktop version is macOS-only today. The browser version runs anywhere Chrome, Edge, or Firefox runs. If a Windows build happens, the notify list hears about it first.

Why can't I download it yet?

The app and plugins build and run today, but shipping them properly requires Apple Developer ID signing and notarization, which is in progress. The notify list gets the download link the day it's live.

Does it respond to velocity?

By choice. The machines this draws on ignored velocity entirely; here the VEL slider maps velocity gently onto level. Set it to zero for the period-correct response.

Do patches transfer between the browser and the plugin?

Yes. A patch is a flat .ohasynth.json file, identical in both directions. Anything a patch doesn't name falls back to its default, so older patches keep loading as parameters are added.

The synth is at the top of this page.

No download, no signup. Power it on and play it now.

Play it in your browser