Skip to content
SoundBox is an HTML5 synth music tracker/editor, suitable for creating music for small JavaScript demos (4K / 8K).
Branch: master
Clone or download
Veikko Sariola and mbitsnbites Fix bug, where user might experience sudden volume change in jammer w…
…hen changing instruments.

In jammer, if old notes were playing when changing to a new instrument, the old notes continued to play with the new instrument. If the new instrument was much louder than the old, the user might damage her ears. Prevent deafness by muting the sound if more than one setting was changed simultaneously (e.g. loading a new preset or changing from one channel to another).

Fixes #52
Latest commit dc9f1b1 Oct 14, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
gui Save instruments into binary files. Oct 10, 2017
third_party Moved deflate/inflate to third_party Aug 10, 2013 Add some coding conventions Oct 7, 2017
arpeggio-demo.html Update arpeggio-demo to format v12 Oct 1, 2017
common.js Always reload common.js and gui.js Oct 7, 2017
favicon.ico Initial checkin Jan 22, 2013
gpl.txt Initial checkin Jan 22, 2013
help.css Added more license info to the help document Aug 10, 2013
help.html Add advancing one row in the sequencer, when the user presses shift a… Oct 8, 2017
index.html Some SEO Oct 11, 2017
jammer.js Fix bug, where user might experience sudden volume change in jammer w… Oct 22, 2017
player.js Fixed incorrect RIFF WAVE header generation Oct 29, 2015
rle.js Changed names from SoundBox Lite to SoundBox Jul 5, 2013
screen.css Make all text unselectable with css Oct 7, 2017


SoundBox is a tool for composing synthetic music, in your browser. Its design is basically that of a music tracker, which means that the music is organized in tracks and patterns.

The latest version of SoundBox is served at:

Running locally

To run your own copy of SoundBox locally, you need to serve it via a web server (using the file:// protocol is not supported).

A simple method is to use Python SimpleHTTPServer (that usually comes preinstalled on Unix-like systems such as macOS and Linux):

cd path/to/soundbox
python -m SimpleHTTPServer 8008

Now point your browser to http://localhost:8008/.


The SoundBox editor is licensed under the GNU General Public License version 3.

However, the minimal player routine, player-small.js, is released under the zlib/libpng license. This makes it suitable for inclusion in your own software.


You are very welcome to contribute with pull requests. When doing so, follow these conventions:

Git commits

  • Use proper commit messages, in imperative form.
  • Let the Git history of your feature branch follow the recipe model.
  • If your commit fixes a reported issue, add "Fixes #14" (where "14" is the issue number) on a separate line in the commit message (in the body part of the comment, not in the summary part).

These are simple, conventional practices that make it easier to keep track of different patches.


  • All code is written in pure HTML/JavaScript/CSS, without any third party toolkits or frameworks (though some shims are used for portability). Keep it so.
  • Use spaces for indentation (not tabs).
  • The player routine is special - it is designed and tuned for being as small and easily compressible (e.g. using GCC and DEFLATE) as possible. Do not add or alter the player routine without careful consideration.
You can’t perform that action at this time.