Releases: DBraun/DawDreamer
Releases · DBraun/DawDreamer
v0.8.3
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)
Sinceconvert=True
, the output will try to convert the parameter's range of text labels into floats (e.g."16.2 kHz"
will become16200.0
,"440 Hz"
will become440
,"50% (-32.0 dB)"
will become-32.0
, and so on). Ifconvert=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
andsigFFun
have been added to the Box API and Signal API.- Fixed a bug with
boxVGroup
accidentally usingboxHGroup
v0.8.0
Breaking changes:
boxFromDSP
now returns just abox
, not a tuple of(box, inputs, outputs)
getBoxType
has been removed.
Improvements:
- A box object has new properties:
.valid
,.inputs
.outputs
. This is whyboxFromDSP
changed andgetBoxType
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
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 viaset_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 involvingboxSoundfile
, then the files will be loaded. As a fallback, the dictionary fromset_soundfiles
will be used.
- Similar improvement for
- Python floats and ints can be implicitly converted into
boxReal(val)
,boxInt(val)
,sigReal(val)
, andsigInt(val)
:boxHSlider("cutoff", 440, 20, 20000, .001)
is OK (440 is implicitly castedboxInt(440)
v0.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.
- 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 viaset_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 involvingboxSoundfile
, then the files will be loaded. As a fallback, the dictionary fromset_soundfiles
will be used.
- Similar improvement for
- Python floats and ints can be implicitly converted into
boxReal(val)
,boxInt(val)
,sigReal(val)
, andsigInt(val)
:boxHSlider("cutoff", 440, 20, 20000, .001)
is OK (440 is implicitly castedboxInt(440)
v0.7.1
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
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.
- Fixed some of the
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
v0.6.15
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
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.