Beep - free 1-track ASCII music sequencer for families



Beep is currently a 1-track ASCII commandline music sequencer intended for families, especially teens and kids and budding musical geniuses.

Provided you have written the music and there are no copyrights on it or you own the copyright, you can email the music to friends and family. for instance, if you have a new Happy Birthday song.

You can also put in sheet music in, but it's currently limited to 1 simultaneous note at a time. I am still working out and waiting for a way to play music, and it may cost me some money to make it work with any sort of common file format. .WAV and .MP3 files are out of the question, at least at this point, unless Microsoft releases the wav format.

I cannot compile the code right now because of both VC++ and mingw-w64 rejecting the goto statement, which is required only a little for this program to skip some things. sorry kids. maybe soon when they bootstrap the compilers from a working version. the current compilers don't follow the c++ standard (standards document for C++14 is $133). Please wait until the compilers get fixed for beep to work. until then, I have the current source code. I hope it works. it's free.


Beep takes as music input/commands:

  • it can take a file using beep -file musicfile.txt or commandline music with -music some music keywords
  • M2 measure numbering
  • GOTOM(measureNumber), I think there's an IF involved. so there may be FIRSTM(measureNumber) LASTM(measureNumber) MIDDLEM(measureNumber). maybe - those may have an IF or GOTO on them. I have a problem with going over the same piece of music multiple times.
  • END ends the song.
  • LYRIC(hyphenated-word) is specified after a note, if any, outputs lyrics during song performance.
  • TIMESIGNATURE(4/4) with upper as number of beats per measure and lower as note value for the beat (not a fraction) or TIMESIGNATURE(c) or TIMESIGNATURE(c/) or TIMESIGNATURE(c|) for time signatures
  • BPM(120) or BPM(adagio) beats per minute (default 120)
  • MPM(30) or MPM(legato) measures per minute
  • notes in the format noteName "C" followed by appropriate numbers of sharps (#) or flats or 2 #'s is x or (b) or naturals (nat or natural) followed by octave number (3 to 8 inclusive) followed by durations which are concatenated (appended) together and used like a musical tie notation example: whq.. followed by V and volume value which can be negative or positive (negative if you wish to invert the waveform in the future).
    noteNameOctaveDuration: C#4q...w..V100 where q...w.. is a tie of the duration of q... and w..
    with Volume (amplitude) of 100 (currently ignored),
    and note of C# or Csharp or Csharpsharp or Cx, or Cbb or Cflatflat for example.
    see the documentation for duration sizes, it goes from w for whole notes down to 1/2048th notes.
    Range of volume is not set yet and is currently ignored and is in place for the future.
  • KEY(Am) takes PIANO as circle of 5ths input as well as Guitar key
  • REPEAT:[numTimes ] repeats music numTimes
  • DOCHORUS(numRepeats) calls chorus section numRepeats times.
  • CHORUS[ ] defines chorus section in the music.
  • DOVERSE(numRepeats) calls verse section numRepeats times.
  • VERSE[ ] defines verse section in the music.
  • TRIPLET( ) plays a triplet
  • waveform files or waveform output via WAVEFORM(tracknumber,numChannels,filepath,bitWidth).
  • Note durations: W=whole note, H=1/2 note, Q=1/4 note, E=1/8 note, X=1/16 note, T=1/32 note, S=1/64 note, O=1/128 note, I=1/256 note,L=1/512 note,U=1/1024 note,F=1/2048 note[,N=1/4096 note]. 1/4096 note doesn't work due to being too fast for current PC architecture.
  • all of this is separated by spaces on 1 line for a track/instrument. an instrument is assigned to a track.

Beep can also take music via -music as shown above.

Beep can take random durations or random frequencies or both.

Beep can be used for Ear/Pitch Training and practice sessions for your Music Instructor at home. You can also use it to play sheet music you bought to find out what the music sounds like (keep the sheet music as long as you keep the files, they are usually copyrighted).

Only the 1st line(track) is played.

beep -help gives you help. It is suggested you get your parent's approval to change the layout of the cmd shell first, then alt-space,properties,layout,change the layout to 155 columns and 2000 rows, because help gives a lot of output and so does beep, it's wide, and this leaves a lot of room for experimentation and music repair space that you can scroll back to.

For lack of something better to call it, I am calling it ASCIIMUSIC.


  • IFFT(trackChannel,frequency32,frequency16,frequency8,frequency4,frequency2,frequency1)? how would this sound? OK to use LaPlace's IFFT?
  • MIDI file output, Lord willing. get permission.
  • MIDI output to built-in wavetable synthesizer using INSTRUMENT(MIDI,trackChannel,filepath). get permission.


right click on download button and save file as. extract with 7-Zip 18.03. binaries are in the \32\ and \64\ directories. 1.8 is a simpler working version and contains some songs.

Download Now
beep.7z - source, songs, and executable (02/22/2018,287MB)

Download Now
beep-1.8.7z - source, songs, and executable (02/22/2018,22MB)

Download Now
copyrighted_songs.7z - ASCIIMUSIC song .txt files (02/22/2018, 287MB)


1.8 working version. not great, but working.
1.10 pre-DirectSound. but has problems with make_beep() and multiple tracks. 
4.0 added DirectSound, but does not compile because DirectSound is not complete at this time.
4.1 numerous Instrument class fixes. made tracks work for Instrument.make_beep() when no DirectSound is available. but DirectSound needs to bow out yet somehow and I need to turn it off by #define.
	at least 5 songs (and my own Happy Birthday song)included. some have timing problems you can solve on your own time.


These songs are allowed to go to the UK. it is allowed to go everywhere.