DawDreamer Documentation

DawDreamer is a Digital Audio Workstation (DAW) framework for Python. It enables programmatic audio processing with support for VST plugins, Faust DSP code, and complex audio routing graphs.

Read the introduction to DawDreamer, which was presented as a Late-Breaking Demo at the 2021 ISMIR Conference.

Platform support PyPI version License: GPL v3

Key Features

  • Composable audio processor graphs - Build complex signal processing chains with DAG-based routing

  • VST 2/3 support - Host instrument and effect plugins with full state management and automation

  • Faust DSP integration - Real-time compilation of Faust code for custom effects and instruments

  • Time-stretching and pitch-shifting - RubberBand integration with Ableton Live warp marker support

  • Parameter automation - Audio-rate and PPQN-based automation for precise control

  • MIDI support - Playback, recording, and file export

  • Multi-platform - macOS (Apple Silicon/Intel), Windows, Linux, Google Colab, Docker

  • Transpilation - Convert Faust to JAX/Flax, C++, Rust, WebAssembly

  • Faust Box and Signal APIs - Advanced Faust programming with the Box API

  • Machine learning experiments - Integration with QDax

  • Multiprocessing support - Parallel processing capabilities (example)

Quick Start

Installation

pip install dawdreamer

Basic Example

import dawdreamer as daw
import numpy as np

# Create engine
engine = daw.RenderEngine(44100, 512)

# Add a Faust processor
faust = engine.make_faust_processor("synth")
faust.set_dsp_string("process = os.osc(440) * 0.1;")

# Load graph and render
engine.load_graph([(faust, [])])
engine.render(2.0)  # 2 seconds

# Get audio
audio = engine.get_audio()  # shape: (channels, samples)

Documentation

Additional Resources

Built With

DawDreamer’s foundation is JUCE, with a user-friendly Python interface thanks to nanobind. DawDreamer evolved from an earlier VSTi audio “renderer”, RenderMan.

License

DawDreamer is licensed under GPLv3 to make it easier to comply with all of the dependent projects. If you use DawDreamer, you must obey the licenses of JUCE, nanobind, Libsamplerate, Rubber Band Library, Steinberg VST2/3, and FAUST.

Indices and tables