useSong turns notes written as text into sound inside the game, with the four voices of an 8-bit console: two squares, a triangle and noise. The whole tune is a few hundred bytes of text instead of megabytes of audio.
And it does what a recording cannot: setVoice drops or brings back a voice, setTempo speeds it up and setTranspose changes the key, all three carrying on from the beat it was on. Each voice is one line: a letter, # or b, ' or , for the octave, and the length. | ends a bar, and when one does not add up, errors says where.
Space to play, 1 to 4 for the voices, arrows for the tempo and the key.