Skip to content

v0.7.0 — Live performance macros

Choose a tag to compare

@stackdump stackdump released this 17 Apr 18:59
· 427 commits to main since this release
715a874

Highlights

The biggest addition since v0.6.0: a full Macros panel for live performance tricks, plus presets, dynamic ring resize, and a complete UX polish pass for public release.

Macros Panel (new)

A toggle next to FX reveals 20 live-performance tricks in five groups. Macros queue serially — tap while another is running and yours gets added to a FIFO with a badge showing queue depth.

Mute (6) — Drop · Breakdown · Solo Drums · Cut · Beat Repeat · Double Drop
FX (7) — Sweep LP · Sweep HP · Reverb Wash · Delay Throw · Riser · Bit Crush · Phaser Drone
Pitch (4) — Octave Up · Octave Down · Pitch Bend · Vinyl Brake
Tempo (2) — Half Time · Tape Stop
One-Shot (4) — Airhorn · Laser · Subdrop · Booj (the cinematic trailer bass drop from 20k.org)

Each one-shot has its own hit count (stutter 1-5 times at 16th-note spacing) and pitch dropdown (-12 to +12 semitones). Mute macros inject transient control nets that fire a tick-locked restore — they run inside the Petri-net engine, not a main-thread timer.

MIDI Pad + CC Learn

Hover a macro button and press any MIDI pad to bind. Hover a slider and turn a CC knob to bind. Both persist for the session.

Per-track Preset Manager (★)

Save the full mixer panel (vol, pan, filters, decay) per channel, restore later. Scoped so drum presets apply to any drum track.

Dynamic Ring Size / Hits

Two dropdowns per track (2–32) live-regenerate the Petri subnet and swap it in at the next bar boundary. Works for Euclidean drums, Markov melodies, walking bass, call/response, euclidean arp, and ghost-note hihat.

Master Pitch

New pitch slider in the FX panel — ±12 semitones via a master PitchShift between distortion and compressor.

Performance + polish

  • Audio audit with Tone.Meter confirmed every macro restores FX state to baseline cleanly
  • fx-sweep / fx-hold throttle their engine dispatch to 120 ms so rapid rAF updates don't cancel Tone.js rampTo smoothing mid-ramp
  • FX input _fxPending is a Map keyed by fxKey so multi-op macros (Reverb Wash, Delay Throw, Riser, etc.) don't silently drop co-dispatched values
  • tempo-sweep throttles tempo updates to 80 ms so the worker's setInterval doesn't thrash
  • Macro control nets auto-prune from project.nets the tick their terminal transition fires
  • Help modal rewritten from scratch: 10 sections cover every new feature
  • README and CLAUDE.md updated; JSON-LD schema extended with the new generator recipe fields

Full diff: v0.6.0...v0.7.0