18 06 10 - 00:11
Among all the 1-bit music engines for ZX Spectrum, so-called Special FX engine is probably the most popular in the modern 1-bit music. It has rather common sound capabilites for the platform, with few interesting features at the same time. It also has interesting story, and surely deserves a featured post.
The man behind the engine is Jonathan 'Joffa' Smith, famous ZX Spectrum developer. He started with programming circa 1983, at age 16, on the ZX Spectrum 16K. He got a job in Ocean Software in summer of 1984, and developed few games there, including port of Konami's arcade Green Beret. He also started with sound programming in Ocean, and circa 1985 he made an music engine, which was supposed to be used in Green Beret, but it wasn't, because lack of free memory. The engine was used in Mikie (1985), Cobra (1986), and Ping Pong (1986). Two of these games itself were also programmed by Jonathan, and all the music was composed by also famous Martin Galway. The games were praised for many things, including sound, and got 'Best Music' title in CRASH Readers Awards in 1986, with five games in the list total. Ping Pong music got 22% of votes and first place. This engine was nothing like Special FX one, it had only one channel of phasing synth and drums. After Jonathan leaved Ocean Software, this engine was used in other games of the company, but without the same success.
The Special FX engine was developed circa 1988, when Jonathan has moved from Ocean to just established game development company Special FX Software, where he was second director and programmer. Different versions of the engine were used in most of the 48K games developed by the company in 1988-1990 - Batman the Caped Crusader, Cabal, Firefly, Gutz, Hyper Active, Red Heat, and Midnight Resistance, although only four of these games were developed by Jonathan. The music for all these games was composed by Keith Tinman, in-house composer of Special FX. There was no editor of any sort, Keith had to write the music using some 'music language' also created by Jonathan.
The sound generation algorithm in this engine used the same idea as many other engines of the time, for example famous Tim Follin's engines, including 3-channel engine from Vectron (1985), and 5-channel engine from Agent X (1986) and later games. It is based on generation of very short pulses at the beginning of every period (counter overflow), which gives the sound very specific timbre. The width of the pulses decreases with time, this sounds like the volume decay to some non-zero level, with timbre fluctuations as well. Downsides of the algorithm are limited range of the frequencies, unavoidable detuning problems on higher notes, and large amount of harmonics and noise in case with large number of the channels.
Although many engines had the same algorithm, details of implementations were different, so the sound of the engines was somewhat distinctive. The length of the pulses in the Special FX engine is about 1/20 of the period. Speed of the decay is depends from the tone frequency (higher tones has faster decay) and from the sustain parameter on the channel. One channel is noticeable louder than other, with clever use that can be used to produce some echoing effects and varying dynamics. The engine has notes range from F#1 to A-5.
The engine also has a few simple percussion sounds, they are short and interrupts the tone channels while playing. It is not noticeable by ear because of their loudness and short duration.
One of interesting features of the engine is interrupt-based sync, which allows to keep exact tempo for a long periods. So, if you make two parts of 4-channel song as two 2-channel tracks, you will be able to sync recordings of the parts later. Many other engines aren't synced by interrupts, and their tempo slightly flows depending from the music, so syncronize of two recordings is difficult or impossible. Downside of this feature is rare clicks in the sound, similar to clicks and pops on the dusty vinyl discs.
Engine strikes back
In 1990 the engine got a second life, which was unknown to the original author until March 2010. It was modified and used as base for a Checzh beeper music editor named Orfeus Music Assembler, developed by Tomas Vilim. The modifications in the engine includes 10 percussion sounds instead of ~4 of the original versions, and also 'rest' note, which allows to stop the sound on the channel. The editor had staff-roll interface and was difficult to use, but it was the only way for non-programmers to use the engine for a long time. It was used by Mister Beep for many of his songs, including one 4-channel song with two separate parts mixed together.
Return of the engine
Finally, in 2010 the original engine was modified by Chris Cowley and included in his beeper music cross-editor Beepola. The modifications includes some optimizations and the 'rest' note. Appearance of the Beepola finally made the engine easily available for many composers, and that already led to creation of many new 1-bit songs.
Want to know more?
If you want to know more about the original author of the engine, here are few interviews:
Interview for ZX Specticle, January 2001
Interview for The Spectrum Golden Years, January 2001
Interview for Spectrum Games, September 2009
You also can listen some of Keith Tinman's music made with the engine (other can be found at ProjectAY):
Batman the Caped Crusader