The sound is split into sixteen bands, low at the bottom and high at the top. Each band is one of the strings at the left, and a dot lights on it whenever that band sounds. Strings bend with pitch and swing with loudness; flashes mark each attack. Point at a string to follow its band in every view.
Under the hood. One WildflowerJS store, song, reads the audio analyser in its tick() every frame. Each band that sounds is pushed into a store pool, events, and each attack into a second pool, onsets. Each frame also keeps the chroma, the cepstrum and eight timbre measures, for the whole sound and for each band. Each view is a small component that subscribes to the store and draws its canvas in its own tick(). The readouts, the focused band and Freeze are store state, so every view and label follows them with no wiring between views.