BeepComp User's Guide
Contents
About BeepComp
Getting Started
Tutorials
Basics
Main Editor
Writing Your First Track
Saving and Loading Your Work
Copying and Pasting Source
Exporting Your Work
Key Commands
Global Section in Detail
Music Section in Detail
Musical Notes
Note Length
Rests
Octave changes
Ties
Tuplets
Volume Changes
Repeats
Fall Effect
Rise Effect
Waveform Selection
"Beef-Up" Effect
Preset Selection
Volume Envelope Commands
LFO Commands
Astro Command
Ring Modulation
Drum Section in Detail
Drum Hits
Quieter Drum Hits
Note Length
Rests
Ties
Tuplets
Noise Type
Adjusting the Noise Mix
Drum Sound Shaping
Delay Effect
Volume Envelope
LFO Effect
Astro Effect
Waveforms
Beef Up!
Tone Presets
Ring Modultion
Bookmarking Your Start Position
Auto Saving
Syntax Reference
General
Global Section
Music Channel
Drum Channel
Uninstalling BeepComp
Staying Updated
If you found issues/bugs...
BeepComp on the Web
Contact Me!
About BeepCompBeepComp lets you compose chiptune tracks with text files. It features a nice retro-sounding synthesizer
engine with 9 music channels and 1 drum channel.
BeepComp is an open-source project. This means that you're welcome to modify the source code
however you want. BeepComp is a also shareware that anyone can use freely. It is distributed under the
MIT license.
Getting StartedUse the latest installer package available on the Sourceforge top page. Run this set up file, and you'll be
all set for your journey!
Windows
Launch the MSI installer file, beepcomp_vx-x-x.msi, (x-x-x fills the version number) which you just
downloaded. Your program will be installed in the folder:
C:\Program Files\BeepComp\ on 32-bit Windows
C:\Program Files (x86)\BeepComp\ on 64-bit Windows
After installation, BeepComp will be on the list of installed programs. On Windows XP & 7, go to Start-
>All Programs->BeepComp. You can also click the shortcut that has been created on your Desktop.
(Note: If you downloaded the portable version, the installation steps below are not required. To launch,
open the folder you extracted from the downloaded .zip file and double-click on
beepcomp_portable.exe.)
Mac / Linux
I'll be working on these versions soon :)
TutorialsThe BeepComp homepage has section named Your First Tutorial, which will be your great starting point.
The later section Writing Your First Track in this document has a similar content.
After exploring those tutorials, exploring the tutorial files included in the userdata folder (the program's
default save location) will be helpful. Simply load one of these files named _tutorial_---.txt, read and
play to see writing what produces what result. I recommend starting from _tutorial_basic_1.txt.
These files are located in:
C:\Documents and Settings\{USERNAME}\My Documents\BeepComp\userdata on XP
C:\Users\{USERNAME}\Documents\BeepComp\userdata on Vista and later
(Note: for the portable version, find the userdata folder inside the application top folder)
Basics
Main Editor
Editor Area ... You edit your music source text here.
Control Panel ... Play/pause/save/load/export the music you write and control other things.
Cursor ... Your point of control over the text.
Your Text ... This single text file is your whole track - simple, eh?
Gain Meter ... For visualizing each channel's activity in real time.
Progress Bar ... Keeps track your song's progress in time.
Master Volume ... Controls how loud the master output is. (Each channel has a separate volume
control, too)
Writing Your First Track
Let's write a very basic "Hello BeepComp" source. Start up BeepComp, press the NEW button, choose
"Yes", and type the folloing into the text editor:
// My first BeepComp track! :)
@G
TEMPO=100
MASTERVOLUME=80
@1
CDEFG
And press the play button (with a triangle). You heard an endless series of "do-re-mi-fa-sol...," right? Let
me explain the source.
Two forward slashes // adds a comment. Following two slashes, you can write anything to make a note
to yourself or others. The comment ends at the end of the line.
@ is used to declare the beginning of each "section." @G starts the "global section" where you can set
parameters that affect your entire track. Your section declaration stays effective until you declare
another section (@1 in this case).
TEMPO= sets the tempo of the track. MASTERVOLUME= sets the master output gain. The volume knob will
change accordingly to the master volume when you play your track from the beginning.
@1 declares the start of the first music channel section. Everything you write thereafter will be written to
the first channel until you declare another section.
Then we have the musical notes CDEFG . Note that you have to write musical pitches in UPPERCASE.
You actually heard CDEFG over and over because BeepComp defaults the player to looping mode. (More
about looping later...)
Easy? Let's expand this a little:
// My first BeepComp track! :)
@G
TEMPO=100
MASTERVOLUME=80
@1
O5L4 CDEFG~
@2
O4L4 EFGAB~
@D
L4 KKKSSS
Now play this. You now hear a mix of three channels.
O followed by a single digit number sets the octave. O4 is the default octave where the middle C is, so
O5 is just one above the default octave. L followed by a number ranging from 1 to 64 changes the note
length. L4 sets up the note length to 1/4 of the measure length (quarter notes).
~ is quite useful. It elongates a note by the currently set note length. You can actually chain multiple ~s,
for instance, B~~~ .
Now we have @2 so commands after that goes to the second music channel. You can play up to 9 music
channels simultaneously, so you can declare sections up to @9 .
And you can use the drum channel by declaring @D . Write K for kick, S for snare, H for high-hat. In fact,
you can use lower case k, s, h which will play a little quieter.
Note that you see some white spaces in above examples. You can insert any amount of white space
between commands because they're ignored by the interpreter.
Saving and Loading Your Work
Now let's save your work. Click the SAVE button (or F11), type in hellobeep.txt, and click the Save
button. Now open NotePad or any text editor of your choice, choose to open a file, navigate to the
userdata folder, the default user folder, and open up the hellobeep.txt file we just created.
(Note that default userdata folder will be at following locations:)
C:\Documents and Settings\{USERNAME}\My Documents\BeepComp\userdata on XP
C:\Users\{USERNAME}\Documents\BeepComp\userdata on Vista and later
(Note: for the portable version, find the userdata folder inside the application top folder)
See? Your BeepComp source is simply a text file. And you could even continue to work on your track in
your text editor if you want.
By the way, you can use the ALT + O shortcut from the main editor to open up your userdata folder
anytime.
Copying and Pasting Source
A nice thing about working with text is that you can easily copy and paste between BeepComp and other
sources!
Try this - Start a new file (NEW button or F9), Go to this page, copy all the code inside the grey box, and
press CTRL + V in BeepComp, and play.
I hope you see how easy it can be to share your work with others on the web :)
Of course, going the other way is easy, too. You can easily copy your work from BeepComp by pressing
CTRL + A (select all) then CTRL + C (copy), and paste what you just copied into your external
applications like your Outlook to email your music to a friend, for instance.
Exporting Your Work
You can create audio files of your work by pressing the EXPORT button(or F12). Currently supported
formats are: WAV, MP3 and OGG files. After you export your work, you can add fades and other
finishing touches on audio editors like Audacity.
Note that by default your music won't be looped when exported.
If you want your export to be looped, specify the total number the song should execute with the
command REPEAT=n in the global section. If you want your track to play through once and then fade out,
first write REPEAT=2 in the global section and export your song. This will output your song twice in
succession. Then load the exported file in an audio editor and apply fade-out around the middle of the
file briefly after where the song repeats.
Key Commands
Mouse Input
Mouse position ... Navigates cursor position
Mouse Wheel ... Helps scrolling text up/down
Left Button ... Presses button on screen / selects text
Right Button ... Clears text selection
Key Commands: Main Editor
F1 ... Play from beginning
F2 ... Pause / Unpause
F3 ... Rewind
F4 ... Fast Forward
F5 ... Show key commands
F6 ... Show Documentation
F7 ... Turn delay on/off
F9 ... Start a new file
F10 ... Load from a file
F11 ... Save to a file
F12 ... Export to an audio file
ARROW ... Move cursor
ESCAPE ... Quit
BACKSPACE ... Backspacing, delete selection
SHIFT ... Select text
SHIFT + ARROW ... Expand text selection
ALT ... Clear text selection
CTRL + Z ... Undo
CTRL + C ... Copy
CTRL + V ... Paste
CTRL + A ... Select all
CTRL + S ... Save
ALT + S ... Quick-save to last saved file
ALT + V ... Open the system volume control
ALT + D ... Open the audio device control
ALT + I ... Initialize the audio device
ALT + O ... Open "userdata" folder
HOME ... Go to the very top
END ... Go to the very bottom
Page Up ... Go up by one screen height
Page Down ... Go down by one screen height
Key Commands: File Dialog
ESCAPE ... Exits dialog
HOME ... Go back to the default starting folder
END ... Go back to previous folder
CTRL + Z ... Go back to previous folder
F1 ... Toggle file types to display
F2 ... Display keyboard shortcuts
F12 ... Load/Save/Export (as indicated)
UP/DOWN ... Navigate through the list of files in the current directory
RIGHT ... Selects a file name, Go to child folder (when over <<<)
LEFT ... Go to parent folder (when over <<<)
BACKSPACE ... Backspacing in the file name input
CTRL + G ... Go to a particular drive or special folders (Desktop and Documents)
ALT + O ... Open the currently selected directory in Explorer
ALT + D ... Go to the 'Desktop'
CTRL + R ... Refresh the currently viewing directory
Global Section in DetailThe global section, defined by @G , is where you write commands that influence the entire track. The
elements you can control in the global section are:
Master volume ... MASTERVOLUME=n
Initial channel volume ... V1=n, V2=n, VD=n etc...
Tempo ... TEMPO=n
Delay ... DELAY=ON / OFF, DELAYTIME=n, DELAYLEVEL=n
Looping ... LOOP=ON / OFF
The master volume is also manually controllable with the volume knob in the control panel. Note that at
the start of track, the master volume gets initialized to the declared value by MASTERVOLUME= (or default
value 80 if none specified) so the volume knob position gets reset.
The tempo, measured by beats per measure (BPM), determines how fast your track is played. The
TEMPO= command takes a value between 30 and 300.
The delay effect is applied to the whole track (not to inidividual track). See the Delay Effect section for
more.
By default, your track is set to play in an infinite loop. You can turn off track looping by LOOP=OFF. If you
want to loop your track a certain number of times, you could first set LOOP=OFF in your global section
and then enclose the entire real time data with {} in each channel.
Here is an example of using the global section to set up the volume, tempo and looping for your track:
@G
MASTERVOLUME=50 // not too loud
TEMPO=80 // kind of slow
LOOP=OFF
REPEAT=3 // song plays 3 times in succession
DELAYTIME=750 // adjust delay timing
@1
GFEDC
Music Section in DetailEach section for a music is defined with @n. Your first channel section will start with @1, your second with
@2 and so forth.
Musical Notes
Musical notes are written with note names C, D , E, F, G , A and B in UPPERCASE. The following
example plays an ascending C major scale:
@1
CDEFGAB
A note with a sharp is written with # following its pitch name - C#, for example. A note with a flat is written
with b, for example, Ab. A chromatic scale can be played this way:
@1
CC#DD#EFF#GG#AA#BBbAAbGGbFEEbDDbC
Note Length
To specify the current note length, use the L command. The letter L should be followed by a number
ranging from 1 to 64, the factor which should divide the measure length. L4 sets the 1/4 of the measure
length, so you get the quarter note length. L8 gives you the eighth note length. Your length definition
stays effective until the next L command.
The below example plays a few long half notes followed by a series of fast 32nd notes:
@1
L2 CDE L32 GABAGFED
Rests
Rests can be easily inserted with a symbol :. The length of the rest is determined by the current note
length.
@1
L4 C:CDE:EFG:G:E:::
The above example should show you how rests can be inserted intuitively.
Octave Changes
To specify the current octave range, use the O command followed by a number. The middle octave
where the middle C sits is O4 , and it's the default starting octave of each channel. The example below
plays some notes in a high octave range O6 then plays low notes in the octave O2.
@1
O5 GG:G:DE:C::: O2 C:::
Another way to navigate through octave ranges is to use the < and > symbols. < means go down by
one octave, and > means go up by one octave. The example below sweeps up and down the entire
possible octave ranges:
@1
O1 C>C>C>C>C>C>C>C<C<C<C<C<C<C<C
Ties
You can elongate a note quite easily by the multiple of the current note length. To do that, use the ~
symbol after the note you want to elongate. For example, try this example:
@1
L8 C~~DE~~CE~C~E~~~
You can be pretty liberal with chaining ~ symbols if you want, for example try L8C~~~~~~~ :)
Tuplets
Tuplets are useful when you have to insert triplets or any other notes in non-standard subdivisions.
Tuplets can be entered using the [] symbols. You simply enclose the notes you want to group in the
space of the current note length:
@1
L4 C [EDC] D [FED] E [GFE]
You should have heard the notes enclosed in brackets as triplets in the space of a quarter note.
You can specify this grouping space, also. For example, if you want to write a quintuplets in a quarter
note space in the midst of 8th notes:
@1
L8 C~~~ [4CDbC<B>C] >C<BbAbGFE
Volume changes
You can specify the volume of a channel at any point by using the V command. Write V followed by a
value from 0 to 10, like V10 or V4 .
@1
V10 CDEFG V5 CDEFG
The above source will play the first phrase in full volume and the second half as loud.
If you want to make many gradual changes in your channel, symbols ^ and _ will come in handy. ^
increases the volume by 10%, and _ decreases by 10%. Try this:
@1
V0 L32
AEFD ^ AEFD ^ AEFD ^ AEFD ^ AEFD ^ AEFD ^ AEFD ^ AEFD ^ AEFD ^
AEFD _ AEFD _ AEFD _ AEFD _ AEFD _ AEFD _ AEFD _ AEFD _ AEFD
Repeats
If you want to repeat a phrase or a section of your music, you can use the {} symbols. Anything
enclosed in these symbols are repeated.
@1
{EbDD:} EbDD: Bb~~~
You can actually nest a repeat inside another repeat. For example:
@1
{CDEF{GFEF}ED} {{{C~}}}
Note that nesting makes the total number of repeats grow exponentially. The latter part of the above
example is repeated 2 x 2 x 2 = 8 times.
You can also specify a certain number of times which a phrase should repeat by adding a single digit
number just after the left curly brace like this:
@1
{5CDE}{3FGA}
Fall Effect
If a musical note is followed by comma ,, the Fall effect is added, causing it to decrease its pitch in time.
Here is an example where you can observe how this effect works:
@1
FALLSPEED=1200
FALLWAIT=500
L1
C,D,E,
FALLSPEED is how many 100ths of a semitone the pitch decreases in a second. 1200 means a range of
one octave per second. FALLWAIT= specifies the time in milliseconds before the effect starts.
The Fall point can be set in the middle of a tie series. This makes rhythmical timing of the effect easy.
Try this example:
@1
FALLSPEED=1200
FALLWAIT=0
L16 O5
FECD~~~~ ~,~~~ <A>CDC
FECD~~ ~,~ <A~G~F~E~ ::::
Rise Effect
Placing an asterisk * is before a note causes that note to scoop up to its pitch, producing a similar effect
of a synthesizer pitch-bend wheel. RISESPEED= sets the speed for the rise in 100ths of a semitone per
second. RISERANGE= determines how wide the pitch change should span. This effect can nicely add
liveliness to your musical lines:
@G TEMPO=160
@1
RISESPEED=2400
RISERANGE=200
L8 O4 *EGA> *CCC *CCC *CC *C <AGD#EC<AG>
*CCC *CCC *CC ::::::::
Waveform Selection
You can choose a waveform other than the default square wave for each channel by declaring
WAVEFORM=n. See Waveforms.
"Beef-Up" Effect
Each channel comes with a mild overdrive effect you can use to give it a boost by declaring BEEFUP=n.
See Beef Up!
Preset Selection
You may choose a preset to for a quick tone shaping by declaring PRESET=(presetname). See Tone
Presets.
Volume Envelope Commands
Each channel has a volume envelope filter to help shape a unique sound. See Volume Envelope.
LFO Commands
The pitch LFO filter adds a vibrato effect. See LFO Effect.
Astro Command
The "Astro" effect is a unique 80's-ish wobble effect. See Astro Effect.
Ring Modulation
You can use two music channels to create a ring modulation effect similar to the effect Commodore 64's
SID chip produced. see Ring Modulation.
Drum Section in DetailWriting @D starts the drum section.
Drum Hits
You can write a snare hit with S , and a kick with K. These normal hits come in UPPERCASE alphabets.
With : giving a rest, a basic kick-and-snare groove can be written:
@D
K:S: KKS:
The hi-hat is written with H. A disco groove pattern can be played like this:
@D
K:H: S:H: K:H: S:HH
Quieter Drum Hits
If you write the drum hits in lower case, you get quieter drum hits. These can be added to give rich
dynamics to your groove:
@D
K::k S::k :kK: S:HH K:hh S:kk :shh hsSS
Note Length
Just as we did for a music channel, we can specify the note length as you go in the drum channel as
well. Use the L command with a number ranging from 1 to 64, with the number being the subdivision
factor of the measure. For example:
@D
L2 S L4 S L8 S L16 SS L32 SSSS L64 SSSSSSSS
But you might want to set to the smallest subdivision once at the beginning and rely more on using rests
and ties. You'll find this way much easier especially when working with groove-based music :)
Rests
A rest is indicated with a : as illustrated above. The length of a rest is determined by the currently set
note length by the L command.
Ties
Instead of using a rest to fill a gap, you can use a tie symbol ~ to elongate a hit. The difference is that
the tie ensures that the note gets played through the elongated space. When you hit and rest, if the note
length is set very short, the abrupt cut-off of the hit might become obvious. Try this example to hear the
difference:
@D
L64
S::: S::: S::: S:::
S~~~ S~~~ S~~~ S~~~
Tuplets
Tuplets make it possible to express quite complicated timings. Just as you saw in tuplets used in a music
channel, you have two ways of expressing tuplets. The first way is to enclose hits simply with [] where
the total length of grouped hits is the currently set note length. The second way is specifying the total
length of grouped hits in the format [n(hits)].
Using the both methods, let's illustrate some interesting things you can do to your groove with tuplets:
@D
L16
K::[KK] S~~~ K::: [4SSS]
K[KK]K[KK] KK[8HHHH] ss[8sss][8SSSS][8SSSSSSSS]
Noise Type
There are two types of noise available to use for your drum sounds: white noise and pink noise. The
default noise type is bright-sounding white noise. Pink noise gives you a darker color. To change the
noise type on all drums at once, use the commands WHITENOISE or PINKNOISE. To change the noise
type individually on a drum, use the commands KICKNOISE=, SNARENOISE= or HIHATNOISE= and specify
PINK or WHITE following the equal sign. Try the following example to explore the different noise types:
@D
PINKNOISE // darker
{ K:HKS~~s hsKKS~Hs }
WHITENOISE // brighter (default)
{ K:HKS~~s hsKKS~Hs }
KICKNOISE=PINK // pink noise only for kick
{ KKS~ KKS~ KHS[HH] HSSS }
Adjusting the Noise Mix
The drum channel combines two audio sources: a noise oscillator and a square wave oscillator. You can
adjust how loud each source's output is by commands NOISELEVEL= and SQUAREWAVE= with values
ranging from 0 to 100. The following example decreases the noise oscillator's output volume gradually:
@D
SQUARELEVEL=100 // 100 is default
NOISELEVEL=100 { K:HHS~HH }
NOISELEVEL=70 { K:HHS~HH }
NOISELEVEL=40 { K:HHS~HH }
NOISELEVEL=0 { K:HHS~HH } // you won't hear hi-hat
The Hi-hat only uses the noise output. That's why you didn't hear the hihat in the last line where the
noise output was set to zero.
Drum sound shaping
One way you can change how your drums sound is to change the tuning pitch of the snare or the kick.
Use SNAREPITCH= and KICKPITCH= with values from 0 to 100 to adjust the pitches. The default value is
50 for the both drums. Hear how pitch adjustment affects how your drum kit sounds:
@D
RESETDRUMS // set all parameters back to default
{3 KhKS~h} [ss]SS[ss]SS
SNAREPITCH=20 KICKPITCH=30 // lower than default value 50
{3 KhKS~h} [ss]SS[ss]SS
Another way to shape your drum sounds is to change the time length value of each drum by writing
commands KICKLENGTH=, SNARELENGTH=, HIHATLENGTH= with values in milliseconds. The default time
length values of kick, snare, hi-hat are 40, 140, 20, respectively.
@D
L8 RESETDRUMS // all back to default
K:::S~H~ K:::S~H~
KICKLENGTH=70
SNARELENGTH=200
HIHATLENGTH=100
K:::S~H~ K:::S~H~ // all drums are longer
Delay EffectThere is a nice stereo delay effect that is added to your track by default. You can turn off the delay by
pushing the DELAY button or pressing F7.
You can set the delay parameters in your source. Your commands will go in the Global section. For
instance:
@G
DELAY=ON
DELAYTIME=200
DELAYLEVEL=50
@1
CDEFG
This gives you a pretty prominent delay effect with a short timing. Play around with DELAYTIME= (in
milliseconds) and DELAYLEVEL= (scale of 100). You can turn off delay for the whole track by saying
DELAY=OFF. You can use DELAYTIME=AUTO to automatically set the delay timing according to the tempo.
Please note that you cannot change the settings for the delay effect not separately on each channel.
Volume EnvelopeFor each channel, you can shape your sound using the volume envelope. The chart below shows the
parameters you can set and how they will shape the volume changes in time.
Attack Time ... Defined with ATTACKTIME=n (n=0 to 9999). The time, in milliseconds, that takes to
get to the initial peak stage. A small or no attack time results in a sharp sound. A large attack time
gets a soft sound.
Peak Time ... Defined with PEAKTIME=n (n=0 to 9999). The time, in milliseconds, that the sound
stays in its peak.
Peak Level ... Defined with PEAKLEVEL=n (n=0 to 100). How loud the sound is in its peak.
Decay Time ... Definied with DECAYTIME=n (n=0 to 9999). Determines how fast it goes downs to the
plateau of the sustain stage.
Sustain Level ... Defined with SUSTAINLEVEL=n (n=0 to 100). How loud the sound stays in its last
plateau stage until the note turns off.
Release Time .... Defined with RELEASETIME=n (n=0 to 9999). If the channel rests after a note is
turned off, you get into the release stage where the note gradually fades away.
Let's experiment with these parameters.
@1
ATTACKTIME=1000
L1 CDE
Each note starts very slowly.
@1
ATTACKTIME=0
DECAYTIME=1000
SUSTAINLEVEL=0
L1 CDE
Now you get a hard, bell-like tone. The volume will decay all the way to 0 because the level of the
sustain stage is set to 0.
Note that if you don't set one of these parameters, it'll come in its default value. The default set values
are:
ATTACKTIME=22
PEAKTIME=18
PEAKLEVEL=90
DECAYTIME=250
SUSTAINLEVEL=50
RELEASETIME=40
I invite you to play around with different settings for each parameter. By the way, you could get a "pure
PC beep" tone with an unprocessed square waveform like this:
ATTACKTIME=0
PEAKTIME=0
PEAKLEVEL=70
DECAYTIME=0
SUSTAINLEVEL=70
RELEASETIME=0
LFO EffectYou can use this pitch LFO effect for each channel to give it a nice vibrato. Here is an example to try:
@1
LFO=ON
LFOSPEED=6
LFORANGE=30
LFOWAIT=300
L2 CDEFG
LFO= turns on the pitch LFO effect. It's turned off by default. LFOSPEED= sets the number of cycles per
second for the pitch change. LFORANGE= determines how big the pitch change should occur, specified by
the cent of semitones (so 100 will set it to one semitone). LFOWAIT= sets the time to wait to start the LFO
effect, specified in milliseconds.
You could even use this LFO effect to get really wacky results. Try setting LFOSPEED=1 and
LFORANGE=2400 :)
Astro EffectThis is a very fun effect you can add to your music. The name comes from a game titled Astro Wars,
which I used to play on a little TV game console. (search with "Astro Wars SCV" on YouTube :)) What
this effect does is to add a square wave LFO to the pitches. The resulting sound is an out-of-world,
funky and wobbly sound. Try:
@1
ASTRO=14
L4 CDEFG
The number you specify after ASTRO= is the number of times that the wobble happens. Between 10 and
20 is good to start with, but try different values to see which value works for you.
WaveformsEach music channel is by default set to play a square wave tone. But you can change to different a wave
form to work with, by declaring WAVEFORM=n in each channel. The currently available waveforms and
their assigned numbers (n) are:
sine (n=0)
square (n=1, default)
sawtooth (n=2)
triangle (n=3)
hybrid sine A(n=4)
hybrid sine B(n=5)
pulse with 12.5% cycle (n=6)
pulse with 25% cycle (n=7)
pulse with 33% cycle (n=8)
The most frequent waveforms used in old PCs and early game consoles were perhaps square waves.
The hybrid sine waves combine a basic sign wave with a few additional upper harmonics. Pulse waves
(n=6 through 8) are kinds of sounds used a lot in the old Nintendo NES games.
Here is an example where a different waveform than the default form is selected:
@1
DEFAULTTONE // resets the tone to plain beep with no envelope
WAVEFORM=2 // sets up a saw tooth wave
F~:G~:Ab~:>C~:<Ab:G:F~:Eb~:F~~~~~::::
If you overlay multiple pulse wave tracks, the mixed waveform will start to get heavier on one side. This
can take away the audio headroom if you want to raise the track volume after exporting. You can help
balance your mixed output by using WAVEFLIP in some of your tracks using pulse waves to filp the
waveform vertically.
Beef Up!For each channel, you can use a mild overdrive effect if you want to boost up a soft waveform. The
overdrive is turned off by default. To use it, simply declare BEEFUP=n where n is a number from 0 to 100
that specifies the strength. Setting to zero turns off the effect. Try the following example to see what
BEEFUP does:
@1
PRESET=POPPY // attacky shape
WAVEFORM=3 // triangle wave (soft)
L8
BEEFUP=0 CDEFG~ // BEEFUP is off
BEEFUP=10 CDEFG~
BEEFUP=50 CDEFG~
BEEFUP=100 CDEFG~
The beef-up effect is available also available for the drum channel, but be careful because too much of
this effect can lessen the crispness of the drum hits.
Tone PresetsWith one line of the command PRESET=, you can set your channel to a set of predetermined tone
parameters. You are welcome to try out the currently registered presets by declaring one of the
following at the top of a channel:
DEFAULTTONE ... (Square wave) Resets to flat envelope shaping.
PRESET=BEEP ... (Square wave) Straight PC Beep tone.
PRESET=POPPY ... (Square wave) Sustained tone with a strong attack.
PRESET=POPPYVIB ... (Square wave) Preset POPPY with vibrato.
PRESET=BELL ... (Square wave) Hard tone that decays in time.
Ring ModulationRing modulation is an effect where the inputs of two audio source are multiplied. The resulting sounds
can be very unique and futuristic, and they're sure to amuse your ears. You can use this effect to
produce metallic percussive sounds or Sci-Fi sound effects. To use this effect, within a music channel,
designate another channel as the modulator source by using the command RINGMOD=n where n is the
modulator channel number. The direct output of the modulator channel will not be audible.
In the following example, Channel 1 is set to take Channel 2 as its modulator input. Channel 2 feeds a
signal with the ASTRO and Fall effect into Channel 1:
@1
RINGMOD=2 // channel 2 modulates channel 1
DEFAULTTONE
L1 O3 C~
@2
ASTRO=10
L1 O6 D#~,
Experiment further changing Channel 2's output using various effects, envelope settings and
waveforms. Additionally, you can route any of the nine music channels to modulate any other channel.
Ring modulation offers a huge range of tonal possibilities. You can read more about the ring modulation
effect here.
Bookmarking Your Start PositionWhen you compose a long song, you can take advantage of the bookmarking feature. Placing two
percent signs %%in your source forces the player to start from where those percent signs are. Here is an
example:
@1 L8
// verse
{E~G~G~A~G~G~E~~~}
%%
// chorus
F~G~A~F~>C~C~<G~~~
Let's say you have just finished working on the verse in the above example - since the bookmark is
placed at the top of the chorus, you can now focus on writing the chorus without having to go back to the
top every time you press the play button.
Note that the bookmark will not be effective when you export to an audio file.
Auto SavingYour work gets automatically saved to a hidden file named "__AUTOSAVED__.txt" in your userdata
folder every 5 minutes and also when you quit the application. If something unexpected ever happens,
you can load this file to retrieve your work.
Syntax Reference
General
// ... Commenting
@G ... Declares the global section
@n ... Declares a music channel section (n=1,2,3...9)
@D ... Declares the drum channel section
%% ... Bookmarks the player's starting point (Note: not effective when exporting)
Global Section
MASTERVOLUME=n ... Sets the master output gain (n=1 to 100)
TEMPO=n ... Sets the track tempo (n=40 to 400)
Vn=v ... Sets the volume (v=0 to 10) for channel n (n=1 to 9, m=0 to 100)
VD=v ... Sets the volume (v=0 to 10) for the drum channel
LOOP=? ... Turns track looping on or off (?=ON or OFF)
REPEAT=n ... Play or export the song n times in succession (automatically sets LOOP=OFF)
DELAY=? ... Turns the delay effect on or off (?=ON or OFF)
DELAYLEVEL=n ... Sets the delay output level (n=0 to 100)
DELAYTIME=n ... Sets the delay timing in milliseconds (n=0 to 999)
DELAYTIME=AUTO ... Sets the delay timing according to the tempo.
DELAYTIME=AUTO3 ... Sets the delay time to 8th triplets according to the tempo.
Music channel
ATTACKTIME=n ... Sets the envelope attack time in milliseconds (n=1 to 9999)
PEAKTIME=n ... Sets the envelope peak time in milliseconds (n=1 to 9999)
PEAKLEVEL=n ... Sets the envelope peak level (n=0 to 100)
DECAYTIME=n ... Sets the envelope decay time in milliseconds (n=1 to 9999)
SUSTAINLEVEL=n ... Sets the envelope sustain level (n=0 to 100)
RELEASETIME=n ... Sets the envelope release time in milliseconds (n=1 to 9999)
LFO=? ... Turns the pitch LFO effect on or off (?=ON or OFF)
LFORANGE=n ... Sets the LFO range to cents of a semitone (n=1 to 2400)
LFOSPEED=n ... Sets the LFO speed by cycles per second (n=0 to 100)
LFOWAIT=n ... Sets the time in milliseconds before the LFO effect starts (n=0 to 9999)
ASTRO=n ... Turns on the Astro effect and sets the number of wobbles per second (n=0 to 100, 0 for
OFF)
ASTRO=OFF ... Turns off the Astro effect
PRESET=? ... Sets up at once for a predetermined set of tone parameters
DEFAULTTONE ... Sets up a straight square wave tone
WAVEFORM=n ... Chooses the waveform that the channel uses (n=0 to 5)
WAVEFLIP ... Flips the channel's audio output waveform vertically
FALLSPEED=n ... Speed of the Fall effect in 100ths of a semitone per second (n=0 to 9600)
FALLWAIT=n ... Wait time in milliseconds before the Fall effect starts (n=0 to 9999)
RISESPEED=n ... Speed of the Rise effect in 100ths of a semitone per second (n=0 to 9600)
RISERANGE=n ... Pitch width for the Rise effect in 100ths of a semitone (n=0 to 9600)
BEEFUP=n .... Add a mild overdrive effect to the channel (n=0 to 100, 0=off)
Vn ... Sets channel volume (n=0,1,2...10)
Ln ... Sets the current note length (n=1 to 64)
C ... Musical note
D ... Musical note
E ... Musical note
F ... Musical note
G ... Musical note
A ... Musical note
B ... Musical note
# ... Sharp
b ... Flat
~ ... Elongates note by current note length
: ... Rest for the current note length
[---] ... Tuplet - groups notes --- in the space of current note length
[n---] ... Tuplet - groups notes --- in the space of note length specified by n
{---} ... Repeats the enclosed snippet ---
{n---} ... Repeats the enclosed snippet --- n times
^ ... Increase channel volume by 10%
_ ... Decrease channel volume by 10%
, ... Fall effect, works on the pitch commanded just before
* ... Rise effect, works on the pitch that comes right after
Drum Channel
RESETDRUMS ... Resets all drum tone settings to default
WHITENOISE ... Set all drums to use white noise
PINKNOISE ... Set all drums to use pink noise
NOISELEVEL= ... Set the noise element's volume (n=0 to 100, default=100)
SQUARELEVEL= ... Set the square wave element's volume (n=0 to 100, default=100)
KICKNOISE=? ... Set the kick's noise type (?=WHITE or PINK)
SNARENOISE=? ... Set the snare's noise type (?=WHITE or PINK)
HIHATNOISE=? ... Set the Hi-hat's noise type (?=WHITE or PINK)
KICKPITCH=n ... Sets the kick's pitch tuning (n=0 to 100, default=50)
SNAREPITCH=n ... Sets the snare's pitch tuning (n=0 to 100, default=50)
KICKLENGTH=n ... Sets the kick's duration in milliseconds (n=0 to 400)
SNARELENGTH=n ... Sets the kick's duration in milliseconds (n=0 to 1000)
HIHATLENGTH=n ... Sets the kick's duration in milliseconds (n=0 to 1000)
BEEFUP=n ... Add a mild overdrive effect to the channel (n=0 to 100, 0=off)
Vn ... Sets channel volume (n=0,1,2...10)
Ln ... Sets the current note length (n=1 to 64)
K ... Kick
k ... Kick, quieter
S ... Snare
s ... Snare, quieter
H ... Hi-hat
h ... Hi-hat, quieter
~ ... Elongates note by current note length
: ... Rest for the current note length
[---] ... Tuplet - groups notes --- in the space of current note length
[n---] ... Tuplet - groups notes --- in the space of note length specified by n
{---} ... Repeats the enclosed snippet ---
{n---} ... Repeats the enclosed snippet --- n times
^ ... Increase channel volume by 10%
_ ... Decrease channel volume by 10%
Uninstalling BeepCompYou can uninstall the application by using the "Programs and Features" under the Control Panel /
Programs menu to uninstall BeepComp. Typing in "appwiz.cpl" in the command prompt or in the search
box will direct you to this dialog, also. You can also find a shortcut to uninstall in the Start menu.
Please note that your "userdata" folder inside your "Documents" (or "My Documents" on XP) folder will
not be removed, just in case you still have some of your work left in this folder. If you no longer need
your "userdata" folder, please manually delete it along with its parent folder named BeepComp.
Staying UpdatedNew updates of BeepComp come out often. I ask every user to stay updated since updated versions fix
the bugs and improve on the issues found on the previous versions. I announce new versions through
the SourceForge Blog page. I also upload patches whenever there is a critical issue.
Alternatively, you can scroll down the SourceForge project top page to below the feature list and press
the button that says "Follow" to receive automatic updates. But be alerted that you might receive third-
party mail from SourceForge. I will also be sending out update notifications via Twitter and Google+.
You can find out the version of BeepComp you're using by clicking the logo in the main editor screen.
When you update to a new release, you will have to first uninstall your current version.
If you found issues/bugs...BeepComp is still in its development stage... so I really appreciate you letting me know about any issues
you experience. You're welcome to write in our forum page or email me at beepcomp-at-hiromorozumi-
dot-com. I really want to make a program that is reliable and enjoyable to anyone :)
I am also documenting the issues as they get identified on the Known Issues page on sourceForge.
BeepComp on the WebThe home page for BeepComp is at: http://hiromorozumi.com/beepcomp.
Also, there is a forum page where you can join our discussion. I have also set up a Facebook page.
The source code is publicly available at the SourceForge repository. I will also welcome patches if you
spot issues. The address of the repository is: https://sourceforge.net/p/beepcomp/code/ci/master/tree/.
Also, I have been developing a game audio engine library API for game developers to incorporate music
made with BeepComp into their projects. This library is available at Github.
Contact Me!I welcome anyone using BeepComp and also anyone interested in getting involved in this project to
getting in touch. Feature suggestions are great. Bug reports are welcome. If you are a coder interested
in working together to make this a better application, that's great, too! Just letting me hear the tracks you
create with BeepComp will make my day :) You can contact me by emailing me at beepcomp-at-
hiromorozumi-dot-com.
Top Related