A couple of days ago I first encountered “bytebeat”. This is a new hype revolving algorithmic music and sounds. The basic idea is this:

main(t) {
    putchar( t * (((t>>12) | (t>>8) ) & ( 63 & (t>>4))));

This simple loop has one variable, t (time). And every iteration we use t to calculate some output. Next, we take the output and pipe it into 8-bit 8-kHz PCM channel (for example /dev/audio!).

A couple of examples in a YouTube video:

In Java you could do the following:

import javax.sound.sampled.*;

public class AudioPump {

	public static void main(String[] args) throws Exception {

		AudioFormat format = new AudioFormat(8000f, 8, 1, false, false);
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
		SourceDataLine soundLine = (SourceDataLine)AudioSystem.getLine(info);
		soundLine.open(format, 32000);

		byte[] buffer = new byte[8];
		int t = 0;

		while(true) {
			for(int n = 0; n < buffer.length; n++) {
				buffer[n] = (byte)f(t++);
			soundLine.write(buffer, 0, buffer.length);

	private static int f(int t) {
		return (t>>7|t|t>>6)*10+4*(t&t>>13|t>>6);
	//return (t*(t>>5|t>>8))>>(t>>16);
	//return t*(((t>>12)|(t>>8))&(63&(t>>4)));

These simple one-liners are able to produce amazing sounds and music!

It becomes even easier to play around with bytebeat if you use one of the many Javascript implementations.
Here is one (including the best song I’ve created): http://t.co/9oognysS

The computer/synthetic sounds are also good for dubstep.

For more information on this subject:

  • recurser

    fascinating – nice post!

  • Will


  • Roberto

    This is awesome. For learning purposes, how you implement this to take user input and turning it into an expression?

  • http://kymatica.com/bitwiz Jonatan Liljedahl

    I’ve made an iOS app where you can play around with this in real-time, with 3D scope visuals. More info and demo video here: http://kymatica.com/bitwiz

  • ThatRandomGuy

    Anyone know how to do that 8bit piping stuff…
    I have no clue what I’m doing with this