LLM-First Synthesis
Beepscript is text all the way down. Atom definitions are Lua. The notation stream is characters. Arrangements are named patterns and tracks in plain text. This makes the entire synthesis workflow natively accessible to language models — not as an afterthought, but as a natural consequence of the design.
Why text matters for AI
Most synthesis tools use graphical interfaces: knob positions, waveform displays, visual patching, piano rolls. A language model can't turn a knob or draw an automation curve. But it can write text. When synthesis is expressed as text — parameters in Lua, sequences in character notation, arrangements in PAL — a language model can generate, modify, debug, and explain sounds using the same capabilities it uses for code.
This isn't about replacing human sound designers. It's about making sound design programmable in a way that AI tools can participate in. A language model can draft a starting point, suggest modifications, generate variations, or explain what a piece of notation does — the same way it works with any other text-based medium.
The LLM reference file
Beepscript ships with LLMS.md, a ~1,650-line reference document specifically structured for language model consumption. It covers:
- Complete API reference for all Lua functions (oscillators, filters, envelopes, effects, engines)
- Notation syntax rules and operator behavior
- PAL (Pattern Arrangement Language) directives and examples
- Sound design patterns and recipes (how to build specific types of sounds)
- Parameter ranges, defaults, and constraints
- Common pitfalls and best practices
The file is designed to fit within a language model's context window and provide enough information for the model to generate valid, musically sensible Beepscript programs without guessing at syntax or parameter ranges.
Three-language architecture
Beepscript programs use three interleaved text languages, each optimized for a different task:
Lua (atom definitions)
Configuration blocks wrapped in { } define sound atoms using Lua syntax. Set oscillator types, frequencies, filter cutoffs, envelopes, effects chains, and engine-specific parameters. Lua provides variables, arithmetic, and loops for programmatic sound design.
Character notation (performance)
The stream of characters outside Lua blocks constitutes the performance. Each character triggers its assigned atom. Adjacency morphs between timbres. Operators modify playback. This layer is the most compact — a few characters encode timbral transitions that would take lines of code elsewhere.
PAL (arrangement)
Pattern and track directives (/pa/, /tr/, /ar/) organize notation into named, reusable, loopable patterns on separate tracks. PAL turns a single-voice sequence into a multi-track composition.
Text-in, sound-out
Because Beepscript notation is plain text, a language model can generate it directly. Paste the output into the Workspace and press play — the browser renders audio in real time from the WASM engine. No install, no build step, no intermediate file format. The entire round trip from prompt to playback happens in a browser tab.
What this enables
With text-based synthesis and an LLM reference file, practical workflows include:
- Sound description to audio — Describe a sound in natural language, get Beepscript notation that produces it
- Iterative refinement — Ask a language model to make a sound brighter, longer, more metallic, or to add reverb
- Bulk generation — Generate variations of a sound: ten different notification tones, five alarm patterns, twenty UI beep variations
- Explanation and learning — Paste notation into a language model and ask what it does, why it sounds the way it does, or how to modify it
- Translation — Convert sound design specifications or frequency tables into working Beepscript programs
The Workspace provides a browser environment for testing generated notation. The Explorer has 390+ examples that serve as training data and reference material for LLM-generated sound design.
← Back to About