Pocket Synth: Building a Playable Synthesizer With the Web Audio API
A synth with a step sequencer and arpeggiator that runs in a browser tab with no audio library. How the sound, the timing and the knobs work.
Raffi Keklikian, notes from a web developer in Los Angeles
Deep dives into software engineering, AI-assisted development, and creative coding. Practical guides, interactive demos, and honest takes on the tools shaping modern development.
Raffi Keklikian · Los Angeles
ScrollPractical guides, deep dives and honest takes on the tools shaping how we build, newest first.
A synth with a step sequencer and arpeggiator that runs in a browser tab with no audio library. How the sound, the timing and the knobs work.
A working 3D teardown of a Go-Ped Super X-Ped. Prime it, choke it, pull the cord, then slow the two-stroke cycle to 1/1000 speed, cut the engine open and watch the tuned pipe push escaping charge back into the cylinder.
Firefox 159 just brought scroll-driven animations to every engine. A field guide to the JS patterns CSS and HTML now replace, which need a fallback, and which are still Chromium-only.
I pulled ten claims from my January post on agent-first coding and scored each against public evidence: what held up, what was just extrapolation, and the review bottleneck I missed.
In May I shipped a WebMCP code generator on this blog. By November key parts of its output were wrong. What changed in the spec, what the API looks like now, and what I fixed here.
In December 2025, LLM coding agents crossed a threshold. My workflow flipped from 80% manual to 80% agent-driven in weeks. Notes on what works, what breaks, and where this is heading.
Everything runs in your browser. Open a demo to play with it, or read how it was built.
A full-screen VJ backdrop for a DJ set, no controls. Hot dogs spin on the roller grill, DJs spin records: a Chicago dog, a ballpark dog and a New York dog come apart into exploded views on the downbeat inside five strange attractors, over a neon Hot Dog City, the set’s name alternating with the night’s other names on a giant record’s label. 124 bpm by default: type your own tempo and party name below.
Full screen, no controls. A V8, a Strandbeest and a Cessna landing gear from teardown run, come apart and reassemble inside five strange attractors drawn by 200,000 points.
A synthesizer shaped like a piece of hardware, sized to fit one screen on a phone or a desktop: sixteen knobs, pads that light up and bend under a moving finger, a sixteen-step sequencer, an arpeggiator and a screen that draws whatever you are changing. Two oscillators, a filter with its own envelope and LFO, echo and reverb, built on the Web Audio API with no audio library.
A browser spacecraft simulator with a warp-speed starfield, velocity and G-force gauges, anti-gravity physics and a stealth dashboard, drawn on Canvas and animated with GSAP.
Twelve working clocks that tell the real time, each styled after an era of timekeeping, from an Egyptian sundial to a speculative holographic display.
A one-button Canvas game: press space or tap to jump through the gaps, and see how long you last before you hit the rocks.
Generate declarative HTML or imperative JavaScript tool definitions for WebMCP, then check your own snippet against a list of spec-based rules.
Leave your address and the next post lands in your inbox when it's out.