Contents
Phaser1 Beeper Engine
This engine provides two melody channels and one drum channel. Channel 1 is always a pure square-wave tone, while channel 2 is a phasing synth with up to 100 instruments. Both channels have a range of 5 full octaves with no noticeable detuning.
Phasing Synth (mostly taken from Phaser1's
readme.txt by Shiru)
The phasing synth consists of two square tone generators, both change
output state to produce a more complex waveform. The synth is controlled
by three parameters, all of which are for the second generator only.
Multiple defines frequency of the second generator, relative to the
first (0=the same, 1=double the first, etc). Detune introduces
a difference between the generators, producing a phasing effect. Phase allows
to set phase on start of the generator, which only occurs if phase reset is
used (by entering any value into the Phase column in the tracker so
that it shows "Reset"). Don't forget to reset the phase with every change of
the instrument, otherwise you'll get a combination of settings of the
previous and new instruments, which may produce an unwanted effect.
Although the engine does not support volume, you can imitate PWM volumes on the second tone channel, using Multiple=0, Detune=0, Phase<128. Lower values for Phase make the volume lower, and also affects to the timbre.
A song may contain up to 127 unique patterns, and each pattern may contain up to 126 notes per channel. The tempo and length of each pattern may be set individually.
The Phaser1 engine has a limited range of available pattern tempo settings. 16 is the fastest tempo supported (values of 17-20 are identical to 16) and 1 is the slowest. At the very fastest tempo setting (16) the drum sounds obscure any notes present (in either channel) on the same row.
The lowest valid note value is C-1 and the highest is B-5.
Two Versions of Phaser1
Beepola contains two slightly different versions of the Phaser1
engine. The first contains 8 digitally sampled drums, which occupy an
additional 1KB of Spectrum RAM. The second version contains synthesised
drums and therefore produces a much smaller player (~810 bytes, compared to
~1750 for the digital drum version). The two tone channels are identical
between these two versions - only the drums differ.
Useful POKEs/Addresses
The first instruction in the player routine is a LD HL,nn instruction
which points to the start of the song data. Therefore, to select
a different song to play:-
10 LET PlayerAddr = 60000
20 LET SongAddr = 62000
30 POKE PlayerAddr+1,SongAddr - 256 * INT(SongAddr / 256)
40 POKE PlayerAddr+2,INT(SongAddr / 256)