What you are looking at
Each recording becomes one ribbon. Time runs left to right. By default every ribbon uses the same number of seconds per pixel, so a longer piece makes a longer ribbon. Height is loudness: the RMS of the samples, gathered per pixel column, normalized per recording, then smoothed and mirrored around the center line. Color is brightness: the spectral centroid, which is the "centre of mass" of the spectrum. Bright, treble-heavy passages are high, dark, bass-heavy passages are low. Color is on a log scale and spans the 2nd to 98th percentile of that recording's own centroids, so each row uses the full palette. Silence draws as a thin grey line.
Analysis runs in your browser. Each file is decoded with the Web Audio API and mixed to mono. A 2048-sample Hann-windowed FFT runs every 1024 samples (about 21 ms). The microphone gives a live preview from an AnalyserNode. When you stop, the recording itself is analyzed with the same code as files, and you can play it back. Click a ribbon to play from that point.
Key figures
- Loudness (LUFS) follows ITU-R BS.1770-4, the measure behind the EBU R128 broadcast standard. The signal is K-weighted (a high shelf around 1.7 kHz and a 38 Hz high-pass). The mean power of 400 ms blocks is taken every 100 ms, blocks below −70 LUFS are dropped, then blocks more than 10 LU under the average. The implementation reproduces the standard's coefficient table and its −23 LUFS test tone. On the four example files it agrees with pyloudnorm to within 0.05 LU, and that small offset is pyloudnorm's: its default filter uses rounded parameters and reads −23.04 on the same test tone.
- Loudness range (LU) follows EBU Tech 3342: the spread between the 10th and 95th percentile of 3-second loudness, ignoring anything 20 LU under the average. Quiet intros and big climaxes raise it.
- Peak is the largest sample in dBFS. A decoded lossy file can exceed 0 dBFS; the table marks that as "over full scale". Peak-to-loudness is peak minus loudness, a standard measure of how much headroom transients have. Heavily compressed pop sits under 10 dB, while acoustic classical recordings often reach 18–20.
- Tempo is the autocorrelation peak of the onset envelope between 40 and 220 BPM, with a mild preference for beats near 120. Classical performances with rubato or triplet motion often lock onto a multiple or a fraction of the written beat. The beat-strength note says how periodic the onsets really are.
- Key correlates the detected notes' pitch-class profile with the Krumhansl–Kessler profiles for all 24 keys; r is that correlation. A close runner-up, typically the dominant, parallel or relative key, is named. Für Elise, the Moonlight Sonata and Ride of the Valkyries come out as A minor, C♯ minor and B minor. Danse macabre, written in G minor, reads D minor, the note its harp tolls at the start.
- Pitch range runs from the 5th to the 95th percentile of the detected notes. The 1921 acoustic recording of the Valkyries has almost no bass left, so its range starts at G3. Brightness and roughness are medians over the audible frames. Notes counts onsets per second of playing, and quiet is the share of frames more than 36 dB under the recording's loud level.
File formats: whatever your browser decodes. WAV, MP3, FLAC and AAC work everywhere. Ogg Vorbis and Opus work in Chrome, Edge and Firefox, and in recent Safari. Example recordings, all public domain, fetched from Wikimedia Commons when you pick them:
- Für Elise, performed by V Gao.
- Moonlight Sonata, 1st mvt, via Musopen.
- Danse macabre, Philadelphia Orchestra under Leopold Stokowski, Victor, 29 April 1925, one of the early electrical recordings.
- Ride of the Valkyries, American Symphony Orchestra, Edison Diamond Disc 80638-R, December 1921, an acoustic recording.