prof-spock / SoX-Plugins

Reimplementation of the SoX Command-Line Audio Processor as DAW Plugins
MIT License
23 stars 0 forks source link

LV2 support #1

Open dromer opened 3 years ago

dromer commented 3 years ago

If possible can you provide LV2 builds by using one of the available JUCE forks like https://github.com/DISTRHO/JUCE and https://github.com/lv2-porting-project/JUCE/tree/lv2

Jatin Chowdhury from https://chowdsp.com has a nice blogpost about this for JUCE projects: https://jatinchowdhury18.medium.com/building-lv2-plugins-with-juce-and-cmake-d1f8937dbac3

cheers!

prof-spock commented 3 years ago

Hello dromer,

thanks for your comment and suggestion! Currently I am struggling with getting the AU-support for OSX ready so LV2 will definitely have to wait for some time. My problem with forks in general is that it is not clear whether those will be kept in sync with the official release. And as far as I know Raw Materials Software has no plans to support LV2 because of the low volume. But I shall have a look at your links and check whether there are only a few LV2 wrapper classes added in the fork or some more cross-cutting changes in the JUCE framework were done.

Best regards Prof Spock

prof-spock commented 2 years ago

Hello dromer,

I have looked into the recent JUCE7 implementation that for the first time officially adds support for LV2 and toyed around with it, but with no real success.

Unfortunately the implementation of an LV2 plugin is not just done by providing some simple cross-platform component (like for AU and VST) and then embedded it somehow into the JUCE framework. LV2 requires a description file in so-called Turtle/RDF format that contains detailed UI-related information.

Currently JUCE is generating this resource file via a dedicated wrapper, but this seemingly rules out any plugins with UIs that are dynamically generated and add or remove UI elements at run-time.

But the SoXPlugins rely on such a mechanism. E.g. the SoXFilter UI adapts dynamically to the filter kind selected in a drop-down box, the SoXPhaserAndTremolo UI changes when you select another effect kind and the SoXCompander UI switches between multiple bands and re-colors the UI as needed.

For now I think it is not yet reasonable to provide an LV2 version of the SoX plugins. The support in JUCE seems to be in early stages, there are still no tutorials or detailed discussions on how to implement LV2 plugins with JUCE. Hence I am waiting until things will stabilize.

Sorry to disappoint you. I'll keep you posted.

Best regards, Prof. Spock

dromer commented 2 years ago

I see, this indeed complicates things. Often the ttl file is generated based on your plugin dll/so file, but if you say the interface can change dynamically this would indeed complicate things a lot.

Thank you for looking in to it!