Python audio processing with pedalboard

lwn.net

78 points by sohkamyung 4 days ago


ofrzeta - 9 hours ago

Related discussion with comments by the author: https://news.ycombinator.com/item?id=28458930

including "Under the hood, this is essentially just a Python wrapper around JUCE (https://juce.com), a comprehensive C++ library for building audio applications. We at Spotify needed a Python library that could load VSTs and process audio extremely quickly for machine learning research, but all of the popular solutions we found either shelled out to command line tools like sox/ffmpeg, or had non-thread-safe bindings to C libraries. Pedalboard was built for speed and stability first, but turned out to be useful in a lot of other contexts as well."

camtarn - 11 hours ago

GitHub: https://github.com/spotify/pedalboard

Sadly, although it supports realtime processing, it doesn't say anything about latency, which is a make-or-break quality for most realtime audio processing. Definitely feels like a batch processing library which has had realtime support bolted on. The VST support is extremely cool though!

westurner - 5 hours ago

BespokeSynth is also built on JUCE.

BespokeSynth supports VST3, AudioUnit, LV2,: https://github.com/BespokeSynth/BespokeSynth/issues/1614

One day, I found a number of open source patch bay implementations. They may be useful for building a GUI with pedalboard:

- https://github.com/Houston4444/HoustonPatchbay :

> [HoustonPatchBay is] a patchbay for JACK used by RaySession and Patchance, usable by other python Qt5 softwares.

- RaySession: https://github.com/Houston4444/RaySession is a patchbay for JACK

- Patchance: https://github.com/Houston4444/Patchance is JACK patchbay gui w/ ALSA MIDI support

> It is a direct alternative to Catia or Patchage

- org.pipewire.helvum: https://gitlab.freedesktop.org/pipewire/helvum https://flathub.org/apps/org.pipewire.Helvum :

> Helvum is a GTK-based patchbay for pipewire, inspired by the JACK tool catia.

- easyeffects: https://github.com/wwmm/easyeffects ; pipewire + GStreamer -> just pipewire