# Beepola Help

Contents

Introduction

Keyboard commands

Beeper Engines

- Special FX (Fuzz Click)
- The Music Box
- The Music Studio
- Phaser1
  Interesting Instruments
- Savage
- ROMBeep
- Plip Plop
- Huby
- QChan
- Tritone

Compiling Songs

Ripping Songs

*.bbsong file format

Credits

The Music Box Beeper Engine

This engine provides two melody channels plus a fixed bass drum sound and user-definable white noise percussion. The bass drum and white noises replace notes in both melody channels on the row in which they occur.

Unlike the original Music Box engine, Beepola's implementation is pattern based (i.e. duplicate or repeating patterns are only stored once in the final output) and optimised for size. Songs compiled in Beepola using this engine will usually be significantly smaller that the same song produced with the original Music Box utility on a Spectrum.

Channels 1 and 2 are functionally identical. There is no sustain with this engine, so a note will last for a fixed period of time (which is dependent on the pattern tempo - higher tempos produce shorter notes). The sound output for each channel is (close to being) a square wave, which gives a clean tone of constant pitch and volume.

The song compiler is smart enough to automatically recognise duplicate melody patterns and only includes a single copy of any duplicated pattern in the final output.

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 lowest valid note value is F#1 and the highest is A#5.

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 = 61000
30 POKE PlayerAddr+1,SongAddr - 256 * INT(SongAddr / 256)
40 POKE PlayerAddr+2,INT(SongAddr / 256)