What Cascade does · FFT
What it shows. The spectrum of the input: level against frequency, from near DC up to 20 kHz. The fundamental, its harmonics, mains hum and the noise floor are all visible at once. Channels A and B can be overlaid.
The theory. An FFT (fast Fourier transform) splits a block of samples into equally spaced frequency bins. The analyzer samples at 65 536 Hz nominally (65 546.5 Hz measured on this unit), so bin width is 65 536 divided by the transform size N: 8 Hz at N = 8192. A bigger N gives finer bins and takes longer. A tone that does not land exactly on a bin leaks into its neighbours. A window shapes the sample block to control that leakage, trading sharpness for how far the leakage spreads. Cascade reads one point per bin, so no harmonic can fall into a bin that was never read. APWIN uses 512 log-spaced points, and an earlier log grid in Cascade skipped harmonics.
From the bins the app finds the fundamental itself (marked "(meas)") rather than trusting the generator setting, because the generator's fast mode is only accurate to ±0.5 %. It then reads harmonics 2 to 10 in dBV and dBc (dB relative to the fundamental), and computes THD and SINAD. The THD tile states how many harmonics it used, because a THD from two harmonics and one from nine are different claims.
Operating it. Set INPUT (GenMon or XLR), CHANNELS (A or A + B), SIZE (up to 32768), WINDOW (Blackman-Harris, Hann, flat-top or equiripple), averaging, and the generator's OUTPUT LEVEL and FREQUENCY if the AP is the source. Press CAPTURE FFT. An external oscillator works too, since the app finds the tone itself.

Status. Hardware-verified: −20.02 dBV against APWIN's −19.99, and stereo channels agree to 0.004 dB. Limits:
44861fe): the readouts now describe the channel that carries the tone (the tile says "FUNDAMENTAL · CH B" when it is B), and the crosshair snaps to peaks on every trace. Chris confirmed the snap on hardware.