Triptych v0.1.0
Triptych is a 3-band multiband compressor for mastering, one member of the "Basilica Audio" heavy-music plugin suite. It splits the signal into Low/Mid/High bands with a flat-summing Linkwitz-Riley crossover cascade, compresses each band independently, and sums back to a transparent, glue-style mastering bus - the kind of tight, controlled low end and consistent top end heavy-music mixes need before the signal reaches the rest of the chain (twist-your-guts and friends).
What's in v0.1.0
Added
- Project bootstrap: README, license, contributing guide, architecture and build docs, ADRs, and CI workflow.
- DSP core: initial working Triptych signal path (two cascaded LR4 crossovers, three independent band compressors, output trim) with unit tests.
- Per-band Mute/Solo (Low/Mid/High), resolved at the summing stage in
TriptychEngine: console-style semantics (Mute always wins; soloing isolates soloed bands), all defaulting to off. Each band's own compressor keeps running underneath regardless of Mute/Solo state, so there is no re-attack pop when a band is unmuted mid-playback. - High-band limiter option: an opt-in
juce::dsp::Limiterstage after the High band's compressor + makeup gain (ParamIDs::highLimiterEnabled, default off;ParamIDs::highLimiterThreshold, -24 to 0 dB, default -3 dB), guaranteeing the High band never exceeds 0 dBFS once engaged. Zero added latency. The underlyingBandCompressor::setLimiterEnabled/setLimiterThresholdDbsupport is generic (any band could opt in), though only the High band currently exposes it via APVTS. docs/manual.md: full user manual (what Triptych is, where it sits in a heavy production chain, signal flow, complete parameter reference, usage tips).- Editor controls for the new Mute/Solo toggles (every band) and the High-band limiter enable toggle + threshold knob, so every automatable parameter has a working v0.1 control.
- Broadened Catch2 suite (22 -> 39 test cases): per-band Mute/Solo isolation and "Mute wins over Solo" tests, High-band limiter hard-clip and threshold-sweep coverage, sample-rate sweep (44.1-192 kHz), mono/stereo/rejected bus-layout coverage, long-run (several-second) NaN/Inf stability, a dedicated bool-parameter state round-trip test, and rapid Mute/Solo/Limiter automation coverage.
Deferred
- External sidechain and adjustable crossover slopes from the M1 "Complete and refine the DSP" issue were deliberately not implemented in v0.1.0 - both were judged too high-risk to land safely in this pass (sidechain needs a from-scratch gain-computer/envelope-follower plus a bus-layout change; adjustable slopes beyond LR4 need a from-scratch higher-order Butterworth-based filter, not a reuse of
juce::dsp::LinkwitzRileyFilter). Seedocs/architecture.md's "Deferred from M1" section for the full reasoning; the GitHub issue stays open.
Changed
docs/architecture.mdandREADME.mdupdated to describe the full v0.1.0 signal path (Mute/Solo gate, optional High-band limiter) and parameter table.
Formats & platforms
- AU, VST3, Standalone
- macOS (Universal Binary: arm64 + x86_64) and Windows
Installation
Unzip the archive for your platform and copy the plugin into your system's plugin folder (e.g. ~/Library/Audio/Plug-Ins/VST3 or ~/Library/Audio/Plug-Ins/Components on macOS, or C:\Program Files\Common Files\VST3 on Windows), or run the Standalone app directly. Rescan plugins in your DAW if needed.
Signed & notarized
The macOS binaries in this release are Developer-ID-signed, notarized by Apple and stapled — they install and open without Gatekeeper warnings. (Windows binaries remain unsigned for now; Authenticode signing is tracked as roadmap milestone M4.)