Native
The web version is fun! However, Doux was ported to Rust in order to be used natively in any application that needs an audio engine. You can compile Doux on your computer or use it in applications that integrate it such as Sova or Cagire. You will need the Rust toolchain installed in order to compile it: Rustup.
Binaries
doux: OSC server, listening on a configurable port (defaults to 57120). Use it with other software like TidalCycles, Strudel, Cagire or Sova. It will listen to any incoming message until you exit the process.doux-repl: REPL with readline support and command history saved to~/.doux_history. Built-in commands:.quit(.q),.reset(.r),.hush,.panic,.voices,.time,.stats(.s),.help(.h).doux-render: offline WAV renderer. Evaluates commands and writes the result to a file. Useful for non-realtime rendering or batch processing.doux-sova: thin-layer used to communicate with Sova.
Common flags
Shared across doux and doux-repl.
| Flag | Short | Description |
|---|---|---|
--samples | -s | Directory containing audio samples |
--list-devices | List audio devices and exit | |
--input | -i | Input device (name or index) |
--output | -o | Output device (name or index) |
--channels | Number of output channels (default: 2) | |
--buffer-size | -b | Audio buffer size in samples (default: system) |
--max-voices | Maximum polyphony (default: 32) | |
--host | Audio host backend: jack, alsa, or auto (default: auto). On Linux with PipeWire, use jack | |
--preload | Preload all samples at startup (doux only) | |
--diagnose | Run audio diagnostics and exit | |
--port | -p | OSC port (doux only, default: 57120) |
Render flags
Flags specific to doux-render.
| Flag | Short | Description |
|---|---|---|
--duration | -d | Duration to render in seconds (required) |
--eval | -e | Command to evaluate (repeatable) |
--output | -o | Output WAV file path (required) |
--samples | -s | Directory containing audio samples |
--sample-rate | Sample rate (default: 48000) | |
--channels | Number of output channels (default: 2) | |
--max-voices | Maximum polyphony (default: 64) |
Multichannel
The --channels flag enables multichannel output beyond
stereo. The number of channels is clamped to your device's maximum
supported count. The orbit parameter controls output routing.
With N output channels, there are N/2 stereo pairs. Voices on orbit 0
output to channels 0–1, orbit 1 to channels 2–3, and so on. When the
orbit exceeds the number of pairs, it wraps around via modulo. Effects
(delay, reverb) follow the same routing: each orbit's effect bus outputs
to its corresponding stereo pair.
Buffer size
The --buffer-size flag controls audio latency. Lower values
mean less latency but require more CPU. Common values: 64, 128, 256,
512, 1024. At 48kHz, 256 samples gives ~5.3ms latency. If unset, the
system chooses a default. Use lower values for live performance, higher
values for stability.
Sample loading
The --samples flag allows you to (lazy-)load audio
samples to play with. The engine expects a folder containing folders
of audio samples. Samples will be available using the folder name.
You can index into a folder by using the /n/ command. Check
the reference to learn more about this. Use --preload to
load all samples eagerly at startup instead.