zx beeper - puredata patch
Download here: zx-beeper.pd
MP3 example here: zxbeeper-example.mp3
Squarewave music often uses a 1-bit DAC (on higher resolution DACs the MSB is driven) to produce a single tone with just a single voice polyphony.
The Sinclair "ZX Spectrum" has a 1-bit DAC, and most sound effects and music for its software are of this single voice polyphony variety.
The legendary Tim Follin developed a system where he could compose squarewave music with 8 voice polyphony, and drums on an extra channel. This pd patch emulates this sound.
This system involves 8 sawtooth oscillators (their values computed in 16 bits) The MSB toggles when any one of the oscillators output a certain value. The result is a system that appears to have 8 voices, yet only really outputs on 1 channel, at a 1 bit resolution.
The drums are created by toggling the MSB randomly with white noise (snare drum), or by setting it to 1 and freezing its state for a short period of time (kick drum).
The MSB toggling functionality is implemented by using a wavetable with only two values, and by using the oscillators to drive the read-position-cursor, wrapping around any values that would read outside of the two positions.
Pitched notes are on MIDI channel 1, drums on MIDI channel 10 (notes C3,D3,E3 are Kick, Snare, Rising Snare).