About Beepscript
Type characters. Hear sound. Morph between timbres by adjacency.
Beepscript is a text-based synthesizer. Single characters map to synthesizer configurations called atoms — type a character and it plays. Type two characters next to each other and the sound morphs smoothly from one timbre to the other. Put a space between them and you get a hard cut. The entire workflow is plain text: Lua atom definitions, character notation, and a track-based arrangement language. Nothing is hidden in a GUI. Everything is readable, editable, and reproducible.
By the numbers
Synthesis engines
Three engines ship today, each suited to different sound design tasks. All run in real-time in the browser via WebAssembly.
- Basic (subtractive) — Five pitched oscillators (sine, saw, square, triangle, noise), six noise colors (white, pink, brown, red, blue, violet), six filter types (low-pass, high-pass, band-pass, notch, all-pass, and formant with twelve vowel/nasal presets), ADSR envelopes, and LFO modulation. The workhorse for UI sounds, pads, leads, vocal textures, percussion, and effects.
- FM — Four-operator frequency modulation with eight algorithms and per-operator frequency ratios, feedback, and envelopes. Metallic tones, bells, electric pianos, and harmonic textures that subtractive synthesis cannot reach.
- Stringed (digital waveguide) — Physical modeling of plucked and bowed strings across fifteen presets: guitar, koto, harp, piano, violin, sitar, tanpura, banjo, mandolin, shamisen, gayageum, erhu, dulcimer, zither, and ukulele.
Detailed engine documentation →
128 independent voices
The voice allocator manages a pool of 128 simultaneous voices. Each voice runs its own synthesis engine with its own oscillators, filters, envelopes, and effects — not 128 copies of one patch, but 128 unique signal chains. Per-atom polyphony limits, oldest-first voice stealing, a 50ms legato window, and 5ms crossfade on oscillator changes keep the system musical under heavy load.
Built for functional audio
Beepscript is designed for sound design as much as musical composition. The Explorer catalogs 390+ interactive examples organized by domain:
Every example is editable and playable in the browser. Modify the code and hear the result immediately.
Sound design gallery → | Temple bell case study →
Text in, sound out
Because Beepscript is text, it is natively accessible to language models. An LLM reference file (~1,650 lines) documents the complete API, syntax, and sound design patterns. Language models can generate, modify, and reason about Beepscript programs directly — making AI-assisted sound design a practical workflow rather than a bolted-on feature.
More about LLM-first synthesis →
Technology
The synthesis core is written in Rust and compiles to WebAssembly for zero-install browser playback. Lua handles atom definitions and metadata. Browser audio uses the AudioWorklet API for low-latency real-time output.
Version
0.1.0+build.1.gd0992c3
Created by
Beepscript is created by Nicholas Folse. The project started from a question: what if sound design worked like typing? What if every sound was a character, every texture a word, and an entire composition was just a document you could read, edit, and share as plain text?