Impulses
The last hits, each with a place, for rings, shocks and eddies that spread from where a hit landed. The newest is index 0. Ages count heard seconds, so a pause holds every ring where it is.
Positions are in the drawings' centred units: 0,0 is the middle and one unit is half the screen height, so x runs to about plus or minus the aspect ratio. A shader reads the same list as a 64 by 2 picture through impulseA and impulseB in the shared header.
Functions
Link copied to clipboard
Ages every impulse by heardSeconds and drops those older than MOST_AGE.
Link copied to clipboard
Writes the picture and hands it to program under the header's names.
Link copied to clipboard
How hard hit i was, 0 to 1.