Skip to main content

An audio-processing Python library supporting core DAW features

Project description

  _____                       _____                                                  
 |  __ \                     |  __ \                                                 
 | |  | |   __ _  __      __ | |  | |  _ __    ___    __ _   _ __ ___     ___   _ __ 
 | |  | |  / _` | \ \ /\ / / | |  | | | '__|  / _ \  / _` | | '_ ` _ \   / _ \ | '__|
 | |__| | | (_| |  \ 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
  • Full support on macOS, Windows, Linux, Google Colab, and Ubuntu Dockerfile

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

Installation

macOS requirements:

  • 64-bit Python 3.9 or higher
  • macOS 11.0 or higher

Windows requirements:

  • 64-bit Python 3.7 or higher

Linux requirements:

  • 64-bit Python 3.7 or higher

Install with PyPI:

pip install dawdreamer

API Documentation

https://dirt.design/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.transpose())

# 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.plugin_path("synth", PLUGIN_PATH)
print('inputs:', synth.get_num_input_channels())
print('inputs:', 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.)

effect = engine.plugin_path("synth", 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.wav', SAMPLE_RATE, audio.transpose())
synth.clear_midi()
# add midi again, render again, and so on...

Please refer to the Wiki, examples, API documentation, and tests.

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, pybind11, Libsamplerate, Rubber Band Library, Steinberg VST2/3, and FAUST.

Thanks to contributors to the original RenderMan

Project details


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.7.0-cp311-cp311-win_amd64.whl (31.2 MB view details)

Uploaded CPython 3.11Windows x86-64

dawdreamer-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dawdreamer-0.7.0-cp311-cp311-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

dawdreamer-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (30.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dawdreamer-0.7.0-cp310-cp310-win_amd64.whl (31.2 MB view details)

Uploaded CPython 3.10Windows x86-64

dawdreamer-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dawdreamer-0.7.0-cp310-cp310-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

dawdreamer-0.7.0-cp310-cp310-macosx_11_0_arm64.whl (30.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dawdreamer-0.7.0-cp39-cp39-win_amd64.whl (31.2 MB view details)

Uploaded CPython 3.9Windows x86-64

dawdreamer-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dawdreamer-0.7.0-cp39-cp39-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

dawdreamer-0.7.0-cp39-cp39-macosx_11_0_arm64.whl (30.8 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

dawdreamer-0.7.0-cp38-cp38-win_amd64.whl (31.2 MB view details)

Uploaded CPython 3.8Windows x86-64

dawdreamer-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

dawdreamer-0.7.0-cp37-cp37m-win_amd64.whl (31.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

dawdreamer-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: dawdreamer-0.7.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 31.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dawdreamer-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d979f1fc0f11032a0978a7db9ee376e6a42f2c64575490eb3658bf46aa0809d5
MD5 a1fa63016b53a6e178b7f6061cc6ad11
BLAKE2b-256 d8f9e81acaa0417acbfba730117719c5c27203bc40e8233562e6b0982d58cb33

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7b986d48f2384b040a8e1fec323e15cde8c6bbf72380417fade4bc95c7174ce
MD5 270aef8f93989dd615b40009634115d8
BLAKE2b-256 f7f76446d6cf4b6a5a3f7a46a80b60f630da6119838ff845118b05f7ea5b3a52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 281e7898dee9c2fcbae39a19206b81300925f422674bb02c5b1a954d46225b82
MD5 e6d554c1456235fb2361c752260efbb3
BLAKE2b-256 c9fc3353c00fa498db9cca3d823978c38e8195d5edce75d588af593cec79ef1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3489816e6ad312e566131dee33702c14cc3a968b7f9c0f52f605294076d688b0
MD5 773d5e4a1a497262ef8c00dee8396fa4
BLAKE2b-256 83b9867c1814f4e5c91dafbf5a5f649993c9e2899f3421d7916a479e3a03ee0b

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.7.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 31.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dawdreamer-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 459c63853ca647340629698daf8c76de551094559e3276572b87501936b774b4
MD5 218194d8b303539ec418c5fe6b5ad4fe
BLAKE2b-256 035d74a1af2fe67a866c9067942689c01119161e07c53a2432ffad9383adfb10

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50eca46736b4777334ac5e94c24dcb885d6df6c2b8b488a2519c9ff81244042b
MD5 7ecfebf0c480c3b1d6ab36c8f0f84d29
BLAKE2b-256 bd68075a75ab860b75b07646a1fa907d62105f109faf9b45d7b0eabf4b7b1cde

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8d7e449aba599e7713917620caeec28cb1d1b36e0469837e517788cbb2c0d0ea
MD5 491b73683cbb78676bcc62cc2e0be0ee
BLAKE2b-256 c7ae7244d8a7c7e3984b35d063623e8c8d2857325451183886c6f538c5824e85

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47207fa8b3b4ff487a27dc09121b6e46a2043b01fdc6505d00eb5ad251ab340e
MD5 47bc89ec84283259140b65f98e0f008e
BLAKE2b-256 f7f44d1bf18409b0cd8841e40e2d53060f1e1c8da7c2d79879a3a87fc0b78e9b

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 31.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dawdreamer-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f2c80c7159ec14dda511693d2831657fc961604457bd7fc6ff64469715c160ee
MD5 1997c56c69a9ad56494a2e04fa95f438
BLAKE2b-256 dfde2e370c961ba1a4eaf419d358086a36f92298496046eac793efc14342ca8d

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17a156cc53f76e9ea7aa1696fff2708c73511f93029506f17f38cc6e564e14a7
MD5 7d2d82a3d77e60bce7bf994194630b57
BLAKE2b-256 86899976b9b213fceb255f5814350dd708deb5c14cf944f5f737653939d05637

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 225d626999d840cc1590a3a93246c32c064ad150fac258e9d3e5a8b19f4a9034
MD5 55d54d7c035e491bef536f0596836336
BLAKE2b-256 12d313a14bfdf7b4ea4970de9cda1be237c8c65c278cd69c46a4cf3e5d6f2053

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33dda91f6eacafcca6f360c8756b3977b0e4088acd4316c2847340e9e728aed9
MD5 d9a0a0dec637f8a73279a1351d4b61a7
BLAKE2b-256 a104c53dad1c54cb71c053890b595c77f09fac46dbff1d4edd77b995f45b2123

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 31.2 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dawdreamer-0.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7eff8ede65e95700a5fa0b753b391f4c2da4c88086937c938c435f8e0ef62930
MD5 c6480cc2f098444e3fd3a6a24a75ff2a
BLAKE2b-256 b4f39c846ff93e2a3b138e6f9f7123fc2e0bcd294df89e82c2428291006bff63

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79fbfeeab62f57c50c8bc13b5caf9de7a2fe496ee541a779014322c24e5c63fc
MD5 54dac0dd690176c150888c17467fb6db
BLAKE2b-256 fae4173555a3266a95b8615a6265d790f70aff7c5cfd7e754169e5c960457dc8

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.7.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 31.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dawdreamer-0.7.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8ba0e667642f39458b473a35b72287c26cffe1c74a51c01a097327a8a17ce400
MD5 e1ca959c2b8cd57b363cfe93b4b66729
BLAKE2b-256 3801c6ef00cd8637d3757ee45b8fb01eb3e7ce73a8fe3475a5c3e0eb7240bf13

See more details on using hashes here.

File details

Details for the file dawdreamer-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dawdreamer-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b28319997e5180083dec49a76fe9055433b444aa737c71567398a68f5990b18
MD5 8e10d7f877f6dfe2543924e01844ff04
BLAKE2b-256 e108fd8e937806bfe8cd3581b7f5c99f5e79e38abeba4218683bfc25a71f01f4

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 Pingdom Monitoring Sentry Error logging StatusPage Status page