panicStudios

audio tool

panicStudios audio tool

What this is

A/B/X comparison for audio files. Every loaded track plays in lockstep from a single clock; only the selected one is audible. Switching is a 5 ms gain crossfade, so tracks stay sample-aligned and switches are click-free. Files are decoded in your browser and never uploaded.

Loading

Drop files anywhere on the page or use browse. Any format your browser can decode works (WAV, AIFF, FLAC, MP3, M4A…). Each row shows length, channels, and measured integrated loudness. Add and remove tracks at any time, even while playing.

Comparing

Click a track or press its number to hear it. Playback position is shared, so you always hear the same moment from each file. The waveform shows the selected track; click it to seek. The volume slider is in dB and only affects what you hear, not the meters. Double-click it to reset to 0 dB.

Loop region

Drag across the waveform to set a loop, then drag the in/out handles to refine it. Press I / O to set in/out at the playhead, L to toggle looping, Clear to remove the region. Enter jumps to the loop start (or to 0 with no loop).

Loudness match

Level differences dominate A/B judgements. When enabled, each track is trimmed so its integrated loudness (ITU-R BS.1770-4 / EBU R128) equals the target. Match quietest sets the target to the quietest track so nothing is boosted. A track needing positive gain is flagged, since there is no limiter and it may clip. M toggles.

Meters

Meters read the selected track after loudness match and before the volume slider, so they show what you are comparing. Peak is sample peak per channel with a 1.5 s hold; the top segment latches red on a full-scale sample. RMS is a 300 ms average. M and S are momentary (400 ms) and short-term (3 s) loudness in LUFS. Corr is the L/R correlation over 300 ms: +1 is mono, 0 is uncorrelated, negative means phase problems that will cancel in mono. The goniometer plots L against R rotated so mono is vertical; the spectrum is a log-frequency FFT with a slow-decay peak line. V toggles the panel.

Analyse

Each track row has an Analyse button. It runs a full offline pass over the decoded samples in a background worker and opens a report: loudness (integrated, range, momentary and short-term maxima, streaming-service normalisation), peaks (sample and 4× oversampled true peak, clipping, DC offset), dynamics (RMS, crest factor, peak-to-loudness ratio, TT-style DR, noise floor, leading and trailing silence), stereo (correlation, width, balance, mono sum), and spectrum (long-term average plot, band energy shares, centroid, rolloff, bandwidth, tilt). Download .txt saves the report as plain text; Copy puts the same text on the clipboard. Nothing is uploaded and no AI is involved; the numbers come only from the maths described below.

How the stats are calculated

Decoding. WAV and AIFF/AIFC files are parsed directly: integer PCM at 8–32 bits and 32/64-bit float, at the file's own sample rate, so the rate and bit depth shown are the file's and the samples are untouched. Other formats (MP3, AAC, FLAC, OGG…) go through the browser's decoder, which resamples to the output device rate and does not report bit depth; those rows are marked "browser decoded". Playback always runs at the output rate shown in the header, with the browser resampling on the fly where a file differs.

Integrated loudness follows ITU-R BS.1770-4. Each channel passes through the K-weighting filter: a second-order high shelf (+4 dB above ~1.5 kHz, f₀ = 1681.97 Hz, Q = 0.7072) followed by a second-order high-pass (f₀ = 38.14 Hz, Q = 0.5003). Coefficients are derived for the actual sample rate with the bilinear transform, so 44.1, 48, 88.2 and 96 kHz files are all measured correctly. Mean-square power is taken in 400 ms blocks with 75 % overlap (100 ms hop), summed across channels with the standard channel weights (1.0 for L/R/C, 1.41 for surrounds). Blocks below −70 LKFS absolute are dropped, then blocks more than 10 LU below the mean of what remains are dropped (relative gate), and the result is −0.691 + 10·log₁₀ of the mean power of the surviving blocks. The live M and S meters are the same K-weighted power over 400 ms and 3 s windows without gating; the report's maxima are the largest values those windows reach.

Loudness range (LRA) follows EBU Tech 3342: the short-term (3 s) loudness series is gated at −70 LUFS absolute and then at −20 LU relative to its mean; LRA is the difference between the 95th and 10th percentiles of the survivors.

Streaming normalisation is simply the service's published playback target minus the integrated loudness: Spotify, YouTube, Amazon and Tidal −14 LUFS, Apple Music −16, Deezer −15. A negative number is how far the service will turn the track down. Whether a service turns quiet tracks up depends on its settings and on peak headroom, so positive deltas are only indicative.

Sample peak is the largest absolute sample value per channel. True peak estimates inter-sample peaks by 4× oversampling as in BS.1770 Annex 2: around every sample within 6 dB of the sample peak, three fractional positions are reconstructed with a 16-tap Blackman-windowed sinc interpolator and the largest magnitude is kept. This is a lower bound on the analogue peak but matches dedicated true-peak meters to within a few tenths of a dB. Clipping counts runs of three or more consecutive samples at or above 0.999 full scale (−0.01 dBFS); each run is one event. DC offset is the mean sample value per channel, reported as the largest magnitude across channels in percent of full scale.

RMS is the root of the mean-square of the whole file, with channel powers averaged. Crest factor is sample peak minus RMS in dB, averaged across channels. Peak to loudness ratio is true peak (dBTP) minus integrated loudness (LUFS), the usual gauge of how much limiting has been applied. DR reproduces the TT Dynamic Range Meter method: per channel, 3 s blocks are measured for RMS and peak; the RMS values of the loudest 20 % of blocks are power-averaged and expressed with the AES17 +3 dB sine convention; DR is the second-highest block peak minus that RMS, in dB, averaged across channels and rounded for the DRxx figure. Noise floor is the RMS of the quietest 400 ms block between the first and last sample exceeding −60 dBFS; leading and trailing silence are the time before the first and after the last such sample.

Correlation is the Pearson correlation of L and R over the whole file, Σ(L·R)/√(ΣL²·ΣR²): +1 for identical channels, 0 for unrelated, −1 for inverted. The live meter uses the same formula with 300 ms leaky integrators. Width is the side signal power (L−R)/2 relative to the mid signal (L+R)/2 in dB; −∞ is pure mono. Balance is the L power minus R power in dB. Mono sum is the mid power relative to the average channel power, i.e. how much level changes when the mix is folded to mono; −3 dB means fully uncorrelated, below that means cancellation.

Spectrum is a long-term average: 4096-point FFTs with a Hann window and 50 % overlap over the whole file, power-averaged per bin and per channel, scaled so a full-scale sine reads 0 dBFS at its bin. The plot shows the maximum per log-spaced pixel column. Band shares are the fraction of total 20 Hz–20 kHz power in each band (sub 20–60, bass 60–250, low mid 250–500, mid 500–2k, high mid 2–6k, high 6–20k). Centroid is the power-weighted mean frequency, a rough brightness measure. Rolloff is the frequency below which 95 % of the power lies. Bandwidth is the highest frequency whose average level is within 60 dB of the spectral peak; a hard stop near 16–19 kHz usually means the file has been through a lossy codec or a low-rate resample. Tilt is the slope of a least-squares line fitted to the dB spectrum against log₂(frequency) between 100 Hz and 10 kHz; most mastered music sits around −3 to −6 dB per octave.

Blind ABX

Pick two tracks as A and B. X is secretly one of them, re-drawn each trial. Listen to A, B, and X as often as you like, then vote [ (X is A) or ] (X is B). The result is revealed; N starts the next trial. The running score shows a p-value: the chance of doing at least that well by guessing. Below about 0.05 you are reliably hearing a difference.

Keyboard

SpacePlay / pause19Select track
EnterRewindMLoudness match on/off
I OLoop in / out at playheadVMeters on/off
LLoop on/offA B XListen (blind mode)
?This help[ ] NVote X is A / X is B, next trial

Notes

  • Audio is resampled to your device's output rate (shown top left). For a bit-exact comparison, set the system output rate to match the files first.
  • Compare files of equal length. A track shorter than the loop-out point drifts after the first wrap.
  • Large files decode fully into memory (about 10 MB per stereo minute).

Analysis

Starting…
Drop audio files here, or . Files stay in your browser.
    0:00.000 / 0:00.000
    Vol0.0 dB
    −60−48−36 −24−12−60
    Peak L
    −∞ dBFS
    Peak R
    −∞ dBFS
    RMS
    −∞ dBFS
    M
    −∞ LUFS
    S
    −∞ LUFS
    Corr
    0.00