Spectrogram chart
Show how a signal's frequencies change over time. Raw samples go through a short-time Fourier transform; time runs across, frequency up, and loudness is the shade.
Doorbell
Two struck tones and their harmonics, on a log frequency scale so each octave gets equal height.
| Time | Peak frequency | Peak level |
|---|---|---|
| 0.0 s | 8 kHz | -200.0 dB |
| 0.0 s | 8 kHz | -200.0 dB |
| 0.0 s | 8 kHz | -200.0 dB |
| 0.1 s | 8 kHz | -200.0 dB |
| 0.1 s | 8 kHz | -200.0 dB |
| 0.1 s | 609.4 Hz | -62.4 dB |
| 0.1 s | 656.2 Hz | -34.8 dB |
| 0.1 s | 656.2 Hz | -22.7 dB |
| 0.1 s | 656.2 Hz | -15.6 dB |
| 0.1 s | 656.2 Hz | -11.4 dB |
| 0.1 s | 656.2 Hz | -9.0 dB |
| 0.1 s | 656.2 Hz | -7.9 dB |
| 0.1 s | 656.2 Hz | -7.8 dB |
| 0.1 s | 656.2 Hz | -8.0 dB |
| 0.1 s | 656.2 Hz | -8.1 dB |
| 0.2 s | 656.2 Hz | -8.3 dB |
| 0.2 s | 656.2 Hz | -8.5 dB |
| 0.2 s | 656.2 Hz | -8.7 dB |
| 0.2 s | 656.2 Hz | -8.9 dB |
| 0.2 s | 656.2 Hz | -9.0 dB |
| 0.2 s | 656.2 Hz | -9.2 dB |
| 0.2 s | 656.2 Hz | -9.4 dB |
| 0.2 s | 656.2 Hz | -9.6 dB |
| 0.2 s | 656.2 Hz | -9.8 dB |
| 0.2 s | 656.2 Hz | -9.9 dB |
| 0.2 s | 656.2 Hz | -10.1 dB |
| 0.2 s | 656.2 Hz | -10.3 dB |
| 0.2 s | 656.2 Hz | -10.5 dB |
| 0.3 s | 656.2 Hz | -10.7 dB |
| 0.3 s | 656.2 Hz | -10.8 dB |
| 0.3 s | 656.2 Hz | -11.0 dB |
| 0.3 s | 656.2 Hz | -11.2 dB |
| 0.3 s | 656.2 Hz | -11.4 dB |
| 0.3 s | 656.2 Hz | -11.6 dB |
| 0.3 s | 656.2 Hz | -11.8 dB |
| 0.3 s | 656.2 Hz | -11.9 dB |
| 0.3 s | 656.2 Hz | -12.1 dB |
| 0.3 s | 656.2 Hz | -12.3 dB |
| 0.3 s | 656.2 Hz | -12.5 dB |
| 0.3 s | 656.2 Hz | -12.7 dB |
| 0.4 s | 656.2 Hz | -12.8 dB |
| 0.4 s | 656.2 Hz | -13.0 dB |
| 0.4 s | 656.2 Hz | -13.2 dB |
| 0.4 s | 656.2 Hz | -13.4 dB |
| 0.4 s | 656.2 Hz | -13.6 dB |
| 0.4 s | 656.2 Hz | -13.7 dB |
| 0.4 s | 656.2 Hz | -13.9 dB |
| 0.4 s | 656.2 Hz | -14.1 dB |
| 0.4 s | 656.2 Hz | -14.3 dB |
| 0.4 s | 656.2 Hz | -14.5 dB |
| 0.4 s | 656.2 Hz | -14.6 dB |
| 0.4 s | 656.2 Hz | -14.8 dB |
| 0.4 s | 656.2 Hz | -15.0 dB |
| 0.5 s | 656.2 Hz | -15.2 dB |
| 0.5 s | 656.2 Hz | -15.4 dB |
| 0.5 s | 656.2 Hz | -15.5 dB |
| 0.5 s | 656.2 Hz | -15.7 dB |
| 0.5 s | 656.2 Hz | -15.9 dB |
| 0.5 s | 656.2 Hz | -16.1 dB |
| 0.5 s | 656.2 Hz | -16.3 dB |
| 0.5 s | 656.2 Hz | -16.5 dB |
| 0.5 s | 656.2 Hz | -16.6 dB |
| 0.5 s | 656.2 Hz | -16.8 dB |
| 0.5 s | 656.2 Hz | -17.0 dB |
| 0.5 s | 656.2 Hz | -17.2 dB |
| 0.6 s | 656.2 Hz | -17.4 dB |
| 0.6 s | 656.2 Hz | -17.5 dB |
| 0.6 s | 656.2 Hz | -17.7 dB |
| 0.6 s | 656.2 Hz | -17.9 dB |
| 0.6 s | 656.2 Hz | -18.1 dB |
| 0.6 s | 656.2 Hz | -18.3 dB |
| 0.6 s | 656.2 Hz | -18.4 dB |
| 0.6 s | 656.2 Hz | -18.6 dB |
| 0.6 s | 656.2 Hz | -18.8 dB |
| 0.6 s | 656.2 Hz | -19.0 dB |
| 0.6 s | 656.2 Hz | -19.2 dB |
| 0.6 s | 656.2 Hz | -19.3 dB |
| 0.6 s | 656.2 Hz | -19.5 dB |
| 0.7 s | 656.2 Hz | -19.7 dB |
| 0.7 s | 656.2 Hz | -19.9 dB |
| 0.7 s | 656.2 Hz | -20.1 dB |
| 0.7 s | 656.2 Hz | -20.2 dB |
| 0.7 s | 656.2 Hz | -20.4 dB |
| 0.7 s | 656.2 Hz | -20.6 dB |
| 0.7 s | 656.2 Hz | -20.8 dB |
| 0.7 s | 656.2 Hz | -21.0 dB |
| 0.7 s | 656.2 Hz | -21.1 dB |
| 0.7 s | 656.2 Hz | -21.3 dB |
| 0.7 s | 656.2 Hz | -21.5 dB |
| 0.7 s | 656.2 Hz | -21.7 dB |
| 0.8 s | 656.2 Hz | -21.9 dB |
| 0.8 s | 656.2 Hz | -22.1 dB |
| 0.8 s | 656.2 Hz | -22.2 dB |
| 0.8 s | 656.2 Hz | -22.4 dB |
| 0.8 s | 656.2 Hz | -22.6 dB |
| 0.8 s | 656.2 Hz | -22.8 dB |
| 0.8 s | 656.2 Hz | -23.0 dB |
| 0.8 s | 656.2 Hz | -23.1 dB |
| 0.8 s | 656.2 Hz | -23.3 dB |
| 0.8 s | 656.2 Hz | -23.5 dB |
| 0.8 s | 656.2 Hz | -23.7 dB |
| 0.8 s | 656.2 Hz | -23.9 dB |
| 0.8 s | 656.2 Hz | -24.0 dB |
| 0.9 s | 656.2 Hz | -24.2 dB |
| 0.9 s | 656.2 Hz | -24.4 dB |
| 0.9 s | 656.2 Hz | -24.6 dB |
| 0.9 s | 656.2 Hz | -25.2 dB |
| 0.9 s | 515.6 Hz | -22.7 dB |
| 0.9 s | 515.6 Hz | -15.8 dB |
| 0.9 s | 515.6 Hz | -11.8 dB |
| 0.9 s | 515.6 Hz | -9.7 dB |
| 0.9 s | 515.6 Hz | -8.9 dB |
| 0.9 s | 515.6 Hz | -8.9 dB |
| 0.9 s | 515.6 Hz | -9.1 dB |
| 0.9 s | 515.6 Hz | -9.3 dB |
| 1.0 s | 515.6 Hz | -9.5 dB |
| 1.0 s | 515.6 Hz | -9.7 dB |
| 1.0 s | 515.6 Hz | -9.8 dB |
| 1.0 s | 515.6 Hz | -10.0 dB |
| 1.0 s | 515.6 Hz | -10.2 dB |
| 1.0 s | 515.6 Hz | -10.4 dB |
| 1 s | 515.6 Hz | -10.6 dB |
| 1.0 s | 515.6 Hz | -10.7 dB |
| 1.0 s | 515.6 Hz | -10.9 dB |
| 1.0 s | 515.6 Hz | -11.1 dB |
| 1.0 s | 515.6 Hz | -11.3 dB |
| 1.0 s | 515.6 Hz | -11.5 dB |
| 1.0 s | 515.6 Hz | -11.6 dB |
| 1.1 s | 515.6 Hz | -11.8 dB |
| 1.1 s | 515.6 Hz | -12.0 dB |
| 1.1 s | 515.6 Hz | -12.2 dB |
| 1.1 s | 515.6 Hz | -12.4 dB |
| 1.1 s | 515.6 Hz | -12.5 dB |
| 1.1 s | 515.6 Hz | -12.7 dB |
| 1.1 s | 515.6 Hz | -12.9 dB |
| 1.1 s | 515.6 Hz | -13.1 dB |
| 1.1 s | 515.6 Hz | -13.3 dB |
| 1.1 s | 515.6 Hz | -13.5 dB |
| 1.1 s | 515.6 Hz | -13.6 dB |
| 1.1 s | 515.6 Hz | -13.8 dB |
| 1.2 s | 515.6 Hz | -14.0 dB |
| 1.2 s | 515.6 Hz | -14.2 dB |
| 1.2 s | 515.6 Hz | -14.4 dB |
| 1.2 s | 515.6 Hz | -14.5 dB |
| 1.2 s | 515.6 Hz | -14.7 dB |
| 1.2 s | 515.6 Hz | -14.9 dB |
| 1.2 s | 515.6 Hz | -15.1 dB |
| 1.2 s | 515.6 Hz | -15.3 dB |
| 1.2 s | 515.6 Hz | -15.4 dB |
| 1.2 s | 515.6 Hz | -15.6 dB |
| 1.2 s | 515.6 Hz | -15.8 dB |
| 1.2 s | 515.6 Hz | -16.0 dB |
| 1.2 s | 515.6 Hz | -16.2 dB |
| 1.3 s | 515.6 Hz | -16.3 dB |
| 1.3 s | 515.6 Hz | -16.5 dB |
| 1.3 s | 515.6 Hz | -16.7 dB |
| 1.3 s | 515.6 Hz | -16.9 dB |
| 1.3 s | 515.6 Hz | -17.1 dB |
| 1.3 s | 515.6 Hz | -17.2 dB |
| 1.3 s | 515.6 Hz | -17.4 dB |
| 1.3 s | 515.6 Hz | -17.6 dB |
| 1.3 s | 515.6 Hz | -17.8 dB |
| 1.3 s | 515.6 Hz | -18.0 dB |
| 1.3 s | 515.6 Hz | -18.2 dB |
| 1.3 s | 515.6 Hz | -18.3 dB |
| 1.4 s | 515.6 Hz | -18.5 dB |
| 1.4 s | 515.6 Hz | -18.7 dB |
| 1.4 s | 515.6 Hz | -18.9 dB |
| 1.4 s | 515.6 Hz | -19.1 dB |
| 1.4 s | 515.6 Hz | -19.2 dB |
| 1.4 s | 515.6 Hz | -19.4 dB |
| 1.4 s | 515.6 Hz | -19.6 dB |
| 1.4 s | 515.6 Hz | -19.8 dB |
| 1.4 s | 515.6 Hz | -20.0 dB |
| 1.4 s | 515.6 Hz | -20.1 dB |
| 1.4 s | 515.6 Hz | -20.3 dB |
| 1.4 s | 515.6 Hz | -20.5 dB |
| 1.4 s | 515.6 Hz | -20.7 dB |
| 1.5 s | 515.6 Hz | -20.9 dB |
| 1.5 s | 515.6 Hz | -21.0 dB |
| 1.5 s | 515.6 Hz | -21.2 dB |
| 1.5 s | 515.6 Hz | -21.4 dB |
| 1.5 s | 515.6 Hz | -21.6 dB |
| 1.5 s | 515.6 Hz | -21.8 dB |
| 1.5 s | 515.6 Hz | -21.9 dB |
| 1.5 s | 515.6 Hz | -22.1 dB |
| 1.5 s | 515.6 Hz | -22.3 dB |
| 1.5 s | 515.6 Hz | -22.5 dB |
| 1.5 s | 515.6 Hz | -22.7 dB |
| 1.5 s | 515.6 Hz | -22.8 dB |
| 1.6 s | 515.6 Hz | -23.0 dB |
| 1.6 s | 515.6 Hz | -23.2 dB |
| 1.6 s | 515.6 Hz | -23.4 dB |
| 1.6 s | 515.6 Hz | -23.6 dB |
| 1.6 s | 515.6 Hz | -23.8 dB |
| 1.6 s | 515.6 Hz | -23.9 dB |
| 1.6 s | 515.6 Hz | -24.1 dB |
| 1.6 s | 515.6 Hz | -24.3 dB |
| 1.6 s | 515.6 Hz | -24.5 dB |
| 1.6 s | 515.6 Hz | -24.7 dB |
| 1.6 s | 515.6 Hz | -24.8 dB |
| 1.6 s | 515.6 Hz | -25.0 dB |
| 1.6 s | 515.6 Hz | -25.2 dB |
| 1.7 s | 515.6 Hz | -25.4 dB |
| 1.7 s | 515.6 Hz | -25.6 dB |
| 1.7 s | 515.6 Hz | -25.7 dB |
| 1.7 s | 515.6 Hz | -25.9 dB |
| 1.7 s | 515.6 Hz | -26.1 dB |
| 1.7 s | 515.6 Hz | -26.3 dB |
| 1.7 s | 515.6 Hz | -26.5 dB |
| 1.7 s | 515.6 Hz | -26.6 dB |
| 1.7 s | 515.6 Hz | -26.8 dB |
| 1.7 s | 515.6 Hz | -27.0 dB |
| 1.7 s | 515.6 Hz | -27.2 dB |
| 1.7 s | 515.6 Hz | -27.4 dB |
| 1.8 s | 515.6 Hz | -27.5 dB |
| 1.8 s | 515.6 Hz | -27.7 dB |
| 1.8 s | 515.6 Hz | -27.9 dB |
| 1.8 s | 515.6 Hz | -28.1 dB |
| 1.8 s | 515.6 Hz | -28.3 dB |
| 1.8 s | 515.6 Hz | -28.4 dB |
| 1.8 s | 515.6 Hz | -28.6 dB |
| 1.8 s | 515.6 Hz | -28.8 dB |
| 1.8 s | 515.6 Hz | -29.0 dB |
| 1.8 s | 515.6 Hz | -29.2 dB |
| 1.8 s | 515.6 Hz | -29.4 dB |
| 1.8 s | 515.6 Hz | -29.5 dB |
| 1.8 s | 515.6 Hz | -29.7 dB |
| 1.9 s | 515.6 Hz | -29.9 dB |
| 1.9 s | 515.6 Hz | -30.1 dB |
| 1.9 s | 515.6 Hz | -30.3 dB |
| 1.9 s | 515.6 Hz | -30.4 dB |
| 1.9 s | 515.6 Hz | -30.6 dB |
| 1.9 s | 515.6 Hz | -30.8 dB |
| 1.9 s | 515.6 Hz | -31.0 dB |
| 1.9 s | 515.6 Hz | -31.2 dB |
| 1.9 s | 515.6 Hz | -31.3 dB |
| 1.9 s | 515.6 Hz | -31.5 dB |
| 1.9 s | 515.6 Hz | -31.7 dB |
| 1.9 s | 515.6 Hz | -31.9 dB |
| 2.0 s | 515.6 Hz | -32.1 dB |
| 2.0 s | 515.6 Hz | -32.2 dB |
| 2.0 s | 515.6 Hz | -32.4 dB |
Bird call
Three rising chirps, each sweeping from 2 to 6 kHz.
| Time | Peak frequency | Peak level |
|---|---|---|
| 0.0 s | 4.1 kHz | -67.6 dB |
| 0.0 s | 4.1 kHz | -68.6 dB |
| 0.0 s | 6.5 kHz | -68.7 dB |
| 0.0 s | 4.2 kHz | -68.0 dB |
| 0.0 s | 2.4 kHz | -69.0 dB |
| 0.0 s | 2.4 kHz | -67.0 dB |
| 0.0 s | 6.3 kHz | -68.4 dB |
| 0.0 s | 3.6 kHz | -68.9 dB |
| 0.0 s | 2.1 kHz | -69.2 dB |
| 0.0 s | 6.6 kHz | -68.7 dB |
| 0.0 s | 2.1 kHz | -48.3 dB |
| 0.1 s | 2.1 kHz | -34.1 dB |
| 0.1 s | 2.1 kHz | -26.6 dB |
| 0.1 s | 2.2 kHz | -22.5 dB |
| 0.1 s | 2.2 kHz | -19.8 dB |
| 0.1 s | 2.3 kHz | -17.9 dB |
| 0.1 s | 2.4 kHz | -16.6 dB |
| 0.1 s | 2.5 kHz | -15.2 dB |
| 0.1 s | 2.6 kHz | -13.6 dB |
| 0.1 s | 2.6 kHz | -12.4 dB |
| 0.1 s | 2.7 kHz | -11.4 dB |
| 0.1 s | 2.8 kHz | -10.7 dB |
| 0.1 s | 2.8 kHz | -10.3 dB |
| 0.1 s | 2.9 kHz | -10.1 dB |
| 0.1 s | 3 kHz | -9.5 dB |
| 0.1 s | 3.1 kHz | -8.6 dB |
| 0.1 s | 3.1 kHz | -8.0 dB |
| 0.1 s | 3.2 kHz | -7.5 dB |
| 0.1 s | 3.2 kHz | -7.3 dB |
| 0.1 s | 3.3 kHz | -7.3 dB |
| 0.1 s | 3.4 kHz | -7.5 dB |
| 0.1 s | 3.5 kHz | -6.9 dB |
| 0.1 s | 3.6 kHz | -6.4 dB |
| 0.1 s | 3.6 kHz | -6.1 dB |
| 0.1 s | 3.7 kHz | -6.0 dB |
| 0.1 s | 3.8 kHz | -6.0 dB |
| 0.2 s | 3.8 kHz | -6.3 dB |
| 0.2 s | 3.9 kHz | -6.6 dB |
| 0.2 s | 4 kHz | -6.1 dB |
| 0.2 s | 4.1 kHz | -5.8 dB |
| 0.2 s | 4.1 kHz | -5.8 dB |
| 0.2 s | 4.2 kHz | -5.9 dB |
| 0.2 s | 4.2 kHz | -6.2 dB |
| 0.2 s | 4.3 kHz | -6.8 dB |
| 0.2 s | 4.4 kHz | -6.9 dB |
| 0.2 s | 4.5 kHz | -6.7 dB |
| 0.2 s | 4.6 kHz | -6.7 dB |
| 0.2 s | 4.6 kHz | -6.9 dB |
| 0.2 s | 4.7 kHz | -7.3 dB |
| 0.2 s | 4.8 kHz | -8.0 dB |
| 0.2 s | 4.8 kHz | -8.8 dB |
| 0.2 s | 4.9 kHz | -8.9 dB |
| 0.2 s | 5 kHz | -9.1 dB |
| 0.2 s | 5.1 kHz | -9.4 dB |
| 0.2 s | 5.1 kHz | -10.0 dB |
| 0.2 s | 5.2 kHz | -10.9 dB |
| 0.2 s | 5.2 kHz | -12.0 dB |
| 0.2 s | 5.4 kHz | -13.3 dB |
| 0.2 s | 5.4 kHz | -13.9 dB |
| 0.2 s | 5.5 kHz | -14.7 dB |
| 0.2 s | 5.6 kHz | -16.0 dB |
| 0.3 s | 5.6 kHz | -17.7 dB |
| 0.3 s | 5.7 kHz | -19.9 dB |
| 0.3 s | 5.8 kHz | -22.9 dB |
| 0.3 s | 5.8 kHz | -27.2 dB |
| 0.3 s | 5.9 kHz | -34.7 dB |
| 0.3 s | 5.9 kHz | -50.7 dB |
| 0.3 s | 5.7 kHz | -67.5 dB |
| 0.3 s | 2.4 kHz | -67.8 dB |
| 0.3 s | 2.6 kHz | -67.9 dB |
| 0.3 s | 6.4 kHz | -70.1 dB |
| 0.3 s | 7.4 kHz | -66.7 dB |
| 0.3 s | 7.4 kHz | -67.8 dB |
| 0.3 s | 5.8 kHz | -68.1 dB |
| 0.3 s | 7.6 kHz | -68.3 dB |
| 0.3 s | 4.9 kHz | -67.9 dB |
| 0.3 s | 7.3 kHz | -67.7 dB |
| 0.3 s | 7.4 kHz | -67.8 dB |
| 0.3 s | 5.3 kHz | -66.9 dB |
| 0.3 s | 1.9 kHz | -68.5 dB |
| 0.3 s | 4.6 kHz | -67.5 dB |
| 0.3 s | 4.8 kHz | -69.3 dB |
| 0.3 s | 6.7 kHz | -68.7 dB |
| 0.3 s | 1.1 kHz | -68.5 dB |
| 0.3 s | 1.1 kHz | -68.5 dB |
| 0.3 s | 5.8 kHz | -68.4 dB |
| 0.4 s | 2.9 kHz | -69.2 dB |
| 0.4 s | 2.2 kHz | -67.3 dB |
| 0.4 s | 6.8 kHz | -68.0 dB |
| 0.4 s | 6.7 kHz | -67.9 dB |
| 0.4 s | 6.7 kHz | -68.2 dB |
| 0.4 s | 7.9 kHz | -67.2 dB |
| 0.4 s | 7.9 kHz | -67.9 dB |
| 0.4 s | 1.4 kHz | -69.5 dB |
| 0.4 s | 1.5 kHz | -67.8 dB |
| 0.4 s | 625 Hz | -69.4 dB |
| 0.4 s | 2.1 kHz | -68.0 dB |
| 0.4 s | 2.2 kHz | -67.0 dB |
| 0.4 s | 1.9 kHz | -67.7 dB |
| 0.4 s | 1.9 kHz | -65.7 dB |
| 0.4 s | 6.7 kHz | -68.5 dB |
| 0.4 s | 7.8 kHz | -68.9 dB |
| 0.4 s | 3.2 kHz | -67.6 dB |
| 0.4 s | 3.2 kHz | -65.1 dB |
| 0.4 s | 3.1 kHz | -66.6 dB |
| 0.4 s | 500 Hz | -68.9 dB |
| 0.4 s | 2.1 kHz | -67.9 dB |
| 0.4 s | 2.1 kHz | -65.5 dB |
| 0.4 s | 2 kHz | -67.2 dB |
| 0.4 s | 4.6 kHz | -68.7 dB |
| 0.4 s | 4.6 kHz | -67.4 dB |
| 0.5 s | 4.3 kHz | -67.4 dB |
| 0.5 s | 8 kHz | -66.2 dB |
| 0.5 s | 8 kHz | -67.5 dB |
| 0.5 s | 6.8 kHz | -68.3 dB |
| 0.5 s | 312.5 Hz | -68.6 dB |
| 0.5 s | 7 kHz | -68.6 dB |
| 0.5 s | 1.9 kHz | -68.3 dB |
| 0.5 s | 1.3 kHz | -67.4 dB |
| 0.5 s | 4.6 kHz | -66.5 dB |
| 0.5 s | 1.2 kHz | -68.6 dB |
| 0.5 s | 1.2 kHz | -66.3 dB |
| 0.5 s | 1.2 kHz | -66.4 dB |
| 0.5 s | 5.2 kHz | -66.5 dB |
| 0.5 s | 2.9 kHz | -68.0 dB |
| 0.5 s | 1.2 kHz | -68.4 dB |
| 0.5 s | 5.8 kHz | -68.0 dB |
| 0.5 s | 1 kHz | -68.5 dB |
| 0.5 s | 3 kHz | -68.6 dB |
| 0.5 s | 3.4 kHz | -67.0 dB |
| 0.5 s | 6.1 kHz | -68.6 dB |
| 0.5 s | 1.4 kHz | -67.8 dB |
| 0.5 s | 2.7 kHz | -69.0 dB |
| 0.5 s | 7.1 kHz | -69.1 dB |
| 0.5 s | 4.1 kHz | -67.4 dB |
| 0.5 s | 2.1 kHz | -48.1 dB |
| 0.6 s | 2.1 kHz | -34.1 dB |
| 0.6 s | 2.1 kHz | -26.6 dB |
| 0.6 s | 2.2 kHz | -22.5 dB |
| 0.6 s | 2.2 kHz | -19.8 dB |
| 0.6 s | 2.3 kHz | -17.9 dB |
| 0.6 s | 2.4 kHz | -16.6 dB |
| 0.6 s | 2.5 kHz | -15.2 dB |
| 0.6 s | 2.6 kHz | -13.6 dB |
| 0.6 s | 2.6 kHz | -12.4 dB |
| 0.6 s | 2.7 kHz | -11.4 dB |
| 0.6 s | 2.8 kHz | -10.7 dB |
| 0.6 s | 2.8 kHz | -10.3 dB |
| 0.6 s | 2.9 kHz | -10.1 dB |
| 0.6 s | 3 kHz | -9.5 dB |
| 0.6 s | 3.1 kHz | -8.6 dB |
| 0.6 s | 3.1 kHz | -8.0 dB |
| 0.6 s | 3.2 kHz | -7.5 dB |
| 0.6 s | 3.2 kHz | -7.3 dB |
| 0.6 s | 3.3 kHz | -7.3 dB |
| 0.6 s | 3.4 kHz | -7.5 dB |
| 0.6 s | 3.5 kHz | -6.9 dB |
| 0.6 s | 3.6 kHz | -6.4 dB |
| 0.6 s | 3.6 kHz | -6.1 dB |
| 0.6 s | 3.7 kHz | -6.0 dB |
| 0.6 s | 3.8 kHz | -6.0 dB |
| 0.7 s | 3.8 kHz | -6.3 dB |
| 0.7 s | 3.9 kHz | -6.6 dB |
| 0.7 s | 4 kHz | -6.1 dB |
| 0.7 s | 4.1 kHz | -5.8 dB |
| 0.7 s | 4.1 kHz | -5.8 dB |
| 0.7 s | 4.2 kHz | -5.9 dB |
| 0.7 s | 4.2 kHz | -6.2 dB |
| 0.7 s | 4.3 kHz | -6.8 dB |
| 0.7 s | 4.4 kHz | -6.9 dB |
| 0.7 s | 4.5 kHz | -6.7 dB |
| 0.7 s | 4.6 kHz | -6.7 dB |
| 0.7 s | 4.6 kHz | -6.9 dB |
| 0.7 s | 4.7 kHz | -7.4 dB |
| 0.7 s | 4.8 kHz | -8.0 dB |
| 0.7 s | 4.8 kHz | -8.8 dB |
| 0.7 s | 4.9 kHz | -8.9 dB |
| 0.7 s | 5 kHz | -9.1 dB |
| 0.7 s | 5.1 kHz | -9.4 dB |
| 0.7 s | 5.1 kHz | -10.0 dB |
| 0.7 s | 5.2 kHz | -10.9 dB |
| 0.7 s | 5.2 kHz | -12.0 dB |
| 0.7 s | 5.4 kHz | -13.3 dB |
| 0.7 s | 5.4 kHz | -13.9 dB |
| 0.7 s | 5.5 kHz | -14.7 dB |
| 0.7 s | 5.6 kHz | -16.0 dB |
| 0.8 s | 5.6 kHz | -17.7 dB |
| 0.8 s | 5.7 kHz | -19.9 dB |
| 0.8 s | 5.8 kHz | -23.0 dB |
| 0.8 s | 5.8 kHz | -27.2 dB |
| 0.8 s | 5.9 kHz | -34.8 dB |
| 0.8 s | 5.9 kHz | -50.5 dB |
| 0.8 s | 8 kHz | -65.4 dB |
| 0.8 s | 7.6 kHz | -68.3 dB |
| 0.8 s | 4.9 kHz | -68.7 dB |
| 0.8 s | 4.9 kHz | -68.3 dB |
| 0.8 s | 5.6 kHz | -66.7 dB |
| 0.8 s | 687.5 Hz | -68.2 dB |
| 0.8 s | 1.4 kHz | -68.4 dB |
| 0.8 s | 1.4 kHz | -66.6 dB |
| 0.8 s | 2.6 kHz | -66.4 dB |
| 0.8 s | 2.6 kHz | -66.7 dB |
| 0.8 s | 5.3 kHz | -67.4 dB |
| 0.8 s | 1.2 kHz | -67.1 dB |
| 0.8 s | 6.4 kHz | -67.7 dB |
| 0.8 s | 3 kHz | -67.3 dB |
| 0.8 s | 6 kHz | -67.1 dB |
| 0.8 s | 6.6 kHz | -68.4 dB |
| 0.8 s | 4.2 kHz | -68.7 dB |
| 0.8 s | 4.2 kHz | -68.1 dB |
| 0.8 s | 3.4 kHz | -67.3 dB |
| 0.9 s | 7.7 kHz | -67.0 dB |
| 0.9 s | 2.6 kHz | -67.4 dB |
| 0.9 s | 5.7 kHz | -67.5 dB |
| 0.9 s | 1.2 kHz | -67.6 dB |
| 0.9 s | 3.4 kHz | -67.6 dB |
| 0.9 s | 4.2 kHz | -68.0 dB |
| 0.9 s | 4.2 kHz | -66.4 dB |
| 0.9 s | 1 kHz | -68.4 dB |
| 0.9 s | 4.6 kHz | -68.3 dB |
| 0.9 s | 6.6 kHz | -66.9 dB |
| 0.9 s | 2.9 kHz | -65.8 dB |
| 0.9 s | 2.9 kHz | -65.5 dB |
| 0.9 s | 6.6 kHz | -69.6 dB |
| 0.9 s | 3.1 kHz | -67.8 dB |
| 0.9 s | 3.1 kHz | -67.6 dB |
| 0.9 s | 3.2 kHz | -69.9 dB |
| 0.9 s | 3.7 kHz | -68.4 dB |
| 0.9 s | 6.8 kHz | -68.3 dB |
| 0.9 s | 1.8 kHz | -66.7 dB |
| 0.9 s | 1.8 kHz | -67.3 dB |
| 0.9 s | 4.6 kHz | -68.2 dB |
| 0.9 s | 7.8 kHz | -68.3 dB |
| 0.9 s | 687.5 Hz | -66.9 dB |
| 0.9 s | 1.9 kHz | -67.9 dB |
| 0.9 s | 6.8 kHz | -68.9 dB |
| 1.0 s | 8 kHz | -68.4 dB |
| 1.0 s | 8 kHz | -67.7 dB |
| 1.0 s | 6.6 kHz | -67.3 dB |
| 1.0 s | 0 Hz | -65.4 dB |
| 1.0 s | 4.4 kHz | -67.2 dB |
| 1.0 s | 4.4 kHz | -67.7 dB |
| 1.0 s | 5.3 kHz | -66.8 dB |
| 1.0 s | 4.1 kHz | -67.1 dB |
| 1.0 s | 6 kHz | -66.5 dB |
| 1.0 s | 7.2 kHz | -67.6 dB |
| 1.0 s | 7.2 kHz | -66.9 dB |
| 1.0 s | 4.5 kHz | -68.9 dB |
| 1 s | 4.3 kHz | -67.8 dB |
| 1.0 s | 5.8 kHz | -68.5 dB |
| 1.0 s | 1.1 kHz | -68.9 dB |
| 1.0 s | 7.3 kHz | -69.1 dB |
| 1.0 s | 7.8 kHz | -68.0 dB |
| 1.0 s | 7.8 kHz | -68.5 dB |
| 1.0 s | 5.7 kHz | -68.0 dB |
| 1.0 s | 62.5 Hz | -68.0 dB |
| 1.0 s | 7.1 kHz | -68.0 dB |
| 1.0 s | 500 Hz | -66.0 dB |
| 1.0 s | 4.3 kHz | -67.4 dB |
| 1.0 s | 4.4 kHz | -67.5 dB |
| 1.0 s | 2.1 kHz | -48.6 dB |
| 1.1 s | 2.1 kHz | -34.1 dB |
| 1.1 s | 2.1 kHz | -26.6 dB |
| 1.1 s | 2.2 kHz | -22.5 dB |
| 1.1 s | 2.2 kHz | -19.8 dB |
| 1.1 s | 2.3 kHz | -17.9 dB |
| 1.1 s | 2.4 kHz | -16.6 dB |
| 1.1 s | 2.5 kHz | -15.2 dB |
| 1.1 s | 2.6 kHz | -13.6 dB |
| 1.1 s | 2.6 kHz | -12.4 dB |
| 1.1 s | 2.7 kHz | -11.4 dB |
| 1.1 s | 2.8 kHz | -10.7 dB |
| 1.1 s | 2.8 kHz | -10.3 dB |
| 1.1 s | 2.9 kHz | -10.1 dB |
| 1.1 s | 3 kHz | -9.5 dB |
| 1.1 s | 3.1 kHz | -8.6 dB |
| 1.1 s | 3.1 kHz | -8.0 dB |
| 1.1 s | 3.2 kHz | -7.5 dB |
| 1.1 s | 3.2 kHz | -7.3 dB |
| 1.1 s | 3.3 kHz | -7.3 dB |
| 1.1 s | 3.4 kHz | -7.5 dB |
| 1.1 s | 3.5 kHz | -6.9 dB |
| 1.1 s | 3.6 kHz | -6.4 dB |
| 1.1 s | 3.6 kHz | -6.1 dB |
| 1.1 s | 3.7 kHz | -6.0 dB |
| 1.1 s | 3.8 kHz | -6.0 dB |
| 1.2 s | 3.8 kHz | -6.3 dB |
| 1.2 s | 3.9 kHz | -6.6 dB |
| 1.2 s | 4 kHz | -6.1 dB |
| 1.2 s | 4.1 kHz | -5.8 dB |
| 1.2 s | 4.1 kHz | -5.8 dB |
| 1.2 s | 4.2 kHz | -5.9 dB |
| 1.2 s | 4.2 kHz | -6.2 dB |
| 1.2 s | 4.3 kHz | -6.8 dB |
| 1.2 s | 4.4 kHz | -6.9 dB |
| 1.2 s | 4.5 kHz | -6.7 dB |
| 1.2 s | 4.6 kHz | -6.7 dB |
| 1.2 s | 4.6 kHz | -6.9 dB |
| 1.2 s | 4.7 kHz | -7.3 dB |
| 1.2 s | 4.8 kHz | -8.0 dB |
| 1.2 s | 4.8 kHz | -8.8 dB |
| 1.2 s | 4.9 kHz | -8.9 dB |
| 1.2 s | 5 kHz | -9.1 dB |
| 1.2 s | 5.1 kHz | -9.4 dB |
| 1.2 s | 5.1 kHz | -10.0 dB |
| 1.2 s | 5.2 kHz | -10.9 dB |
| 1.2 s | 5.2 kHz | -12.0 dB |
| 1.2 s | 5.4 kHz | -13.3 dB |
| 1.2 s | 5.4 kHz | -13.9 dB |
| 1.2 s | 5.5 kHz | -14.7 dB |
| 1.2 s | 5.6 kHz | -16.0 dB |
| 1.3 s | 5.6 kHz | -17.7 dB |
| 1.3 s | 5.7 kHz | -20.0 dB |
| 1.3 s | 5.8 kHz | -23.0 dB |
| 1.3 s | 5.8 kHz | -27.2 dB |
| 1.3 s | 5.9 kHz | -34.7 dB |
| 1.3 s | 5.9 kHz | -50.4 dB |
| 1.3 s | 4.8 kHz | -68.1 dB |
| 1.3 s | 6 kHz | -68.5 dB |
| 1.3 s | 6.1 kHz | -66.8 dB |
| 1.3 s | 750 Hz | -68.2 dB |
| 1.3 s | 562.5 Hz | -69.1 dB |
| 1.3 s | 5.8 kHz | -68.4 dB |
| 1.3 s | 187.5 Hz | -68.9 dB |
| 1.3 s | 0 Hz | -68.8 dB |
| 1.3 s | 1 kHz | -68.6 dB |
| 1.3 s | 2.1 kHz | -68.6 dB |
| 1.3 s | 750 Hz | -69.6 dB |
| 1.3 s | 2.5 kHz | -69.8 dB |
| 1.3 s | 3 kHz | -69.4 dB |
| 1.3 s | 3.1 kHz | -67.8 dB |
| 1.3 s | 6.1 kHz | -67.9 dB |
| 1.3 s | 1.5 kHz | -67.3 dB |
| 1.3 s | 5.2 kHz | -66.9 dB |
| 1.3 s | 3.4 kHz | -67.3 dB |
| 1.3 s | 2.6 kHz | -67.2 dB |
| 1.4 s | 2.1 kHz | -68.0 dB |
| 1.4 s | 0 Hz | -66.6 dB |
| 1.4 s | 500 Hz | -68.1 dB |
| 1.4 s | 1.4 kHz | -68.4 dB |
| 1.4 s | 1.5 kHz | -67.4 dB |
| 1.4 s | 6.8 kHz | -67.3 dB |
| 1.4 s | 3.8 kHz | -68.8 dB |
| 1.4 s | 4.5 kHz | -68.2 dB |
| 1.4 s | 5.3 kHz | -68.5 dB |
| 1.4 s | 750 Hz | -67.5 dB |
| 1.4 s | 3.3 kHz | -68.5 dB |
| 1.4 s | 3.3 kHz | -67.1 dB |
| 1.4 s | 7.1 kHz | -68.4 dB |
| 1.4 s | 3.7 kHz | -68.7 dB |
| 1.4 s | 3.5 kHz | -69.7 dB |
| 1.4 s | 3.5 kHz | -68.4 dB |
| 1.4 s | 0 Hz | -64.8 dB |
| 1.4 s | 62.5 Hz | -67.4 dB |
| 1.4 s | 6.8 kHz | -66.2 dB |
| 1.4 s | 6.8 kHz | -66.0 dB |
| 1.4 s | 750 Hz | -68.8 dB |
| 1.4 s | 1.8 kHz | -69.1 dB |
| 1.4 s | 3.8 kHz | -65.7 dB |
| 1.4 s | 4.2 kHz | -68.5 dB |
| 1.4 s | 5.8 kHz | -67.3 dB |
| 1.5 s | 5.2 kHz | -67.8 dB |
| 1.5 s | 7.4 kHz | -67.0 dB |
| 1.5 s | 187.5 Hz | -66.5 dB |
| 1.5 s | 187.5 Hz | -65.7 dB |
| 1.5 s | 187.5 Hz | -68.5 dB |
| 1.5 s | 2.7 kHz | -68.1 dB |
| 1.5 s | 7 kHz | -67.5 dB |
| 1.5 s | 6.7 kHz | -68.9 dB |
| 1.5 s | 1.4 kHz | -69.2 dB |
| 1.5 s | 6.4 kHz | -69.4 dB |
| 1.5 s | 5.3 kHz | -68.4 dB |
Usage
use hydroxy_leptos::chart_frame::ChartFrame;
use hydroxy_leptos::spectrogram_chart::*;
use leptos::prelude::*;
const RATE: f64 = 16_000.0;
/// A two-tone doorbell, "ding" (E5) then "dong" (C5), each with decaying harmonics.
fn doorbell() -> Vec<f64> {
use std::f64::consts::TAU;
(0..32_000)
.map(|i| {
let t = f64::from(i) / RATE;
let strike = |at: f64, f0: f64| {
let s = t - at;
if s < 0.0 {
return 0.0;
}
[(1.0, 1.0), (2.0, 0.4), (3.0, 0.2), (4.2, 0.12)]
.iter()
.map(|(h, a)| a * (TAU * f0 * h * s).sin() * (-s * (1.6 + h)).exp())
.sum::<f64>()
* 0.45
};
strike(0.1, 659.3) + strike(0.9, 523.3)
})
.collect()
}
/// A bird-like call: three rising chirps from 2 to 6 kHz over light noise.
fn chirps() -> Vec<f64> {
use std::f64::consts::TAU;
let mut seed = 9u32;
(0..24_000)
.map(|i| {
let t = f64::from(i) / RATE;
let k = (t / 0.5).floor();
let s = t - k * 0.5 - 0.05;
let call = if (0.0..0.22).contains(&s) && k < 3.0 {
// Phase of a linear sweep from 2 kHz up by 18 kHz/s.
(TAU * (2_000.0 * s + 9_000.0 * s * s)).sin() * (s * 14.3).sin()
} else {
0.0
};
seed = seed.wrapping_mul(1_664_525).wrapping_add(1_013_904_223);
call * 0.6 + (f64::from(seed >> 8) / f64::from(1u32 << 24) - 0.5) * 0.004
})
.collect()
}
pub fn demo() -> AnyView {
view! {
<div style="display: grid; gap: var(--space-10);">
<ChartFrame title="Doorbell" description="Two struck tones and their harmonics, on a log frequency scale so each octave gets equal height.">
<SpectrogramChart samples=doorbell() sample_rate=RATE window=1024 hop=128 log_frequency=true range=70.0 label="Spectrogram of a two-tone doorbell" />
</ChartFrame>
<ChartFrame title="Bird call" description="Three rising chirps, each sweeping from 2 to 6 kHz.">
<SpectrogramChart samples=chirps() sample_rate=RATE window=256 hop=64 height=220 label="Spectrogram of a bird call" />
</ChartFrame>
</div>
}
.into_any()
}use dioxus::prelude::*;
use hydroxy_dioxus::chart_frame::ChartFrame;
use hydroxy_dioxus::spectrogram_chart::SpectrogramChart;
const RATE: f64 = 16_000.0;
/// A two-tone doorbell, "ding" (E5) then "dong" (C5), each with decaying harmonics.
fn doorbell() -> Vec<f64> {
use std::f64::consts::TAU;
(0..32_000)
.map(|i| {
let t = f64::from(i) / RATE;
let strike = |at: f64, f0: f64| {
let s = t - at;
if s < 0.0 {
return 0.0;
}
[(1.0, 1.0), (2.0, 0.4), (3.0, 0.2), (4.2, 0.12)]
.iter()
.map(|(h, a)| a * (TAU * f0 * h * s).sin() * (-s * (1.6 + h)).exp())
.sum::<f64>()
* 0.45
};
strike(0.1, 659.3) + strike(0.9, 523.3)
})
.collect()
}
/// A bird-like call: three rising chirps from 2 to 6 kHz over light noise.
fn chirps() -> Vec<f64> {
use std::f64::consts::TAU;
let mut seed = 9u32;
(0..24_000)
.map(|i| {
let t = f64::from(i) / RATE;
let k = (t / 0.5).floor();
let s = t - k * 0.5 - 0.05;
let call = if (0.0..0.22).contains(&s) && k < 3.0 {
// Phase of a linear sweep from 2 kHz up by 18 kHz/s.
(TAU * (2_000.0 * s + 9_000.0 * s * s)).sin() * (s * 14.3).sin()
} else {
0.0
};
seed = seed.wrapping_mul(1_664_525).wrapping_add(1_013_904_223);
call * 0.6 + (f64::from(seed >> 8) / f64::from(1u32 << 24) - 0.5) * 0.004
})
.collect()
}
#[component]
pub fn SpectrogramChartDemo() -> Element {
rsx! {
div { style: "display: grid; gap: var(--space-10);",
ChartFrame { title: "Doorbell", description: "Two struck tones and their harmonics, on a log frequency scale so each octave gets equal height.",
SpectrogramChart { samples: doorbell(), sample_rate: RATE, window: 1024, hop: 128, log_frequency: true, range: 70.0, label: "Spectrogram of a two-tone doorbell" }
}
ChartFrame { title: "Bird call", description: "Three rising chirps, each sweeping from 2 to 6 kHz.",
SpectrogramChart { samples: chirps(), sample_rate: RATE, window: 256, hop: 64, height: 220, label: "Spectrogram of a bird call" }
}
}
}
}
Anatomy
| Component | data-part | Renders |
|---|---|---|
SpectrogramChart | root | figure with a screen-reader table of each frame's loudest frequency; data-variant is linear or log |
| image | The canvas, wiped in left to right |
| crosshair | The hovered time and frequency (crosshair, crosshair-y) |
| scale | Level colour ramp in dB, after the figure |
| tooltip | Time, frequency and level |
Keyboard
| Key | Does |
|---|---|
ArrowLeft / ArrowRight | Previous or next frame |
ArrowUp / ArrowDown | Higher or lower frequency |
Escape | Hide the tooltip |
Props
| Prop | Type | Notes |
|---|---|---|
label | String | Required. What the chart shows; the accessible name |
samples | Vec<f64> | Raw samples to transform |
sample_rate | f64 | Samples per second. Default 44100 |
window | usize | Samples per frame, rounded up to a power of two. Default 512 |
hop | usize | Samples between frames. Default a quarter window |
spectrum | Spectrum | A precomputed matrix, Spectrum::new(times, freqs, db), instead of samples |
log_frequency | bool | Log frequency axis |
range | f64 | dB below the loudest cell the colours reach. Default 80 |
height | u16 | Plot height in px. Default 260 |
Events
| Prop | Type | Notes |
|---|---|---|
on_hover | Callback<Option<Datum>> | The mark under the pointer or keyboard focus changes, or is left. Fires only on a change |
on_select | Callback<Datum> | Click, tap or Enter on a mark |