01 / Time ↔ frequency
One signal.
Two readings.
The waveform shows amplitude over a shared four-second clock. The spectrogram shows where that energy sits from low to high. The red marker is one time position across both fields.
A generated mono signal is aligned across a waveform and spectrogram. Use the labeled region buttons below to seek to each passage; the static score remains valid if the interactive layer is unavailable.
PLAYBACK IS NEVER AUTOMATIC
02 / Four passages
Name the change.
Each button seeks the same generated fixture to a labeled passage. The numbers are not guesses from a file: they are the parameters used to write the PCM samples.
03 / Observation notebook
The score stays.
This table is the durable reading surface. It is visible in print and remains available when a script, decoder, worker, or CDN cannot complete.
| Segment | Time | Frequency | Reading |
|---|---|---|---|
| Foundation | 0.00–0.80 s | 220 Hz | Low fundamental; a steady floor. |
| Mid band | 0.80–1.80 s | 440 Hz + 880 Hz | Fundamental with a quiet second harmonic. |
| High band | 1.80–2.80 s | 880 Hz | Brighter center with a sharper waveform. |
| Sweep | 2.80–4.00 s | 220 → 1760 Hz | One moving band; the energy travels upward. |
04 / Method and provenance
Plain JavaScript writes a deterministic, mono 44.1 kHz, 16-bit PCM RIFF/WAV Blob in memory. A short-lived object URL feeds the inspection surface; it is revoked when the page is left. There is no remote audio file, microphone, account, or uploaded user content.
WaveSurfer.js 7.12.11 · BSD-3-Clause
Official Spectrogram ESM plugin · same package license
Browser-native ESM from jsDelivr; short fixture keeps decode and FFT work bounded.