Workflow · Reference comparison
The louder version always sounds better, which is exactly why an A/B you can't level-match lies to you. Specula loads up to six versions side by side, matches them by integrated LUFS so level is out of the way, aligns them to the sample, and computes the A−X residual: the part that's actually different between two masters, turned into its own waveform you can solo, scrub, and export.
Why you can't trust the A/B
When you can't level-match precisely, you can't trust the comparison, and you definitely can't see what changed.
Half a dB louder reads as "better" to the ear, every time. So a raw A/B between rev 3 and rev 4 measures loudness bias, not the change you made. Until level is out of the equation, the comparison answers the wrong question. Specula normalises the versions by integrated LUFS first, so what you hear after that is the difference you actually introduced: the EQ move, the limiter change, the new master chain, not a level mismatch wearing its clothes.
The workflow
Load the versions, take level and alignment out of the way, then listen to what's left.
The residual is the answer
What changed becomes its own waveform. The diff slot is a virtual slot that plays back the A − X residual, the sample-by-sample subtraction of the active version from the reference. Once level and timing are matched, everything the two versions share cancels to silence, and what's left is the change itself. You route that residual through the same waveform, spectrogram, and export paths as any other slot, so you can see where in the file the difference lives and how loud it is, not just hear that something moved.
Polarity matters for the subtraction. Each slot has a ϕ toggle that flips polarity, useful for catching a wiring error, and for diff work where flipping one signal is what makes the residual sit closer to zero. The diff slot recomputes automatically (80 ms debounced) whenever nudge, gain, polarity, or level-match changes, so the residual always reflects your current alignment. It has no live measurement of its own, switching to a diff slot clears the live loudness and stereo displays, because the diff buffer plays pre-computed.
Or overlay instead of subtract. The Waveform A overlay toggle draws slot A's waveform as a ghost behind whichever slot is active, a direct visual A/B at the sample level without leaving the active version. And the Compare metrics popover puts every loaded slot side by side in one table: integrated LUFS, true peak, sample peak, LRA, DR, speech stats. Read the numbers and hear the residual, from the same comparison.
See it in Specula
Settle the comparison
Specula is the pass between "I think this revision is better" and knowing it is. It level-matches the versions, aligns them, and hands you the difference as audio and as numbers, so the answer to "better or just louder?" stops being a guess.