Skip to content

Triptych v0.1.0

Choose a tag to compare

@yves-vogl yves-vogl released this 14 Jul 17:02
71b4e12

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::Limiter stage 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 underlying BandCompressor::setLimiterEnabled/setLimiterThresholdDb support 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). See docs/architecture.md's "Deferred from M1" section for the full reasoning; the GitHub issue stays open.

Changed

  • docs/architecture.md and README.md updated 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.)