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
  • 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 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.make_plugin_processor("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.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.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.1-cp311-cp311-win_amd64.whl (31.2 MB view details)

Uploaded CPython 3.11Windows x86-64

dawdreamer-0.7.1-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.1-cp311-cp311-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

dawdreamer-0.7.1-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.1-cp310-cp310-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

dawdreamer-0.7.1-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.1-cp39-cp39-macosx_11_0_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.8Windows x86-64

dawdreamer-0.7.1-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.1-cp37-cp37m-win_amd64.whl (31.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

dawdreamer-0.7.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dawdreamer-0.7.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cda27f01726bcadaeb24b0aad09049cd7aeab4a0bf8a56d8cfbee14c6378bd62
MD5 146247cd4c5d0d15dde58d37954e66ff
BLAKE2b-256 ac6b680d1afa19dbf65cf58f23cacc2b766cdcd7c0b1fd9e9e81b0355ef2fd82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d188cb210bebc2bd912e9e1a06fb0225575460c6c4808a2f048e1caf6e3e7b48
MD5 184dd4aa5437dc921e7b45e2454e2dc8
BLAKE2b-256 11ad89c3a046a3322a8817601f926ae175a8c719114804bd552d381e2fa530a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e9001a179db7b26e31ee3cc6296c0cd9c335ec610ca54873d2d3a9bac5bd7188
MD5 974e5d09c9c7303a4acee2d7ffe93a30
BLAKE2b-256 725e150c063d7e9ab59bbf0b441221643d22be44931fa43e5de25c7f39c1e505

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39f5c4cb30bec5d37b8d442da8fcc3133ac3116c0b65c0d1710303462bd50085
MD5 229ff916681061436695257804b6528b
BLAKE2b-256 1737c3e49ddbb6966d07f803875f1cb018551da3142bcbd5fc1a601a2c1fbcf5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dawdreamer-0.7.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2c446b574a8b6409406ad1d0da97bfa578d14019564153d1260d5595ccb1470c
MD5 e0261d0c7100f7d713e547c268073e53
BLAKE2b-256 fc1084256a5e7dedd6e1d6929d7f40d815cac7d9e78337655a7dfb011df7276a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f7e79ded07b59b7cd400ea06f5a3d7164e1b1731ea304892c6924ed80eea6af
MD5 9d1da591b11320015e271bc052e4b3b8
BLAKE2b-256 3c3122d35378528b14c0e34a250f3f926e0e87f91f0b261c0c9970f87cf2a8e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0e4310ea77f9b609a18e38c36c8cd931458b8cadf2bc2540a3c83876d4aae98e
MD5 174b5dd747f493d0510b8549fd67dad4
BLAKE2b-256 21312cad9fdd358bcef5727c183285f7f45a88eec62de685ef8688482ec970a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba1564d0d1d7486671f59971c060271e8dd7eac3aa879e71d5dbfc4b5986e510
MD5 d1cbc2c1a5d1e7790cb00b68be6f611d
BLAKE2b-256 7b6aef26c15a8c987c20690e180ea38aa621f6b7f9fcdf17dd4407f235701bc6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dawdreamer-0.7.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 742582ba99f845ed631da85215c6ac1379c3c39e6c0b8dbb4ca811dc48671047
MD5 9b251e39b89b1a8b03a1f590d3212ed0
BLAKE2b-256 511b86a3516a901e7b40bc54830f76536c2241fd0abde2ff96d5f1f619b5bbf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56c7a81d305f8a6f4da9e1f13a5704a67d33aac25a724ef045cfe9bbf208e1e3
MD5 baa740c7a8466ad4f8b1955a83b4cbd6
BLAKE2b-256 00ec8670b945a954edab42624cff2e78f0356c274e194c0f56ba8207d08eac21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 92e8cd989d9ee76c53811e350ac9df801c5d9df6e9d2380b79145b34f35d13a6
MD5 4f3a2d7e618b19cff6543bb2542740ca
BLAKE2b-256 4f96971a6c5373425991b4284c4de8dd49534e677744f31fed2b559fee7bc2fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e7dcf18ea6a342296483e71cff80f2c9f722cdf882557110897803e581dd3f9
MD5 30456f5e92f894a024592eac3e54590f
BLAKE2b-256 6c868e345997e56e28aa9be5a0b15ed4092988896090e7414e0f3396726c9b62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dawdreamer-0.7.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e4a0acb8e290857708e87e842f949f8e656784ed0a1560d672b1ca1434f40adb
MD5 753084966e8859fdd9af5297fbeea6f3
BLAKE2b-256 7a34dab9ea54269461abd98acf8eef73641b2272e486151733ff53e86882678c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cebf087c3d8760b27d4a745ec42dad5c2eadf74b2d2160c59de41a1195e17ffc
MD5 f8656f4e4b837f3595ddc7518da6e994
BLAKE2b-256 de1bb3dec848950f26e8813c2e8e86ebe8d9d78be121c6fc2312ab321c69cd06

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dawdreamer-0.7.1-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.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6ed3a9f24aebb86c43ca1ee9f557d1cec24f9e0bfc951ea87eded856e0bb320c
MD5 bb0da3b580c47836b57fd1e08009137d
BLAKE2b-256 4eee8d1c2ed09aeb21ce6d18144099eae67c1386ec487023128b810e8377becb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dawdreamer-0.7.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b9cebe547d04b65b2e8426fff38b0d0f66468f6ae0289a03c65864bab80ad6f
MD5 37cdf9fa0d8eb055851fe4360e7e5a42
BLAKE2b-256 d21601ca44acbdb2e7ca4b17cd0c0527e26a264cb3cf1ea196773e41779c66f6

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