Skip to main content
  _____                       _____
 |  __ \                     |  __ \
 | |  | |   __ _  __      __ | |  | |  _ __    ___    __ _   _ __ ___     ___   _ __
 | |  | |  / _` | \ \ /\ / / | |  | | | '__|  / _ \  / _` | | '_ ` _ \   / _ \ | '__|
 | |__| | | (_| |  \ V  V /  | |__| | | |    |  __/ | (_| | | | | | | | |  __/ | |
 |_____/   \__,_|   \_/\_/   |_____/  |_|     \___|  \__,_| |_| |_| |_|  \___| |_|

* * Digital Audio Workstation with Python * *

Supported Platforms Test Badge PyPI version fury.io GPLv3 license GitHub Repo stars Generic badge

DawDreamer

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

DawDreamer is an audio-processing Python framework supporting core DAW features and beyond:

  • Composing graphs of multi-channel audio processors
  • Audio playback
  • VST instruments and effects (with UI editing and state loading/saving)
  • FAUST effects and polyphonic instruments
  • Time-stretching and looping, optionally according to Ableton Live warp markers
  • Pitch-warping
  • Parameter automation at audio-rate and at pulses-per-quarter-note
  • Parameter automation saving in absolute audio-rate time
  • MIDI playback in absolute time and PPQN time
  • MIDI file export in absolute time
  • Rendering and saving multiple processors simultaneously
  • Support for the Faust Box and Signal APIs
  • Transpiling Faust code to JAX/Flax and other target languages (C++, Rust, Wasm, etc.)
  • Machine learning experiments with QDax
  • Multiprocessing support
  • Full support on macOS, Windows, Linux, Google Colab, and Ubuntu Dockerfile

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

Installation

macOS requirements:

  • 64-bit Python 3.11-3.14
  • Apple Silicon (arm64) or Intel (x86_64)
  • macOS 11.0 or higher

Windows requirements:

  • x86_64 CPU
  • 64-bit Python 3.11-3.14

Linux requirements:

  • x86_64 or aarch64 CPU
  • 64-bit Python 3.11-3.14

Install with PyPI:

pip install dawdreamer

API Documentation

https://dbraun.github.io/DawDreamer/

Basic Example

Using Faust, let's make a stereo sine-tone at 440 Hz and -6 dB. You can run this code as-is.

import dawdreamer as daw
from scipy.io import wavfile
SAMPLE_RATE = 44100
engine = daw.RenderEngine(SAMPLE_RATE, 512)  # 512 block size
faust_processor = engine.make_faust_processor("faust")
faust_processor.set_dsp_string(
    """
    declare name "MySine";
    freq = hslider("freq", 440, 0, 20000, 0);
    gain = hslider("vol[unit:dB]", 0, -120, 20, 0) : ba.db2linear;
    process = freq : os.osc : _*gain <: si.bus(2);
    """
    )
print(faust_processor.get_parameters_description())
engine.load_graph([
                   (faust_processor, [])
])
faust_processor.set_parameter("/MySine/freq", 440.)  # 440 Hz
faust_processor.set_parameter("/MySine/vol", -6.)  # -6 dB volume

engine.set_bpm(120.)
engine.render(4., beats=True)  # render 4 beats.
audio = engine.get_audio()  # shaped (2, N samples)
wavfile.write("sine_demo.wav", SAMPLE_RATE, audio.T)

# Change settings and re-render
faust_processor.set_parameter("/MySine/freq", 880.)  # 880 Hz
engine.render(4., beats=True)
# and so on...

Next, let's make a graph with a VST instrument and effect. This graph will be simple, but you can make more complicated ones.

import dawdreamer as daw
from scipy.io import wavfile
SAMPLE_RATE = 44100
INSTRUMENT_PATH = "path/to/instrument.dll"
EFFECT_PATH = "path/to/effect.dll"

engine = daw.RenderEngine(SAMPLE_RATE, 512)
engine.set_bpm(120.)

synth = engine.make_plugin_processor("synth", INSTRUMENT_PATH)
print("inputs:", synth.get_num_input_channels())
print("outputs:", synth.get_num_output_channels())
print(synth.get_parameters_description())

synth.set_parameter(7, .1234)

# (MIDI note, velocity, start sec, duration sec)
synth.add_midi_note(60, 100, 0.0, 2.)

# optionally capture intermediate audio
synth.record = True

effect = engine.make_plugin_processor("effect", EFFECT_PATH)

engine.load_graph([
  (synth, []),
  (effect, [synth.get_name()])  # effect needs 2 channels, and "synth" provides those 2.
  ])

engine.render(4.)  # render 4 seconds.
audio = engine.get_audio()
wavfile.write("synth_demo_wet.wav", SAMPLE_RATE, audio.T)
synth_audio = engine.get_audio("synth")
wavfile.write("synth_demo_dry.wav", SAMPLE_RATE, synth_audio.T)
synth.clear_midi()
# add midi again, render again, and so on...

Known Issues

Compatibility with JAX and other LLVM-based libraries

DawDreamer must be imported before JAX or other LLVM-based libraries (such as PyTorch with TorchScript, Numba, etc.) to avoid LLVM initialization conflicts that can cause segmentation faults:

# CORRECT:
import dawdreamer as daw  # Import DawDreamer first!
import jax

# WRONG - May cause segfault:
import jax
import dawdreamer as daw  # Importing after JAX can crash!

Why? Both DawDreamer (via Faust's LLVM backend) and JAX use LLVM internally. When JAX initializes LLVM first (e.g., by calling jax.devices()), importing DawDreamer afterward can cause conflicts in LLVM's global state, resulting in a crash.

Workaround: Always import dawdreamer at the top of your Python file, before any JAX or related libraries.

Documentation

Full documentation: https://dbraun.github.io/DawDreamer/

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dawdreamer-0.9.0-cp314-cp314-win_amd64.whl (23.6 MB view details)

Uploaded CPython 3.14Windows x86-64

dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl (40.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl (40.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl (44.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl (39.7 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dawdreamer-0.9.0-cp313-cp313-win_amd64.whl (23.1 MB view details)

Uploaded CPython 3.13Windows x86-64

dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl (40.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl (40.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl (44.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl (39.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dawdreamer-0.9.0-cp312-cp312-win_amd64.whl (23.1 MB view details)

Uploaded CPython 3.12Windows x86-64

dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl (40.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl (40.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl (44.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl (39.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dawdreamer-0.9.0-cp311-cp311-win_amd64.whl (23.1 MB view details)

Uploaded CPython 3.11Windows x86-64

dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl (40.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl (40.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl (44.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl (39.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file dawdreamer-0.9.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.9.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 23.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dawdreamer-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1acf899aafbb174371f13b103da3dec0cd7cac60abb02932f573ca6bda05e738
MD5 f495cb5541cd8a0af8ecbcf951d71f5a
BLAKE2b-256 e9c52f63cf387ddb5fac0d40982ea3e8b742988d01e420603b3b6810204d64b5

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7c9e30a803e2e16f675de089193336ddcbd772d0cb5d1fda36272dc6497caf21
MD5 e320276e6b40a7c34ed96ca1eb36c96e
BLAKE2b-256 4a0394d97eca493a078d57de264fd7f78aaca5ef0ac7d147c6be7546fb65c4cc

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 542cce12cbdb9019154bf7127ce4ebb2ba7ee224a99d5a5745329e29bbe4f5e8
MD5 a4e67d6ae7816a743d55a8dd0d3fc3e5
BLAKE2b-256 68950cf8b535921b9ab1f2575415de3a000a991c30cc3b324a949c9f3a341d70

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 3fe528ae5255ea27032fd45ef5199e1dcd000eaa42bb8ec62a5618a551c1a207
MD5 812eaa9f4bb638f1b51fea3007a66231
BLAKE2b-256 e1e221d4fa2012abe6fcfef5f1366740c86029f6c41ee4241eac02f4391e53f9

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ca73180447622d65b310181d23fe13a5571061f974c78aa56de1d2049cb5db1
MD5 772d3fd7992ea93f358568a81803cc95
BLAKE2b-256 680e11837ab31b3f8fbc791a10cbd522dbc9d2c8989e07eabd19f49e18ac2bb0

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.9.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 23.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dawdreamer-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 90a226c989f8228e2c053bc8b8f94ff7890d0484977b11bf182bd4f0108bc159
MD5 fc6613fc0777acd498bcf0eb9c9881df
BLAKE2b-256 2137073d80a4816d0ab69a468ae067555724f704a0f32640351644e5655b586b

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1ff4812ff8b371d7996bfcf693ba26979c8fa050cfefab2f5ea9bb497cee61f3
MD5 a0a9ca1644b3a6f9f9b2821ec584fd0b
BLAKE2b-256 991b20923cd2c69a0ab571258882ec3c94c262fabdda496eefc19ef4de1afd19

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 38cb8c4325b3ab82a71d573bd5b09708b5a54b3aa18eefaaa291b790c698cbd1
MD5 84a24c6350e78cb367833ff49cc5b0e0
BLAKE2b-256 448cf96e435d774da406ebfae96bd82e0c5a3daee2aeda41411ca83055ae9405

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 274f61dca97afde2d37fc3b53bb0b8eee10a6cbcbc22d08ef3050684fd320c84
MD5 d2dae7a8c90c040a46920002cf86e9e1
BLAKE2b-256 a9dac1ada5c7a0875fd81fd28bbae3933411c1aedcd9397a9c645af2b99103b7

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d814e249b5b680c3db61c48cd278ac1b060ac362538ca54f6901d97353fdd4b1
MD5 829d8ea508d9b6ef1d77e9f7b46f1b87
BLAKE2b-256 5cef618c87afdd0e403d535a38f3502f7ce5c1a3881dc4c96b40bbbc994fc96b

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.9.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dawdreamer-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0076ebe3de73d0888bc6e5cc08ddb95e71d738dc587afbc7df1bf542e945f5b9
MD5 9967511f4d8ddaaa7f0b4017d7cd590d
BLAKE2b-256 79d6439c6ed32f4f4886142ea1a5fc81fb18d0b7fae7acbfe6a9ca926ba30a34

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9daf556b0f49b65d14f0504cc3a118c85f0c034eeb51b02e5a267bf42779c6f7
MD5 9aadbab1019d01f55920e3970feb39ed
BLAKE2b-256 6849962eb7044e97076dc931d143fd78ef1ebb7a866c1e9efe3cdd02d18476b1

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c54166ce08ee37ed2abb5cab718e9e3375cf8d22d4980a52c71f4eb6e2604e84
MD5 53cfcbca21f9660693b1d782b46bf49f
BLAKE2b-256 ef49db042fdf577fa216d9b0004c80605286a356b807f6bb38ca3f5dd64c1b5c

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 01ce44210502201dd35f62dd5f9c356f9bec068ad81ef6d9cfebf8b318a50a86
MD5 e7e44425b0e18d9815028fa8dfa7bd2e
BLAKE2b-256 b4c903e9d4c5cdb338a95b0fbb1caa1305dacc9269e1c0ea2b3cccbd3b489d99

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd53384a505918f11182c81113bb782e4a34baa4d5f53c089fa3919fb1deb991
MD5 b071bc338369d2fcfb3f5ee467f51b93
BLAKE2b-256 7e9593114482c9dbcab39d6e5b844bd6a96a919d5864e913c966abba0d67f0d5

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.9.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dawdreamer-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4899f18eb6c3e99daff1ac3ff01d55cb739a30d8b669c2ba467b186ec01b2437
MD5 152d3c4347ff6e33ec94e0c403b2f4f5
BLAKE2b-256 18ac00d049dff78a8ac7d75afa6f6e0f71d0f2e0e302cba065e9a88a6cd397c7

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f6bdfb54cb29a2af080e879d97985103f143bfd3225cb61ed9b7898ab390c586
MD5 412a4f122e4b15571d76a1d295b98006
BLAKE2b-256 03d2671aca2e6c2221b694ea1be374fb48c1cdafa584b3e2dff073ded3358d84

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 455e55aca6e6b3fb1e6b4ad8381e20f64c5c8f1384ef90fc7f671d836d3bf79a
MD5 fcb7cae9c824b00ced3755e7ce652127
BLAKE2b-256 316c68d9dc767247679acb8e1193c92258ace6766b4141464ec151b710b148e6

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a064f692e9be39d55a553bbbacdb30f7461ed11adffe6646bd23da7088b1db23
MD5 43531469fd44822689a0875113622f3a
BLAKE2b-256 686353bb2badae8516507c9855aaa92dc68d402c2491b84a47a1605008a15cb2

See more details on using hashes here.

File details

Details for the file dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 400bf5ecf460384a70e79576e758e902c968454db2183297a46eafeec78d6025
MD5 6d4a398925d59d472631ebcdf34ebf2a
BLAKE2b-256 64c8bb9754d7f902d6a30c243198027256070286203c7ec57d4861995ab108e7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page