Skip to content

Releases: DBraun/DawDreamer

v0.8.3

09 Sep 14:12
Compare
Choose a tag to compare

For macOS builds, macOS 12 (Monterey) is required.
For all platforms Python 3.10 or higher is required (to save space on PyPI).

PluginProcessor:

  • Added get_parameter_range(index: int, search_steps: int = 1000, convert: bool = True)
    Since convert=True, the output will try to convert the parameter's range of text labels into floats (e.g. "16.2 kHz" will become 16200.0, "440 Hz" will become 440, "50% (-32.0 dB)" will become -32.0, and so on). If convert=False, you'll get the strings instead of the float conversions.

FaustProcessor:

  • Use libfaust 2.70.3 (which is behind the latest libfaust version 2.74.6)
  • Added opt_level property for LLVM optimization level, defaulting to -1 for backwards compatibility.
  • Allow multiple paths for Faust assets paths and library paths.
    • .faust_libraries_path (a str)
    • .faust_libraries_paths (a list of str)
    • .faust_assets_path (a str)
    • .faust_assets_paths (a list of str)
  • boxFFun and sigFFun have been added to the Box API and Signal API.
  • Fixed a bug with boxVGroup accidentally using boxHGroup

v0.8.0

17 Nov 21:31
ec60dc1
Compare
Choose a tag to compare

Breaking changes:

  • boxFromDSP now returns just a box, not a tuple of (box, inputs, outputs)
  • getBoxType has been removed.

Improvements:

  • A box object has new properties: .valid, .inputs .outputs. This is why boxFromDSP changed and getBoxType was removed.
  • FaustProcessor's compile_box now looks for .lib/.dsp files in its .faust_libraries_path directory.
  • Update libfaust to 2.69.3.
  • PyPI builds for Python 3.12
  • Update JUCE to 7.0.8
  • Minor touchups to the Faust to JAX/Faust to QDax/Box API notebooks. These will have more improvements over the next two weeks.

v0.7.4

26 Sep 14:11
35a9681
Compare
Choose a tag to compare

This release fixes issues introduced in 0.7.2 and 0.7.3.
PyPI now requires Python 3.8 for Windows/Linux. MacOS requires Python 3.9.

Bug fixes:

  • In between renders, a plugin processor is now better told to turn off all MIDI notes. This is helpful if a render ends before a Note Off event.
  • RenderEngine.cpp has fixed an issue when the output render size was off by one sample if the block size was 2.

Other updates:

  • JUCE has been updated to 7.0.7.
  • pybind11 has been updated.
  • Sampler Processor Plugin project has been updated.
  • libfaust has been updated to 2.68.1.
  • rubberband has been updated
  • libsamplerate has been updated.
  • libfaust (the Box and Signal API) files have been refactored into more isolated files.
  • The Faust Processor can now load soundfile primitives directly from the filesystem. If the file hasn't been specified via set_soundfiles then the filesystem will be checked.
    • Similar improvement for boxSoundfile("mySound[url:{'tango.wav'}]", 2): If you tell a FaustProcessor to compile the box involving boxSoundfile, then the files will be loaded. As a fallback, the dictionary from set_soundfiles will be used.
  • Python floats and ints can be implicitly converted into boxReal(val), boxInt(val), sigReal(val), and sigInt(val): boxHSlider("cutoff", 440, 20, 20000, .001) is OK (440 is implicitly casted boxInt(440)

v0.7.3

18 Sep 14:16
Compare
Choose a tag to compare

PyPI now requires Python 3.8 for Windows/Linux. MacOS requires Python 3.9.

Bug fixes:

  • In between renders, a plugin processor is now better told to turn off all MIDI notes. This is helpful if a render ends before a Note Off event.
  • RenderEngine.cpp has fixed an issue when the output render size was off by one sample if the block size was 2.

Other updates:

  • JUCE has been updated to 7.0.7.
  • pybind11 has been updated.
  • Sampler Processor Plugin project has been updated.
  • libfaust has been updated to 2.68.1.
  • libfaust (the Box and Signal API) files have been refactored into more isolated files.
  • The Faust Processor can now load soundfile primitives directly from the filesystem. If the file hasn't been specified via set_soundfiles then the filesystem will be checked.
    • Similar improvement for boxSoundfile("mySound[url:{'tango.wav'}]", 2): If you tell a FaustProcessor to compile the box involving boxSoundfile, then the files will be loaded. As a fallback, the dictionary from set_soundfiles will be used.
  • Python floats and ints can be implicitly converted into boxReal(val), boxInt(val), sigReal(val), and sigInt(val): boxHSlider("cutoff", 440, 20, 20000, .001) is OK (440 is implicitly casted boxInt(440)

v0.7.1

01 Jun 07:10
3b386e5
Compare
Choose a tag to compare

This version adds some multiprocessing tests and examples.

Behind the scenes, we're using the JUCE AudioProcessorGraph in a slightly better way.

  • The mutex in PluginProcessor has been removed because it was no longer necessary.
  • We create the JUCE MessageManager instance before creating the AudioProcessorGraph.

v0.7.0

18 May 07:38
b811b05
Compare
Choose a tag to compare

Breaking changes:

  • Dropped PyPI builds for macOS python 3.7/3.8. Please use Python 3.9 or higher.
  • Minimum macOS version is now 11.0.

Updates:

  • #152 is a high-priority bug that is not yet addressed.
  • Fixed crash with PluginProcessor.record_automation
  • Updated to Faust version 2.59.6 and the associated Faust Libraries.
  • Updated the Box/Signal APIs with some new functions
    • Fixed some of the isBox functions in the Faust Box API.

Developer notes:

  • Removed libfaust files from repository
  • Build procedure now dynamically downloads libfaust
  • Updated faust, faustlibraries, and pybind11 submodules
  • Developer's Guide will be updated this week to reflect these changes.
  • The JAX/QDax Python notebooks will also be updated very soon.

v0.6.16

20 Feb 00:19
Compare
Choose a tag to compare

Bug fixes:

  • Fix memory leak due to calling engine.load_graph with an invalid argument.
  • Fix semaphore leak? (#146)

Other:

  • AddProcessor will throw a runtime error if the most recently specified gain levels don't work for the given audio buffer (such as 3 gain values for 2 stereo tracks)

v0.6.15

03 Feb 01:20
Compare
Choose a tag to compare

Bug fixes:

  • PlaybackWarp Processor now outputs zeros rather than junk values after the playhead has passed the processor's clips, as determined by .set_clip_positions(clip_positions)

Other:

  • Python 3.11 builds of DawDreamer are available
  • JUCE has been updated to 7.0.5

v0.6.14

20 Oct 09:47
Compare
Choose a tag to compare

Three new exciting notebooks to try with DawDreamer 0.6.14.

  • Box API: Access the intermediate representation of Faust, programmatically compose boxes, then render audio with DawDreamer, or transpile to a target language (C++, JAX, Rust, etc.).
  • Faust to JAX: Convert Faust to JAX and optimize parameters using gradient descent.
  • Faust to QDax: Convert Faust to JAX and train with Quality-Diversity algorithms.

v0.6.12

15 Sep 16:24
35f793b
Compare
Choose a tag to compare

Same as 0.6.11 but with support for Apple Silicon.