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.
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
User Guide
API Reference
Additional Resources
Links
GitHub Repository: https://github.com/DBraun/DawDreamer
Examples: https://github.com/DBraun/DawDreamer/tree/main/examples
Issue Tracker: https://github.com/DBraun/DawDreamer/issues
Original Paper: https://arxiv.org/abs/2111.09931
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.