Beepola Help

Contents

Introduction

Keyboard commands

Beeper Engines

Compiling Songs

Ripping Songs

*.bbsong file format

Credits

 

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)