A monolithic audio engine for live coding, ported to Rust from C, a port of Dough (by Felix Roos and al.). Doux runs in the browser via WebAssembly, or natively as an OSC server. Doux is an opinionated, fixed path, semi-modular synth that is remote-controlled via messages. It was designed to be used with live coding environments like Strudel and Tidal. The goal of this fork is to adapt the engine better for integration with Sova, a live coding environment built in Rust.

Doux has the following features:

  • Various synthesis sources:
    • Basic and complex oscillators
    • Live audio input (one source)
  • Various filters:
    • Low/high/band pass with resonance
    • 12db / 24db / 48db rolloff
    • Filter envelopes (ADSR)
  • FM synthesis and modulation
  • Per-voice effects (bitcrush, distortion, waveshaping)
  • Envelopes for amplitude, filter, and pitch
  • Global effects (reverb, delay, chorus, phaser, flanger)

Important note: this project is AGPL 3.0 licensed. Support development by supporting the original version and the TidalCycles Open Collective. See the license page for more information.

License & Support

What is Doux?

Getting Started

Click anywhere on the page to start the audio context. Then press Ctrl+Enter to run a code block, or Ctrl+. to stop all sound.

Let's start with a simple sine wave:

You can set the pitch with the /note parameter (MIDI note numbers):

Or use frequency directly with /freq:

Sound Sources

Doux provides several waveform oscillators. You are strongly encouraged to play with the values.

Noise generators:

Envelopes

The amplitude envelope controls how the sound fades in and out. It uses the classic ADSR model: attack, decay, sustain, release.

/attack is the time (in seconds) to reach full volume.
/decay is the time to fall to the sustain level.
/sustain is the level held while the note is on (0-1).
/release is the time to fade to silence after note off.

Try changing each parameter to hear how it affects the sound.

Filters

Filters shape the timbre by removing frequencies. The most common is the low-pass filter:

Add resonance with /lpq:

High-pass and band-pass filters are also available:

Effects

Doux includes several effects. Here's a sound with reverb:

And delay:

Next Steps

This tutorial covers the basics. For a complete list of all parameters, see the reference.

Doux is designed to be controlled by pattern languages like Strudel. Visit strudel.cc to try it out.