Skip to content

Releases: lfnoise/tzpl

Release list

TZPL v0.1.0

Choose a tag to compare

@lfnoise lfnoise released this 03 Sep 17:48

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

  • panic builtin, and error halts that actually halt -- defSynth/defSynthX fail loud instead of continuing on a broken graph
  • Int / Int fuses into a single DIV_INT_TO_FRAC opcode
  • User-defined indexing: obj[idx] rewrites to at(obj, idx), with the full at/put! subscript protocol; ranges are indexable

SynthDefs & UGens

  • Integer bit operations end-to-end in synthdefs, with indexed delay state and an in-place put peephole 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 on instruments.x
  • fadeout ugen, rpanfun, and d(0) resolving to the written signal

Engine & Control

  • setControl by 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.