Contents
The Music Studio Beeper Engine
This engine provides two melody channels, plus percussion that may take the place of individual melody notes on channel 2. Sustain settings are ignored, any percussion entered into the Drum column will cause no note to be sounded on channel 2 for the duration of the drum effect.
Unlike the original Music Studio 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 Studio utility.
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 a sawtooth wave.
The song compiler is smart enough to automatically recognise duplicate 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 F#4.
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)