LADSPA support coming to Jokosher

At LUGRadio Live we agreed an initial feature-set for Jokosher 0.2, and a release schedule. For more details on this, read this this thread.

One of the key features I am keen to see in 0.2 is full LADSPA support. For those of you who have been living under a rock, LADSPA is a plug-in standard for audio effects. There are stacks of plug-ins out there, and we want them to work inside Jokosher. So, how does this work?

Well, there is a GStreamer bridge that worked with 0.8 and was ported to 0.10 and has problems. I have reported this as a bug and hopefully some of the GStreamer guys will fix this up soon. In the meantime, I figured I would write some code to get the plug-in UI up and running.

LADSPA does not actually provide a user interface for plug-ins. I was under the impression that some kind of XML UI description schema (similar to Glade) was available to describe the UI, but it seems not. Instead, you need to probe the LADSPA ports (the virtual knobs on the plug-in) and generate the interface yourself. I figured I would see if the GStreamer LADSPA bridge worked with regard to exposing these ports via GObject properties.

So, I wrote a test script today that queries the GStreamer plug-in registry for LADSPA plug-ins, and provides a list of them. When you select a plug-in, the script generates a settings window with a bunch of sliders and their appropriate minimum and maximum values. As such, the LADSPA querying and UI side of things is written and I can drop it into Jokosher. I plan on merging it in over the next few days. I hope to get LADSPA support finished for entire instruments over the following week, and when the bridge is fixed, we will have working effects support in Jokosher!! :)

  • iain

    Oh please, for the love of all that is holy do not make an autogenerated UI…please

    For futher evidence see and the abominations that are the Sweep and Audacity effects menus.

  • sil

    iain: not a lot of choice. That’s the way LADSPA makes you do it. If you have other suggestions, we’d love to hear them!

  • jono

    Although it will need to be generated, I have spent most of today working on the effects UI, and it will be much better than other editors. But, as sil says, thats thew only way to go with LADSPA.

  • iain

    You pick the plugins you ae going to use, then you hand design the UI for them. It is a lot more work, but it is better than having a mess of “Plugins 1->16″ “Plugins 17 -> 24″ lmenus like other programs have, and really, is the only way that Jokosher can claim to be a program focussed on usability.

  • mrben

    Presumably the best compromise would be to do both – produce a generic interface if there is no custom one available, but show the custom one if there is one.

  • jono

    iain, mrben – the plan is to not just produce a list of numbered plugins like that. For the majority of the plug-ins we will autogenerate the interface, but for some key plug-ins such as compression and EQ, I plan on working with the art team to produce an attractive and simple interface.

    It is also important to remember that Jokosher will sport lots of plug-in presets to make life easier.

  • iain

    This is a major failing of the whole ladspa concept, that they didn’t take any real consideration of UI. And until the monstrosity of requiring autogenerated UIs is solved,I don’t think Linux will be an overly attractive platform for audio processing…and this is coming from someone who both writes a sample editor and edits audio on linux…

    sorry for the soapboxing…good luck on the rest of jokosher

  • jono

    iain – it isnt perfect, and I agree it is not an ideal situation. Autogenerated user intefaces feel badly documentated and clunky. But, I do feel that there ways to solve some of these usability problems without throwing away all your LADSPA plug-ins and creating a new spec.

    My next post will explain some of my thinking about how to solve some of these problems. I think it is a combination of sensible meta-data, good usability and discoverable interfaces.

    There is work going into LADSPA version 2 called LV2 – I recommend you transmit your thoughts to Steve Harris. Use the Linux Audio Developers mailing list to do so. :)

  • jonobacon@home » All you effects belong to us

    […] One of the issues in terms of dealing with LADSPA plug-ins is that the GUI for each plug-in needs to be auto-generated, and I have already got some code up and running for this. Although this will be the case for the vast majority of plug-ins, certain specific plug-ins, namely compression and EQ will have custom UIs designed for them and be built into Jokosher not as plug-ins, but as features (they will still use the LADSPA plug-in though). This is because (a) virtually all users will use those features, and (b) EQ in particular does not map well to horizontal sliders and instead needs vertical controls. All LADSPA plug-ins that are used in Jokosher will be hooked into the preset engine so that LADSPA plug-ins can have sensible presets shipped with Jokosher. […]

  • sil

    iain: I completely agree, and as Jono says we intend to hand-design UI for the most common plugins. However, we shouldn’t prevent someone from installing a plugin of their choice for which we have not designed a specific UI.

  • pete

    hmm. the decision not to include an interface componant to the LADSPA spec was born out of pragmatism not a lack of consideration. the technical problems associated with this are significant and given that the devs were unfunded and underpopulated it was a wise move. a working plugin system was a huge shot in the arm for linux audio and if they had tried to tackle these toolkit woes head on, they could well be still at it today. of course, that doesn’t stop it being a massive pain in the arse.

    iain: i don’t remember seeing any bug reports or feature requests WRT sweep’s little abomination. does marlin support LADSPA?

  • pete

    keke, oops + =P

  • jono

    pete – I agree that pragmatism was naturally a large proponant in decided to omit a specific GUI, and merely exposing port capabilities mitigates this responsibility to the application developer. I understand it, but its still not ideal. Take for example an EQ – here, a vertical orientation for the controls is not ideal because (a) screens are wider than longer and (b) you need to compare slider height to form EQ graphs. That is nigh-on impossible with horizontal EQ controls. Sure, I understand the current solution, but LV2 needs to solve these problems I would say.

  • pete

    and that’s not all. each app has it’s own method of dealing with interfaces so you get a different experience each time. then there’s the presets.. :/ however, there are three reasons to be cheerful imo, 1. LV2 is extensible 2. we have a working system for out of process interfaces in DSSI already 3. recently i’ve heard that QT either will support or does support using glib’s event loop. this paves the way for say, a plugn that directly uses QT/KDE to run inside a GTK/Gnome application and vice-versa.

    “custom GUIs” is listed as a planned extension to LV2 here:

    so it’s looking good at the moment.

  • jono

    pete – thanks for the great information by the way! It is really useful. :)

    LV2 is looking pretty cool, and when the LADSPA support is in, I hope to look into LV2 support. I really have not looked into it in that much detail. The LADSPA support in Jokosher is largely done, and we will have our own presets code in there to make everything simple to use.

    So, are you an audio developer? If so, what do you hack on?

  • pete

    just back from me hols.. well, i’m less of an audio developer than a musician with some C ken. (and probably less of a musician than i am a professional optimist, at least in that regard 😉 occasionally i find the time to maintain sweep and i’m also working on a pixmap interface for a DSSI plugin. google seemed to think this post was topical.. and i tend to agree. 😀

    WRT LV2, Dave Robillard is working on a convenience library so you might want to check that out when the time comes. LV2 isn’t substantial enough to hitch your wagon to yet though. incidentally, it rained a good bit while i was away so i started work on a plugin browser for sweep. i’ll be interested to see how you handled plugin selection and categorization.

  • pete

    heh.. i must stop pressing enter in autowrap text environments. format gets all wrongular.