BoyScout Manual
Music tracking software for the GameBoy Advance
By: Christer Andersson
© 2001-2005
Table of Contents
Terms
of Usage
Beat length (n/60):
This is a measurement of how long each beat in pattern will take. A
setting of 15 gives (15/60)s = 0.25 seconds per pattern beat. This setting
will be viewable in the sequencer, where it also is postchangable (see
The Sequencer). There is one native format to be used together with BoyScout, the .BSF (BoyScout Song Format). This format stores just about all current data and states for you. To open a song:
This will bring
up the standard Windows open dialog box, from which you can open a song.
In order to save
a file:
This
will bring up the standard Windows save dialog box, from which you can
chose your save directory and file name. Patterns
Creating
These are Sound 1, Sound 2, Sound 3 and Sound 4 respectively. To create a pattern, after you've entered a channel mode:
Name: By naming
your pattern you can more easily find your patterns later on.
The dotted columns
are parameters you can set in the pattern (see Editing later in this
topic). A dotted parameter means that the parameter is unchanged. In order to view
a specific pattern, just select the one you want from the combo box,
shown in the above picture. In order to delete a pattern, press the following button and confirm deletion:
Note: If the pattern
is used somewhere in the sequencer, it will be mute. This is until you
have created a new pattern that replaces the old pattern's index (see
number before name in combo box), whereafter the new pattern will be
played. Thus, unless you want this effect, remember to remove the pattern
from the sequencer.
Name: Just fill in whatever name you want the copy to have. Length: The option of changing the length of the pattern will either crop your pattern if less then original length or add empty parameters if larger than original length. The value of Length is always defaulted to the original length. Note: You could
create a new pattern and use the copy & paste functions, instead
of pattern copying. This function is only provided as a more forward
method. Editing In order to edit
a pattern, you have a number of columns at your disposal. Parameters
in the first column from the left is the note parameter (or trigger
in Sound 4). The following columns, that comes directly after each other,
after the separating space, are the sound parameters. The number of
sound parameters is different between channels.
Just click on a
parameter in order to select it. When a parameter list has input, you
can navigate the entire pattern using the arrow keys. Note that when
standing in a parameter column, you can view the parameter name and
value range at the lower right of the program window:
To set the note parameter: The keyboard layout for setting notes is kinda like the keyboard layout for an octave on a piano:
As you can see, you can access two octaves at a time through the keyboard. The lower octave keys number is decided by the current octave setting, and the octave keys above is the current octave setting + 1. If you wonder which key correspond to which note, just try it out, or if you know the piano octave layout, that the key Z is the note C and A is C#. Changing octave: The current octave setting is displayed while in a sound mode:
In order to modify it, stand in a parameter column and press the divide key to decrease or the multiply key to increase the octave setting. Both these keys are located at the numerical extension of the keyboard. To set the sound parameters: Stand at the parameter and just type in the value you want, using the numeric part of the keyboard. The program will stop you from entering invalid values as specified by the parameter range. In order to get negative number, enter the absolute number and then press the subtract key located at the numerical extension of the keyboard. Preset transfer: You can move the current preset slider settings (see Presets) to the sound settings of the pattern row on which you are standing by pressing Page Up. Note that you do not transfer the settings of the preset shown in the combo box, but the current slider settings. Reversibly, you can press Page Down to set the preset sliders from the current pattern row sound settings. Clearing a parameter:
You can delete the current parameter in several ways. For numerical
values you can press backspace or Delete to remove the
least significant digit, these buttons can also be used to remove note
parameters. For all parameters you can press period [.] to completely
clear the setting. Copy & Paste: Just as in most standard Windows programs BoyScout lets you use the short keys, Ctrl-C and Ctrl-V to copy & paste parameters. Important: Sound parameters can only be changed together with a note. Thus, any sound parameters set between notes are ignored. You don't have to specify all sound parameters when setting a note, know that sound parameters are kept between notes and patterns. Also, sound parameters are always internally set to a default value at start of playback. Causion: As sound
parameters are kept between patterns, you might experience unexpected
changes in you melodies, if not the first note in every pattern sets
all of its sound parameters. This might be a desired effect, but is
more likely to disturb the workflow. Also do not rely on the sound playback
generated when setting notes, as these only reflects sound parameter
changes within the current pattern, unless you know that no other pattern
can influence the sound parameters of the pattern (such as setting all
sound parameters of the first note or by knowing what you are doing). Presets
If you have made
a good sound setting that you like, you can save the settings as a preset,
to easliy access this
setting later on. Saving
Just name your preset and click OK. Note: You can save the song's presets to file (see Managing Songs). Selecting To set the preset sliders to a saved preset setting, just select the preset from the preset combo box. Updating To update the current preset with the new settings, just click this button and confirm update:
Note: There is no such Update button in Sound 3 channel. It uses a checkbox to update the waveform instead (see The Wave Edit). Deleting In order to delete a preset just press the following button and confirm deletion:
The Wave Edit There is one preset mode that needs further explaination, in channel Sound 3, there is the wave edit controller. Sound 3 uses arbitary wave forms of 32 steps. Sound 3 can therefore create some rather interesting sounds. The Sound 3 channel does not have many settings, therefore the preset sliders are completely removed (no preset transfer can be done either) and are replaced by one wave editing controller:
When a wave form
is saved to a preset it can be accessed by the Sound 3 patterns (Sound
3's Wave Preset parameter).
This check box,
located below the wave edit controller, allows you, when checked, to
edit the wave contents of the currently selected preset. This means
you can change the wave form as the song is being played. This is an
interesting tool that allows you to experiment with Sound 3 output.
Just select the preset you want to edit from the preset combo box, check
the edit box and change the wave form shape.
Sound 1 channel
generates a pulse wave form, of a certain distribution. To this wave
form an envelope function and/or a sweep function can be applied. A
sweep is kinda like note bend.
Sound 2 channel
generates a pulse wave form just like Sound 1, an envelope function
can be applied to the
wave form, but no sweep function is supported.
Sound 3 channel outputs arbitary 32-step wave forms which can be created in the wave editor.
Sound 4 channel
generates white noise. An envelope function is supported.
What? In non-pattern based software, you could say you only have a sequencer, nothing more. All song data is inserted into one long list, with all channel parameters viewable side by side. The sequencer in BoyScout is pattern based and shows the four GameBoy channels:
In these lists you place the pattern indices for each sound channel. One can say that you put the patterns into sequence. Note: It is the "Sequencer Beats Per Row" setting (see Managing Songs), that controls at what resolution you are allowed to place patterns in the sequencer. This has to be a compromise between overview and how dynamically you can use the patterns in the sequencer (this setting is 4 in the above image, as can be seen by the interval).
These buttons controls
the playback of the song. Their use is just as straightforward as they
should be. Play starts playback at the position specified by the "Begin"
setting, and loops at the position specified by the "End"
setting. Stop resets and stops playback.
To set Begin: Stand
at the sequencer row from which playback should start, and press Home.
Modifying Beat Length:
It is
possible to change the Beat Length of the song after it has been created,
just click the "Beat Length.." text in the sequencer (shown
above):
The value will be defaulted to the current Beat Length value, valid values are greater than 0. Editing There is always a sequencer pattern in BoyScout and editing it works just like with pattern editing. For the four sound channel listings, stand on the row where you want to place a pattern, then just use the numeric part of the keyboard to type in the pattern index:
When a pattern index has been set at a sequencer step, the name and length of the pattern can be view in the lower right corner of the application. If the index is invalid, the text will say "Invalid pattern".
Note: Copy & Paste works in the sequencer just as in sound channel patterns.
Above each sound channel in the sequencer there is a button. This button toggles the sound channel On/Off. This is good to tweak sound events in a particular channel without being disturbed by the other channels playing. Programming In this topic I will cover the BoyScout playback library. Please do not send me emails asking how to link a GBA project or how to get data into ROM. These are issues you will have to solve on you own. There are plenty of resource on net, see Credits for links. The playback library is in plain C, so there should be no compiler issues. Just for the record, I use GCC and I have not tried it with any ARM compiler. Source files The BoyScout distribution comes with a few playback library files:
Note: You are not
required to use these files for playback. The files provided are just
a robust playback shell written in C, and can be used for educational
purposes. If you do decide to write your own playback functions, please
share them for others to use and let me know about them.
Code Example The following example opens a BoyScout song and starts playback looping infinitly. The code demonstrates all the BoyScout functions and all you need to get started. Just a note, it may be easier to work with BoyScout if you put BoyScoutUpdateSong in a V-Blank interrupt. Note that the following code requires you to have a functioning malloc routine. A good linkscript should allocate memory in external RAM.
|