Article History

70% kleeder

fsound (format)


Point Type:
File Types:
Max Filesize:
Music made for the 1channel PC Speaker-like tool "fSound". If you're using custom samples, please submit them together with your .fss in a .zip file
  1. Versions
  2. Tools
  3. Editing the .fss file without using converter tools
  4. Samples
  5. Restrictions on submit
  6. Accepted file format
  7. Playback (for voting)
  8. Render to MP3
  9. Dead links for posterity
fsound is a tool for making one-channel music on Microsoft Windows (and works fine in Wine
) by ant1. It's the Windows port of his old BEEPER.EXE tool, a tool capable of creating one-channel songs for the IBM PC Speaker. What, were you expecting another ZX Spectrum beeper engine?

It's also a ridiculously simple tool (not exactly simple usability-wise), meaning it's basically more accessible and platform-independant than any tool for writing beeper or Channel F tunes. It takes specially formatted text files (*.fss for posterity) as input and spits out 8-bit wav files.

Download here


kleeder made an attempt to structure different versions of fsound in this thread.

fsound v1
Release: Nov 27 2010 (?)
Features: Generating Square Waves of different length

There was an initial release of fsound, probably on Nov 27 2010 (v1), which only featured the generation of square waves of certain lengths. Initial tempo cld be set at the beginning of the file. The first 4 battles (666, 670, 679, 680) all used this version.

fsound v2
Release: Dec 1 2010
Features: Added white noise, triplets, tempo changes

This version got only used in one battle and still exists as
. The flash version by shiru mentioned below also seems to use this version of fsound.

fsound v3
Release: Dec 2 2010
Features: Added volume control, 2 samples (kick/snare) and loop points

This version is the "default" version of fsound and got used in all battles since Dec 2 2010. It is also the version which can be downloaded above or at the mirror download page here
. All new BotB entries shld be rendered with this version of fsound.

fsound v4
Release: Dec 5 2010 (?)
Features: unsure. Comments aren't supported anymore, a bunch of new commands got added, which aren't documented. 4 kick and 4 snare samples seem to exist. The wav-output has a heavy offset.

This version got rediscovered by kleeder in Feb 2022 as part of the
made by null1024, who happend to still have the archive in his dropbox. The date of creation within the .zip points to Dec 5.
Because comments are not supported by this version, it is technically not backwards-compatible with older .fss files made for v1-3. The output is also different due to the offset in the written .wav
It does feature some simple command line prints compared to the previous versions.
This version is not allowed for BotB entry submission, because it is more of a "prerelease" which features bugs and doesnt completely fit into the series of the previous versions. It is listed here for completionism tho and cld be used for wildchip submissions, if someone wants to do this.(lol)


is a tool by Jangler and improved by kleeder to convert IT modules into fsound FSS files. It supports Tempo Changes, Volume Control and Samples.
You'll need Python 3
to run it. An explanation on how to use it is hidden as a comment at the beginning inside the script itself.

Another tool by kleeder called fSpeed allows you to convert 44100Hz mono channel .wav's into .fss files, which gives the opportunity to let fsound emulate pcm-samples at low quality. The conversion process takes up a lot of time though and the output fss is very big, even for shorter .wav files. If you plan to use it for your BotB entry, keep in mind the size limit of 10mb! It can be downloaded here

shiru also has a flash version at but it may be slightly behind on features.

Another tool by kleeder is randomize_fsound, a program that generates a random .fss file. Is this useful in any way? Who knows! But it exists! Download here

Editing the .fss file without using converter tools

fsound uses a simple, proprietary, MML-like markup language in order to render these PC speaker tunes. Most .fss files can be opened in even the simplest of text editors (though Notepad++
is recommended) and can be generally understood within a matter of minutes. Here's how this markup format works:

The speed amount is placed in the first line - much like other trackers, the bigger the number, the slower the song. Tempo changes later in song need to be indicated by marking the number with a t at the front.

Comments are marked with " > " (spacebars are obligatory). Empty lines are ignored by the converter and ought to be constantly abused for easier navigation.

Notes are specified as:


A note can be any of the following:

a b c d e f g A C D F G x

Uppercase letters indicate a sharp note, whilst x indicates white noise. The octave range goes from 1 to 7 (c1 to b7).

Lengths can be:
  • 1, being a semibreve (whole note).
  • 2, being a minim (half note).
  • 4, being a crotchet (quarter-note).
  • 8, being a quaver (eighth-note).
  • f, being a semiquaver (sixteenth-note).
  • g, being a demisemiquaver (thirty-second-note).
  • t, being a triplet.

Volume ranges from 0 to f. If a note has no volume value, it will use the default volume, which can be set with v followed by 0 to f. The default volume is automatically set to a if none had been set by then.

Rests are specified as r-[length].

Loops within fsound are especially simple: to start a loop, type LS before the portion you want to loop. Then, to end a loop, use Lx, where x is the number of times to play the song. A loop may be played anywhere between 2 to 9 times! CAUTION: Loops within loops are ill-advised, as they do not work and will break your song if you try doing so!

Note seperation can be done via line break or semicolon.

Drum samples are specified as [drum] - [length]. The only drums that are supported are K (kick) and S (snare).

Example Song









fsound uses .raw samples for Kick and Snare Drum, so it's possible to replace these samples with your own. Just make sure to use the same encoding and filename and fsound will be able to render them without problems. There might be OHBs which uses custom samples as their bitpack. Sample support is still very limited, since you're not able to pitch them or use more than two for one file.

Restrictions on submit

Your submitted .fss file has to be in the correct syntax for fSound to convert it into a wav-file.
If you're using custom samples, put them together with the .fss in a zip-folder and upload the zip!

Accepted file format

.fss is the file type supported for this format. If you're using custom samples, please submit them together with your .fss in a .zip file.

Playback (for voting)

Drag and drop the .fss onto the fSound.exe and wait for the program to process it; once done, a freshly baked .wav file will be ready for you to listen to! Make sure to have the kick.raw and snare.raw files in the same folder as the fSound.exe. If there are special samples provided in the bitpack or if the uploaded file is a zip, make sure to replace the default kick and snare-files with said samples.

Render to MP3

Use fSound to generate the .wav and convert it with a tool of your choice into a .mp3.

Battle Formats