Tim Follin's three channel ZX Spectrum beeper music engine
Original Z80 code by Tim Follin, 1987
1tracker engine by Shiru 2011-12 (shiru@mail.ru)


This engine was written by the famous Tim Follin and published in 1987 
as a type-in in Your Sinclair magazine issue 20, page 55. It was later 
disassembled and commented by Matt B. It is similar to the engine from 
Vectron game released in 1985. 

The engine has unusual limitations. It provides three tone channels with 
detune, without drums. No rest notes are supported, all three notes 
plays every row. This also mean that there is no mute support. Speed can 
be changed every row. All channels share a single 'volume' envelope that 
has Attack, Decay, and Target volume parameters. It gets restarted every 
row, so when a row is empty, it will repeat notes from previous rows. 
Greater values for Attack and Decay mean slower change. Target volume 
should be set high when Attack used and low when Decay used. 

The engine also has very strong detune issues. Notes on all channels 
affects to pitch of each other. Different settings of the envelope also 
change pitch. The detune is so strong that note names in the editor 
could only be used as a guide and will have proper pitch only when the 
same note used on all channels. To compensate these issues detune column 
should be used to manually tune up every note. 

There is no loop support. 

No modifications to the original code were made in the 1tracker version 
of the engine. 


The columns are:

Spd Atk Dcy Tg T1 dt T2 dt T3 dt
... ... ... .. ..... ..... .....
    |        | |   | |   | |   |
	+- sound-+ +ch1+ +ch2+ +ch3+
	
Spd : Speed, 1..255

Atk : Attack speed, 1..255 (fastest to slowest)
Dcy : Decay speed, 1..255 (fastest to slowest)
 Tg : Target pseudo-volume, 1..12 (lowest to loudest)

T1,T2,T3 : Tone channels
 Tn : Note, G#3..G#7
 dt : Detune, 1..99
