First public release of TZPL, an audio coding platform combining:
- Tzopilotl -- a statically typed, real-time safe interpreted language with a direct-threaded VM, TLSF allocator, and incremental GC
- synthdef-compiler -- compiles audio signal-flow graphs into optimized native plugins via a 14-pass analysis pipeline
- engine -- a real-time audio engine with dynamic graph patching, lock-free threading, multi-silo parallelism, crossfading, and sample-accurate scheduling
- app -- a JUCE-based GUI with a multi-tab editor, REPL, notebooks, and live controls
Highlights leading up to this release
Language & VM
panicbuiltin, and error halts that actually halt --defSynth/defSynthXfail loud instead of continuing on a broken graphInt / Intfuses into a singleDIV_INT_TO_FRACopcode- User-defined indexing:
obj[idx]rewrites toat(obj, idx), with the fullat/put!subscript protocol; ranges are indexable
SynthDefs & UGens
- Integer bit operations end-to-end in synthdefs, with indexed delay state and an in-place
putpeephole optimization - The pink-noise family (
pink,blue,violet,red,gray,white) with corrected Kellett filter state reads - Voicer fixes: non-power-of-two voice counts, per-voice shape through
PhiNode, compiler parity oninstruments.x fadeoutugen,rpanfun, andd(0)resolving to the written signal
Engine & Control
setControlby control name across the engine, OSC, and NATS interfaces- NRT renders honor
setTempo
Libraries & Examples
instruments.x: a note-playing instrument synthdef library (Karplus-Strong pluck, wavetable lead, resonator bank, sample players)examples/music_fx_demos.x: three multi-section demos tying the music dialects, instruments, and effects libraries together
Docs & Site
- Documentation site with landing page, ⌘K search, per-chapter guide pages, and an audio gallery
See NEWS.md for the curated changelog.
Requirements: macOS (CoreAudio), Clang or GCC 15+, CMake 3.21+, C++23. Build with ./build.sh.