MONOTONE
The Tracker For Extremely Simple Sound Devices
MONOTONE started as a bit of a joke between Necros and myself, where we were laughing about how nobody had created a tracker for the PC speaker. I like vintage PC challenges (see 8088 Corruption for another example), so I went about making one. MONOTONE's original design goals were:
* Support the PC speaker, making a reasonable attempt to play multiple voices
* Take only a tiny bit of CPU time to play the music (ie. should be able to play in the background without affecting the machine)
* Run on any machine (ie. 128KB PC or PCjr)
As development continued, I decided to use the opportunity to finally see what all of the fuss was about with Object Oriented Programming (OOP) and designed MONOTONE as my first OOP exercise. This increased development time greatly (it took me three months of free time to complete, which is a heck of a lot of time for such a simple program), but had the benefit that song data handling, output device handling, screen handling, and the player engine are all objects. This allows descendants of each object to only need a few routines to support a completely new screen/file format/output device. (This decision has turned out to be fruitful, as people have already ported MONOTONE's engine to other devices ...
http://www.oldskool.org/pc/MONOTONE