SEAM-LTM — Plugin Suite
Sixteen VST3 plugins for sustained electroacoustic music, built directly on the Steinberg VST3 SDK — no JUCE, no frameworks. They fall into three families: converters that move a signal from one spatial format to another, generators that produce the test signals a room is measured with, and the measurement and processing tools that listen to the result.
Several of them are the C++ counterpart of an algorithm that also lives in Faust: where that is the case, the entry links the library source.
Building the suite, the VST3 SDK and the installation paths are documented in the repository README — they belong next to the code, where they cannot quietly go stale.
Generated from github.com/s-e-a-m/seam-ltm at 7004a1b.
Format converters and rotators
SDMX
stereo → stereo
Sum and Difference Matrix (Blumlein M/S). The matrix is involutory (A = A⁻¹), so one instance encodes LR → MS and a second one decodes MS → LR

Faust counterpart: seam.stereophony.lib.
B2XROT
B-format 4ch → AmbiX 4ch
B-format (FuMa) to AmbiX with rotation: W is scaled by √2, channels are reordered to ACN/SN3D, then Yaw/Pitch/Roll is applied

XYPRROT
AmbiX 4ch → AmbiX 4ch
First-order AmbiX rotation (Yaw, Pitch, Roll). Channel A0 is omnidirectional and passes through untouched

M2XHGR
mono → AmbiX 4ch
Mono to AmbiX via Haar Decomposition: the Haar QMF bank haarmn(1) spreads one channel across four spatial components, which are then rotated by Yaw/Pitch/Roll

Faust counterpart: seam.ambisonics.lib.
LR2XHGR
stereo → AmbiX 4ch
Stereo to AmbiX via Haar (Silvi’s method): each channel is Haar-decomposed, placed by a Divergence half-angle, summed, and finally oriented by a global Yaw/Pitch/Roll

Faust counterpart: seam.ambisonics.lib.
ABMODULEX
A-format 4ch → AmbiX 4ch
Tetrahedral microphone A-format to first-order AmbiX: LFU RFD RBU LBD → A0 A1 A2 A3. Pure matrix, involutory (M² = I), the inverse of BAMODULEX, and the front end of the TETRAREC chain

Faust counterpart: seam.ambisonics.lib.
BAMODULEX
AmbiX 4ch → tetrahedral 4ch
Gerzon’s BA-module in the AmbiX domain: a decoder to the LFU · RFD · RBU · LBD vertices, which are the four drivers of a STONE loudspeaker. The Gerzon compensation shelves are omitted by design — the STONE amplifier corrects HF/LF downstream

Faust counterpart: seam.ambisonics.lib.
X2UHJ
AmbiX 4ch → UHJ C-format 4ch
First-order AmbiX (ACN/SN3D) to UHJ C-format (L, R, T, Q) — the “UHJ decoder” that makes an Ambisonic mix audible on two channels. The ±90° quadrature pair is designed live at the host sample rate by the shared seam_quadrature engine, and the GUI reads out the resulting coefficients together with the achieved maximum phase error

Faust counterpart: seam.ambisonics.lib.
Signal generators
LTBURST
none → mono
Linkwitz shaped tone-burst: N = 5 cycles of a sine under a Hann window, repeated at a fixed frequency. Frequency, Dwell and Level are the whole interface

Faust counterpart: seam.linkwitz.lib.
LTGLIDE
none → mono
Linkwitz glissando tone-burst: the carrier of each N = 5 grain is latched from a linear or exponential sweep F0 → F1 spread over a Sweep Time, with grains spaced in step or gap timing. It loops, declares a STONE id, and publishes what it is playing on the calibration bus

Faust counterpart: seam.linkwitz.lib.
MULTIPINK
none → 1..64ch
Multichannel pink noise drawn from a shared 64-slot logical pool, so that separate instances never emit the same stream. Layout-adaptive from mono to 64 channels, band-calibrated (-23/-20/-18 dBFS reference, read as the total RMS at 48 kHz, ±6 dB trim) so that the per-third-octave level an amplifier is set against holds still when the sample rate changes, with a POWER switch, a STONE id, and a calibration-bus announcement

Faust counterpart: seam.filters.lib.
Measurement and processing
STRX
stereo → stereo
Stereo M/S Analyser: goniometer, overlaid M/S Welch spectra, and In L / In R / M / S / Width meters, plus a status line fed by the calibration bus. It observes only — the audio is passed through unchanged and there are no automatable parameters

Faust counterpart: seam.analyzers.lib.
DSLAR
mono → mono
Agostino Di Scipio’s LAR homeostatic loop, hand-ported from LAR.pd: the feedforward half of a Larsen system whose loop is closed acoustically by the room. Drive, loop delay, decorrelation, target, steepness and control smoothing, with live r (Hann RMS) and g (loop gain) readouts

Faust counterpart: seam.discipio.lib.
DDELAY
4ch → 4ch
Quad Alignment Delay for loudspeaker time-alignment. A distance in metres becomes an integer-sample delay at c = 331.4 m/s, rounded up to the next prime so that several instances stay incommensurable. All four channels share one value

HILBERT
mono → stereo
Wideband Quadrature Transformer: one input becomes an in-phase and a quadrature branch held −90° apart from 20 Hz to 20 kHz. Both outputs are all-pass filtered, since the relationship belongs to the pair rather than to either signal. Two topologies — RBJ biquad cascade and Niemitalo polyphase — are selectable live and redesigned per sample rate by the same seam_quadrature engine X2UHJ uses internally

Faust counterpart: seam.filters.lib.
ADDELAY
4ch → 4ch
Air-Absorption Delay: inherits DDELAY’s exact metres-to-samples integer delay (next-prime rounding included) and adds a minimum-phase air-absorption filter fitted to the ISO 9613-1 α·d distance-dependent high-frequency roll-off. Shelf and three-section RBJ high-shelf cascade topologies are switchable live, with an optional 1/r geometric-spreading attenuation. All four channels share one distance, so the inter-channel phase is preserved

Faust counterpart: seam.filters.lib.