vsariola / sointu

Fork of 4klang that can target 386, amd64 and WebAssembly. Tools run on Windows, Mac & Linux
MIT License
239 stars 15 forks source link

LV2 plugin #126

Open LeStahL opened 7 months ago

LeStahL commented 7 months ago

Sointu could have a LADSPA plugin target (https://www.ladspa.org/ladspa_sdk/ladspa.h.txt). This would enable the use of LMMS (or other, more unix-based sequencers) with Sointu.

vsariola commented 6 months ago

Spying how vst2 package does it would be a good idea https://github.com/pipelined/vst2 Having a general package for making LADSPA plugins and then make sointu use that would be a good idea.

LeStahL commented 4 months ago

LADSPA API can not process MIDI events, only samples - LV2 is the correct choice of API here, so I'll rename the ticket.

vsariola commented 4 months ago

I don't think I will have the energy to do this, but the correct approach would be to make a package similar to vst2 that bridges the calls from Go to C and vice versa, and then use that within sointu. One could either do a minimal wrapper without adding any functionality, or perhaps similar wrapper like the LV2 C++ wrappers, which give default implementations for functionalities so one needs to only write the interesting functions.

I don't like how they decided to have LV2 plugins be folders, with multiple files and metadata; this complicates builds in go a lot, because go generally assumes "one executable" builds and has no build automation on its own. I really wish distributing LV2 would be as simple as "single shared object", like VST2. Apparently VST2 didn't get everything wrong (but quite many things they did).

vsariola commented 4 months ago

If someone krhmkrhm is interested to take on the job, I'm happy to delegate :D

LeStahL commented 4 months ago

I'd be interested to write this (and also write & maintain a go module for easy access to LV2), but it may take some time until I start, because I'm busy atm with the upcoming Revision compos :)