---
1/32
1

			

Simbeat Community

– bytebeats posted by the community
Community library
Checking your Websim account…

Exotic Projects

– audio input and embedded projects

⌄ Audio Files – Loaded audio files for audioIN function

Load audio files
Remove all loaded files

TB3 Projects – Load complete projects

Load TB3/TB2 project file
Save current project as TB3 file

Tools

– transform the current formula
MinibakerEncode the formula as a compact eval expression.
DeminibakerDecode a minibaked formula back to readable text.
MinifierRemove comments and unnecessary whitespace.
NoNumbers-ifierFormerly NumbersNotInSight-ifier; replace numeric literals with number-free expressions.
adder.drmAppend the DRM rhythm expression to the formula.
combinerCombine the current formula with two or more formulas.
heavyAF breakbeat-ifierWrap the formula in the heavyAF breakbeat pattern.
SWANGERAdd the swing timing adjustment before the formula.
drums-ifier.CAdd the drum pattern before the formula.
C.A-ifierPut t+=sin(t/100)*t/8000, before the formula.
echo-do'erAdd an echo without using Array(number).fill(0).
echo-do'er.AFAdd an echo using Array().fill().
adder.hcAppend the HC noise and percussion expression.
ShufflerAdd the time-shuffling prefix before the formula.
adder.hc2Append the alternate HC square-root expression.

AI Library

– generate new formulas with AI
Classic Formula GeneratorClassic one-variable bytebeat formula.
JS-256 Formula GeneratorCompact JavaScript bytebeat under 256 bytes.
JS-1k Formula GeneratorJavaScript bytebeat under 1 KB.
JS-big Formula GeneratorDetailed JavaScript bytebeat larger than 1 KB.
Floatbeat Formula GeneratorFloatbeat expression with output from -1 to 1.
Floatbeat-big Formula GeneratorDetailed floatbeat composition larger than 1 KB.
Funcbeat Formula GeneratorFunction-based formula receiving time in seconds.

Info

– about bytebeat

Bytebeat music was invented in September 2011.

Classic simple bytebeats are generally 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 expression 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.

Initially, expressions were typically written in C or were C-compatible, written in JavaScript. But bytebeat music has evolved over the years, and modern songs with complex JavaScript code are now popular. You'll find examples in the library on this site.

About SimBeat

SimBeat is a live bytebeat workspace: write a time-based formula, choose how its output is interpreted, and hear the result immediately.

The variable t advances once per sample. The selected sample rate controls how quickly the formula moves through time, while the playback mode determines whether the result is treated as bytebeat, signed bytebeat, floatbeat, funcbeat, or another supported format.

Use the editor to experiment, the scope to see the waveform, and the libraries and tools below to study, remix, and transform formulas.

History of bytebeat

Original blog posts and videos from Viznut:

This website is a live editing bytebeats player, it has a collection of bytebeat music. Online JavaScript players:

  • by Bemmu and Rarefluid — this is one of the first players.
  • by Paul Hayes — also is one of the first. Dollchan Player is a very deeply modified fork of it.
  • by Greggman — a source of inspiration for creating Dollchan Player, but in turn, Greggman took the songs library from here.
  • by SArpnt — a fork of Dollchan Player, but in turn Dollchan took many technologies and ideas from SArpnt.

Playback modes are:

  • Bytebeat — output is an unsigned 8bit integer from 0 to 255, values outside this are wrapped, and non-integers are floored.
  • Signed Bytebeat — output is a signed 8bit integer from -127 to 128, values outside this are wrapped, and non-integers are floored.
  • Floatbeat — output is -1.0 to 1.0. Allows higher quality audio since it is not limited to 255 values, unlike the previous ones.
  • Funcbeat — the code is run only once and is not an expression, it expects the function to return. The returned function is ran with time in seconds, output is -1.0 to 1.0.
  • Bitbeat — only the least-significant bit of the output is used.
  • Signed Floatbeat — signed float output from -1.0 to 1.0.
  • Signed Funcbeat — function-based mode with signed float output from -1.0 to 1.0.
  • Signed Bitbeat — the least-significant bit is output as a full-scale signed signal.

Custom functions include:

  • bitC(X, Y, Z) — returns X&Y ? Z : 0.
  • br(T, SIZE) — reverses SIZE bits of T and discards the other bits.
  • sinf, cosf, tanf(X) — sine, cosine, and tangent scaled so t loops every 256 steps.
  • regG(T, regEx) — tests the binary string of T against regEx and returns a boolean.
  • crpt(X, Y = 8, Z) / decrpt(X, Y = 8, Z) — corrupts and decorrupts sound values.
  • SAWT(X), SQU(X), TRI(X) — sawtooth, square, and triangle wave generators.
  • dvd(X, Y) — returns (X&255) / Y.
  • hxdcml(X) — returns (X&15) * 16.

This project is made by SthephanShi, and is a fork of 8-bit Generative Composer by Paul Hayes.

Classic

– C-compatible Bytebeat, one variable (t)

JS-256

– JS Bytebeat code under 256 bytes

JS-1k

– JS Bytebeat code under 1 KB

JS-big

– JS Bytebeat code larger than 1 KB

Floatbeat

– assumes output is -1 to 1

Floatbeat-big

– Floatbeat code larger than 1 KB

Funcbeat

– statement based mode

Recent

– recently added (last 90 days), sorted by authors

List of remixes

– songs with recorded remix sources

All

– all songs, sorted by authors

Settings

Waveform colors in the scope
Diagram colors in the scope
Mono colors in the scope