Releases: mstits/Tooot
Releases · mstits/Tooot
Release list
ToooT 2.0.1 — UX, audio engine, mastering
ToooT 2.0.1 — UX, audio engine, mastering
Eleven days after v2.0.0; the changes since are substantial. Highlights:
- Arrangement engine consumption — the linear-arrangement timeline now actually drives audio. Previously the model + view shipped but the engine kept playing the pattern grid; pressing play on a populated arrangement is finally audible.
- Linear-phase EQ in the master chain — 10 log-spaced bands (31 Hz – 16 kHz), 4096-point overlap-save FFT convolution. Master order: EQ → stereo widen → reverb → safety limiter.
- AUv3 plugin parameter automation — every loaded plugin's parameter tree is auto-registered; lanes targeting
plugin.<channel>.<slot>.<address>write through at UI tick rate. - Render-path automation expanded —
tempo.bpmjoined the audio-thread evaluator. Markers + time signatures persist in.mad. - Recording take lanes —
replace / overdub / loopmodes; per-channel take stacks for comping. - Spatial audio editor rebuilt — replaces the Metal mesh-shader pipeline (which rendered as a black screen on base M1 hardware) with a proper SwiftUI Canvas top-down view.
- Three-pane Automation editor — sidebar of every target, gridded canvas with bar lines, point inspector with curve picker. Replaces the previous single-line jumbled view.
- Generative panel rebuild — 8 generators (was 4 buttons), style picker (Techno / DnB / Ambient / Hip-Hop / Jazz / Breakbeat), 12 keys, 8 scales, intensity + complexity sliders that actually drive density.
- Synthesis tier rename — Carbon → Studio, Biological → Organic, Xenomorph → Generative. With descriptions per tier so users know what they're picking.
- AppIntents (Shortcuts.app) — Open Project / Open Last Autosave / New Project.
- Cold-launch perf —
AUv3HostManager.discoverPluginsAsync()runs on a detached Task; the 1–3 s plugin scan no longer blocks app launch.
Two real bug fixes
renderOfflineConcurrenthad a scratch-slot collision (idx % 8aliasing meant two voices could collide on the same buffer from different threads) — produced max abs diff 0.054 vs serial. Fixed: one slot per voice (voiceThreadSlots = kMaxChannels). Material because v2.0.1'sexportAudioruns through the concurrent path.- Snapshot deallocation queues were undersized at 64/128 entries;
pushsilently dropped on full, leaking retained snapshots. UAT 55 demonstrated 436/500 leaking under stress. Bumped both to 2048.
Quality
- UAT: 271 assertions, 0 failures.
- StressRunner: 11 scenarios, 0 failures. "Concurrent vs serial render parity" passes; memory drift over 1000 cycles = +0.00 MB.
- Zero build warnings.
Installation
brew tap mstits/tooot
brew install --cask tooot
Or download ToooT-2.0.1.dmg below and drag to Applications. macOS 14+, Apple Silicon.
Full changelog
See CHANGELOG.md for the line-by-line diff.
ToooT 2.0.0 — Best-in-class open-source macOS DAW
Highlights
ToooT 2.0.0 ships ~15 000 lines of new, tested code. Full changelog: every feature below shipped as working code, not scaffolding.
Plugin hosting
- CLAP host (BSD-3, MIT-compatible) — BSD-licensed, real-time-safe, modern ABI. u-he / FabFilter / Arturia / Surge XT supported.
- VST3 host — direct Steinberg SDK integration (no JUCE dependency).
- AUv3 host — per-channel insert chains (4 inserts + 1 instrument per channel) and bus inserts on the 4 aux buses.
Mastering
- ITU-R BS.1770-4 LUFS metering (momentary / short-term / gated integrated).
- True-peak detection + look-ahead limiter AUv3.
- LUFS-normalized export to Spotify (−14) / Apple Music (−16) / YouTube (−14) / EBU R128 (−23) / Amazon Music.
- TPDF dither on bit-depth reduction.
- Multiband compressor (3-band Linkwitz-Riley) + Linear-phase FFT EQ (4096-point) bundled.
Composition
- Arrangement timeline view (Pro Tools / Logic paradigm).
- Session grid view (Ableton Live paradigm) with quantized clip launch.
- Piano Roll with CC lanes (velocity / mod / expression / pan / pitch bend).
- MIDI 2.0 MPE — per-note pitch bend + pressure with voice tracking.
- Arpeggiator — 6 modes with hold, octaves, gate probability.
- Music theory — 16 scales, 14 chord qualities, frequency-domain quantization.
- Scenes — capture / recall full mixer state, quantized boundary switching.
- Automation lanes with 5 curve types + read/write/touch/latch/trim modes.
Workflow
- ⌘K Command Palette with fuzzy match over every shipped command.
- Keyboard shortcut customization — ToooT / Pro Tools / Logic Pro presets.
- Undo history browser — 50-level stack, jump-to-step.
- Project auto-save every 60 s with crash-recovery prompt on relaunch.
- JavaScript scripting via JavaScriptCore — drive the DAW from user
.jsfiles. - Text-to-speech via AVSpeechSynthesizer +
/usr/bin/sayCLI integration. - Starter content — 32 in-code synthesized instruments (drums / bass / leads / pads / perc / FX).
- Template projects — Blank / Drum Starter / Ambient Pad / Techno Basic.
- MIDI panic (⌘.) — transport stop + all-notes-off on every MIDI channel.
Engine + performance
- Variable sample rate — 44.1 / 48 / 88.2 / 96 / 192 kHz end-to-end.
- Multi-core offline render — DispatchQueue.concurrentPerform with per-thread scratch pool (~4-6× speedup on M-series 8-core vs serial).
- Zero-allocation audio thread (Swift 6 strict concurrency).
- GPU DSP — 5-kernel Metal compute library (normalize, gain, pointwise-multiply, FIR convolve, softclip).
- SOLA time-stretch + pitch-shift on the sample bank.
- Track freeze / stems / mastered export paths wired end-to-end.
Quality
- UAT: 232 assertions / 0 failures.
- StressRunner: 11 integration scenarios / 0 failures. Includes byte-identical parity between serial + concurrent render, 10 k random UMP dispatch, 1000-file parser fuzz, 0.00 MB memory drift over 1000 render cycles (post-warm-up).
- FuzzRunner for CI gating.
.github/workflows/ci.ymlwith concurrency-warning gates and UAT pass-count gate.
Installation
brew tap mstits/tooot
brew install --cask tooot
Or download the DMG below and drag to Applications. macOS 14+, Apple Silicon.
Docs
- TUTORIAL.md — blank project to mastered export in 20 minutes
- ARCHITECTURE.md — render pipeline, thread model, snapshot bridge
- PLUGINS.md — AUv3 + CLAP + VST3 status and enablement
- MAD_FORMAT.md —
.madfile format spec - JIT_SHELL.md — complete JIT command reference
- FEATURE_ROADMAP.md — 39-item gap analysis vs commercial DAWs
Philosophy
Open-source first: BSD/MIT/Apache deps + open formats only. No JUCE, no Dolby Atmos, no Celemony ARA2, no AAF. CLAP is the strategic primary plugin format. DAW Project is the interchange path. Automerge-Swift is the eventual collab path.
macOS-native. No iPad / VisionPro / iOS gated-ecosystem work.