wtbeep - ZX Spectrum beeper music engine
by utz 11'2016, 03'2022
1tracker version by Shiru 12'2017


A three channel engine with very simple controls, but rich timbres. It 
features 32 selectable waveforms that is generated on-fly (no samples 
involved), and a customizeable click drum.

The original 2016 version of the engine is not compatible with
ZX Spectrum +3. The volume of all three channels is the same.

The 2022 update makes T3 channel a bit quieter than the rest, and
brings the +3 compatibility. The sound quality is presumably a tiny
bit lower.


The columns are:

Sp T1 dWF T2 dWF T3 dWF DKpNv R
.. ...... ...... ...... ..... .
   |    | |    | |    | |   |
   +-ch1+ +-ch2+ +-ch3+ +drum
   
Sp : Speed, 1..99

T1,T2,T3 : Tone channels
  Tn : Note, C-0..B-7
   d : Detune, 1..9
  WF : Waveform, 1..32
  
DKpNv : Drum channel
   D : Drum type, 1 kick, 2 kick with sweep reset, 3 high hat, 4 low hat
  Kp : Initial kick pitch, 1..99 (lowest to highest)
  Nv : Hat volume, 1..99 (lowest to loudest)

R : Reset the sweep counters of all tone channels on a particular row.

The following waveforms are available for tone channels:

 1 : 50% square
 2 : 32% square
 3 : 25% square
 4 : 19% square
 5 : 12.5% square
 6 : 6.25% square
 7 : duty sweep (fast)
 8 : duty sweep (slow)
 9 : duty sweep (very slow)
10 : duty sweep (very slow, inverted start duty)
11 : duty sweep (slow) +octave
12 : duty sweep (slow) -octave
13 : duty sweep (fast) -octave
14 : vowel 1
15 : vowel 2
16 : vowel 3
17 : vowel 4
18 : vowel 5
19 : vowel 6
20 : rasp 1
21 : rasp 2
22 : phat rasp
23 : phat 2
24 : phat 3
25 : phat 4
26 : phat 5
27 : phat 6
28 : phat 7
29 : noise 1
30 : noise 2
31 : noise 3
32 : noise 4

Waveforms 20..23 and 26..28 play 2 octaves lower, the lowest octaves are
pretty much useless in these cases.
