warning: i'll likely be deleting my github account soon, and this *particular* website will go down. i've copied it to bytebeat.ficial.net, and i'll soon be putting up my source code and plenty of other things there including new updates. you should be able to edit all existing links to work with bytebeat.ficial.net, and most to work with dollchan. if you've sent around any bytebeats as only a link to this website please update the link and/or post the full bytebeat code there so people can easily access it.

Info — about bytebeat

Bytebeat music (or one-liner music) was invented in September 2011. Simple bytebeats are often a piece of rhythmic and somewhat melodic music with no score, no instruments, and no real oscillators. It's simply an expression that defines a waveform as a function of time, processed (usually) 8000 times per second, resulting in an audible waveform with a 256-step resolution from silence (0) to full amplitude (256). If you put that formula into a program with a loop that increments time variable (t), you can generate the headerless unsigned 8 bit mono 8kHz audio stream on output, like in this application. Since these directly output a waveform, they have great performance in compiled languages and can often be ran on even the weakest embedded devices.

History of bytebeat

Original blog posts and videos from Viznut:
Online JavaScript players:

This webpage has a collection of bytebeat music found by SthephanShi, I may add my own compositions here too. Playback modes are:

  • Bytebeat — expected output is 0 to 255, values outside this are wrapped, and non-integers are floored.
  • Signed Bytebeat — expected output is -128 to 127, values outside this are wrapped, and non-integers are floored. This is an uncommon format, which comes from c allowing char to be signed or unsigned depending on the compiler.
  • Floatbeat — expected output is -1.0 to 1.0, values outside this are clipped. This allows higher quality audio, and is common for other generative music.
  • Funcbeat — based on TinyRave, code is not an expression, and is only ran once. The returned function is ran with time in seconds.

Library

Classic — C compatible code

Compact JS — compact JavaScript code

Big JS — big JavaScript code

Floatbeat — assumes output is -1.0 to 1.0

Funcbeat — statement based

SthephanShi — code SthephanShi discovered

SArpnt — code SArpnt created