Getting Started
What is AlgoBooth?
AlgoBooth is a professional DJ workflow for live coding. Think Traktor or Serato, but instead of dragging tracks you write code — and the audio updates in real time as you type. It runs as a native desktop app on Mac and Windows, with a Rust audio engine that delivers deterministic, zero-jitter timing even under heavy CPU load.
The pattern language you write is based on Tidal Cycles — a battle-tested system used in the Algorave community worldwide. You do not need to know JavaScript or music theory to get started.
Installation
Download AlgoBooth from algobooth.com. The trial is free, with no time limit and no account required. All features are available during the trial; the only restriction is that saved projects cannot be reopened without a license.
- Download the installer for your platform (Mac or Windows)
- Run the installer and launch AlgoBooth
- Click Play in either the Cue or Master channel to start
- Type a pattern and press
Ctrl+Enter(orCmd+Enteron Mac) to evaluate
Your First Pattern
The simplest pattern plays a drum sound:
s("bd sd")s() plays a sample by name. bd is bass drum, sd is snare drum. Both sounds play in sequence, equally spaced, repeating every cycle (2 seconds by default).
Try adding more sounds:
s("bd hh sd hh")Add a rest with ~:
s("bd ~ sd ~")Speed up individual sounds with *:
s("bd hh*2 sd hh")Subdivide a beat using square brackets:
s("bd [hh hh] sd hh")Adding Melody
Use note() to play pitched sounds:
note("c3 e3 g3").s("sine")note() accepts note names (c3, e3) or MIDI numbers (48, 52). The .s() call sets the synthesizer waveform. Available waveforms: sine, sawtooth, square, triangle.
Add a bass note in parallel using the comma separator:
note("c3 e3 g3, c2").s("sine")Use angle brackets <> to cycle through values one per loop:
note("<c3 e3 g3 b3>").s("sawtooth")Adding Effects
Chain effects by appending method calls to a pattern:
note("c3 e3 g3").s("sawtooth").lpf(800)lpf() is a low-pass filter — higher values let more brightness through, lower values sound more muffled.
Add reverb with room():
note("c3 e3 g3").s("sawtooth").room(0.5)Add echo with delay():
s("bd sd").delay(0.3)Control volume with gain():
s("bd hh sd hh").gain(0.8)Combine effects:
note("c3 e3 g3").s("sawtooth").lpf(1200).room(0.3).delay(0.25)Layering Patterns
Use stack() to play multiple patterns simultaneously:
stack( s("bd*4"), s("~ cp ~ cp"), s("hh*8").gain(0.5), note("c2 ~ g2 ~").s("sawtooth").lpf(600))Each argument to stack() runs in the same cycle, perfectly synchronized.
In AlgoBooth you can also write patterns on separate lines — the editor automatically wraps them in stack() for you:
s("bd*4")s("~ cp ~ cp")note("c2 g2").s("sawtooth")Drum Sound Reference
AlgoBooth ships with hundreds of drum samples. The shorthand names follow the Tidal Cycles convention:
| Abbreviation | Sound |
|---|---|
bd | Bass drum |
sd | Snare drum |
hh | Closed hi-hat |
oh | Open hi-hat |
cp | Clap |
rim | Rimshot |
cr | Crash cymbal |
rd | Ride cymbal |
Switch drum machine character with .bank():
s("bd hh sd hh").bank("RolandTR909")Next Steps
- Pattern Syntax — Mini-notation in depth: subdivision, alternation, Euclidean rhythms
- Strudel Reference — Complete function reference with examples
- Audio Routing — How Cue and Master channels work in the DJ workflow
- MIDI Setup — Connect hardware controllers and external synths