Skip to content

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.

  1. Download the installer for your platform (Mac or Windows)
  2. Run the installer and launch AlgoBooth
  3. Click Play in either the Cue or Master channel to start
  4. Type a pattern and press Ctrl+Enter (or Cmd+Enter on 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:

AbbreviationSound
bdBass drum
sdSnare drum
hhClosed hi-hat
ohOpen hi-hat
cpClap
rimRimshot
crCrash cymbal
rdRide 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