Workflow · Flexible monitoring
A file's channel layout and the speakers on your desk rarely match. Specula puts an N→M routing matrix between the two: send any source channel to any output, trim each route in dB, set its phase, and switch the meters between the raw file and the routed result. Nothing you do here touches the file. When the routing is right, render it to a new one.
When the file and the room disagree
Where each channel ends up is a decision, and the matrix is where you make it.
A six-channel file lands on a stereo interface and something has to give: it gets folded, or four channels get dropped, or the centre goes to a speaker you don't have. Checking one channel on its own means bouncing a stem. Hearing what a listener on two speakers will hear means a trip back to the DAW.
The matrix puts that mapping under your control, and it applies to playback only. Route, trim, and phase-shift each output, then meter either side of the routing.
Working the matrix
Open the matrix, patch it by hand or from a preset, then choose which signal you measure.
What the controls actually do
Gain is summed correctly, not naively. Each source contribution to an output carries its own dB value, so two channels landing on the same speaker are attenuated rather than added at unity into clipping. Where the built-in presets use −3 dB, that is 1/√2, the equal-power gain for summing correlated channels.
The fold-down presets come from the published specification. Lo/Ro is the ITU-R BS.775 stereo downmix: the front channel, plus Center at −3 dB, plus the same-side surround at −3 dB. The 7.1 → Lo/Ro preset extends the same rule to both the side and back surround pairs, so the two surround pairs don't stack up on the front channels.
Phase is four states, and two of them are real shifts. The ϕ control cycles a route through 0°, +90°, −90° and 180°. The 180° state is a plain polarity flip. The ±90° states are a broadband Hilbert transform, a genuine quadrature shift across the whole spectrum rather than an inversion. Any fold-down the presets don't cover is built from these parts and saved to your own preset row.
Any 7.1 channel order is measured correctly. Loudness weighting follows ITU-R BS.1770 applied per channel by identity (front channels at full weight, surrounds at +1.5 dB, LFE excluded), so the integrated-loudness number is right whether a 7.1 file arrives in the standard SMPTE order (L R C LFE Ls Rs Lb Rb) that 7.1 WAV uses or in a different layout such as AAC's C Lc Rc L R Ls Rs LFE. 5.1 and smaller layouts are reordered to canonical order on load, and routing works the same across every layout.
Save a routing, share a routing
Your own patches, recalled in a click and portable between machines.
Above the built-in presets is a Saved row for your own routings. Save captures everything currently in the matrix: every output's sources, gains, and phase settings, under a name you choose; saved presets appear when a file and device with matching channel counts are loaded. Export writes all of them to a Specula Routing Presets JSON file, and Import reads one back, appending any presets not already in your library (deduplicated by ID), so a patch you rely on travels to another machine intact. Right-click a saved preset for Rename, Export (just that one), or Delete. They persist across launches and survive future updates.
A monitor setup that doesn't match the files you get is a routing you set once. A stereo pair with a single sub, or a laptop with built-in speakers only, is one saved preset, recalled from the preset row whenever a file needs it.
The matrix at work
Monitor on what you have
Put any channel on any speaker, with per-route gain and phase, and measure either side of the routing. Save the patch for next time, or render it to a new file. The loaded file is a read-only input to all of it.