# Sound Playground - a modular synth in the browser

> Build synth patches from a module library with real audio, CV and gate wiring - virtual keyboard notes, sequenced melodies, morphing oscillators, and per-jack modulation control.

A modular synth that runs entirely in the browser, built with Tone.js, React, and SVG by Gleb Stroganov. Add modules from the library, patch them with cables (drag or tap between jacks), and hear the result live. Audio starts on the first Play press and needs the Web Audio API.

## Modules

- **Oscillator** - tone source with a continuous SHAPE control that morphs sine -> triangle -> saw -> square; positions between two shapes crossfade them.
- **Noise** - white, pink, or brown noise source.
- **LFO** - slow modulation wave, patched into any control (CV) input; swings ±depth around the target knob's value.
- **Drift** - smooth random CV that keeps a patch moving with slowly changing modulation.
- **Keys** - a two-octave virtual keyboard with computer-keyboard and optional Web MIDI input, emitting pitch and gate.
- **Envelope** - an ADSR contour that turns a gate into control voltage for amplitude or another target.
- **Sequencer** - steps 13 public-domain melodies and patterns (Ode to Joy, Korobeiniki, Für Elise, Greensleeves, Bach Prelude, Scarborough Fair, Habanera, Gymnopédie, Minor Arp, Acid Bass, House Bass, Pentatonic Run, Chromatic Walk) as pitch CV into an oscillator. Every step is editable on the module's grid - drag a step to pitch it, tap it to hold - so any melody is a starting point.
- **Mixer** - blends up to three sources with per-channel level knobs.
- **Filter** - lowpass / highpass / bandpass with cutoff and resonance.
- **Distortion, Delay, Reverb** - waveshaping drive, feedback echoes, space.
- **Output** - master level, oscilloscope, and speakers.

Signal kinds are color-coded: amber circles carry audio (out jacks and cables share one hue), cyan circles are audio inputs, violet diamonds are control/CV, and red-orange squares are note gates. Every control input has its own attenuator pot scaling incoming modulation 0-100%, hardware-CV style. Cables are removed with a tap; modules are draggable and resizable.

## Preset templates

Subtractive, Melody (sequenced Korobeiniki line), Keyboard (virtual keys into an envelope and oscillator), Duo (two detuned morphing oscillators through the mixer), Ambient Pad, Rhythmic, Full Chain, Ocean Drift (filtered noise), Acid Line, Baby Noise: Hush, Baby Noise: Rain, Baby Noise: Lullaby, Tremolo.

Play it: https://glebstroganov.com/sound-playground

## Contact

Gleb works through Evil Martians. Email: strongeron@evilmartians.com.
Profile: https://evilmartians.com/martians/gleb-stroganov

_A clean Markdown version of every page on this site is available by appending `.md` to its URL. Canonical machine-readable profile: https://glebstroganov.com/about.json._
