_

synth.ist

🎛️July 31, 2026

A free modular synthesizer in the browser — patch oscillators, samples, effects and visualizers with cables

React TypeScript Web Audio API React Flow Mantine Zustand Vite

Available on

synth.ist

synth.ist is a modular sound sandbox that runs entirely in the browser — no account, no backend, no installs. Patch oscillators, microphones, sample pads, effects, modulators and visualizers together with cables on an infinite canvas, group them into pools for mixing and analysis, and explore sound. Think VCV Rack × MaxMSP, but free-form drag-and-drop and responsive from phone to studio display.

Features

  • Built a library of 55+ node types — oscillators with drawable wavetables, 13-shape noise, sample pads, the full effect rack (filter, EQ, delay, reverb, chorus, flanger, phaser, bitcrusher, gate, compressor, limiter, distortion, envelope), UI widgets, analysis nodes and routing utilities — each declared as a single spec in a central registry so adding a module is a spec, a body, and one switch case.
  • Designed a React-free audio engine that subscribes to the Zustand store, diffs the graph, and reconciles Web Audio nodes by id — so audio stays glitch-free through React re-renders and the entire patch remains serializable to JSON.
  • Implemented audio and CV patch cables where every parameter has a CV inlet: AudioParam-backed params are driven at audio rate, the rest bridged at control rate, plus wireless Send/Receive buses that patch nodes across the canvas by name.
  • Wrote a modular rhythm section on the audio thread — clock with four division outlets, Euclidean rhythms, a tuning-aware arpeggiator, sample & hold, random CV and sequencer — all sample-accurate via AudioWorklet.
  • Shipped exact analysis tooling: RMS/peak dBFS metering with peak-hold and clip detection, interpolated spectral peak frequency, and an autocorrelation tuner reporting cents deviation, alongside oscilloscope, spectrum, spectrogram and vectorscope faces.
  • Added microtonal support with tuning-system presets (just intonation, 19/24-TET, Bohlen-Pierce) and Scala .scl import that note-snap, the quantizer and the tuner all follow.
  • Built MIDI learn for any parameter via Web MIDI, per-input device and channel selection for multichannel interfaces, output-device switching, and hardware channel routing.
  • Created offline-first persistence — sessions autosave to localStorage with named saves and JSON export/import, while the sound bank synthesizes its built-in sounds on first run and stores uploads and recordings as blobs in IndexedDB.
  • Rendered patches to 16-bit WAV faster than real time with OfflineAudioContext, and added a replay mode that animates a session's construction from its history.
  • Packaged reusable components — save any selection as a stamped, thumbnailed module in the picker — plus an installable PWA with a service worker for offline use.

Try it

Open synth.ist in any modern browser and drag a node onto the canvas. Output-device switching needs Chrome/Edge; everything else works in Safari and Firefox, including iOS.