audio_scripter
An experimental system for researching and prototyping languages for programmable audio effects. The current implementation combines a small per-sample language, an audio runtime, and JUCE VST3/AU/Standalone hosts.
research prototype · baseline 0.0.13 · language unstableCurrent baseline
Per-sample language
Read input samples, compute, and write output samples with arithmetic, functions, control flow, persistent state, and DSP primitives.
Experimental host
A JUCE application/plugin provides VST3, AU, and Standalone targets. It is one host for the language rather than the definition of the language.
Example corpus
Conventional and less conventional effects provide regression cases and material for language-design comparison.
Language design research
The active work is no longer driven by adding conventional DSP features. The immediate programme is to compare programmable-audio systems, construct an effect/challenge corpus, analyse the conceptual cost of expressing those effects, and derive a host-independent semantic kernel before committing to new syntax.
No novelty claim is made here for programmable plugins, per-sample DSP scripting, live recompilation, hot swapping, or in-DAW authoring; all have substantial precedents.
See the public research note and development roadmap.
Implemented language
The present 0.0.13 syntax uses a direct stereo per-sample model:
# current baseline syntax; not a final language design
# @p1: Drive
drive = 1.0 + p1 * 5.0;
outL = tanh(inL * drive);
outR = tanh(inR * drive);
The full implemented reference is in the language manual.
Known engineering limits
- the current delay implementation allocates on first use of a lane in the audio path;
- some fallback state lookup paths perform string/hash work per sample;
- long-session time precision requires correction;
- golden-audio regression and an audio-thread allocation guard are still pending;
- host/plugin validation is incomplete.
These are tracked openly in STATUS.md.
Provenance
The repository state immediately before the language-design reset is preserved on archive/pre-language-redesign-2026-08-14.