#66 Support for DSSI effects



I think this one will be pretty easy for you... Could you add support for DSSI effects? As far as I know, it should be a pretty trivial thing to do, as you already have support for DSSI instruments.

The reason I'm requesting it is because my project's suite of DSSI plugins (search for "LibModSynth" here on Sourceforge), currently contains 5 DSSI effects that can't be used in Muse2. Currently Qtractor, Rosegarden and jack-dssi-host are the only hosts I know of that support DSSI effects. I'm also working on a super-easy visual DSSI plugin designer, so I'd be willling to wager that there will be many more DSSI effects in the future.


  • terminator356

    terminator356 - 2012-04-09


    From the viewpoint of MusE, your plugins are not
    DSSI effects, they are DSSI synthesizers.

    This is because they define a run_synth function.

    In MusE, there are two different places where
    DSSI modules are detected, listed for the user,
    and instantiated.
    The first is our effect rack plugins, as seen on each
    audio track.
    The second is our synthesizer section, as seen on our
    track list's right-click 'add synth' menu.

    One of my goals was to ensure that DSSI synthesizers were
    kept out of the effect rack plugin list, because it didn't
    make sense to clutter the list with synthesizers, which
    really shouldn't be there.

    How is the determination made
    "what is a synthesizer and what is an effect"?
    When listing effect rack plugins I IGNORE ANY module
    which has run_synth, run_synth_adding, run_multiple_synths,
    or run_multiple_synths_adding functions.
    (I simply adopted the technique from the DSSI file dssi-vst.cpp
    which does the same thing.)
    Conversely, when listing synthesizers for the user, I
    do the exact opposite - I list ONLY modules which
    have ANY of those functions.

    One of the reasons this makes sense for MusE is that our
    effect rack plugin support has NO MECHANISM to deliver
    midi events to the plugins.
    In fact MusE doesn't even have a mechanism to assign midi
    controllers to LADSPA or DSSI controller ports.
    (This is a sorely lacking feature, hopefully adding down the road.)

    Note that some DSSI plugins DO NOT define a run*_synth*
    function. They only define the standard LADSPA run function.
    Technically as I understand it, these are properly called 'effects'.
    Thus these DSSI modules DO show up in our effect rack plugins list.
    Examples: Several of the Calf plugins, also many DSSI-VST effect plugins.

    Rosegarden appears to take an extra step to determine "what is an effect".
    It appears to exclude any plugin from its effects list which has
    NO audio inputs.
    MusE does not, as there are several plugins which are 'generators'
    which are perfectly legal in our effects rack.
    Search for 'noise' or 'white noise' or 'pink noise' generators
    in Rosegarden's effect list (I found only one - with audio inputs)
    and then in MusE's effect list (all there).

    Meanwhile, QTractor appears to abandon any attempt to determine
    effects versus synths, as it appears to just list everything,
    even showing obviously dedicated synthesizers in the effect list.
    As I mention above, I'm not crazy about doing that, as it clutters
    the list and confuses users. But this may simply be how QTractor
    works, allowing a synth on an audio track, I'm not sure how it
    works exactly ...

    And yet, it is understandable because certain plugins 'blur' the
    line between synth and effect.
    They may rightly be called effects, but they may wish to repond to midi,
    using run_synth, thus they cross the line into the definition of a
    synthesizer, so MusE unfortunately excludes them from its effects list.

    I examined a couple of your plugins and noted you are not using the
    midi 'events' parameter in your run_synth function.
    I gather at some point you might wish to use midi events?
    If you will NOT be using midi, consider writing a LADSPA run function
    instead of the DSSI run_synth function, so that they will show up
    in our effects list.

    C'mon over to our developer list.
    We've got a few devs knowledgeable in DSSI, and one who currently
    may be interested in you wrappers.
    Sometimes even Chris, the DSSI and RG guy, lurks around...

    Maybe they can offer some insight. Something I missed or I'm wrong about?

    Meanwhile I'm examining our rack effect plugin code to see if
    there's anything I can do.
    With some tweaks I may be able to allow your synths er, effects, to be shown.
    But it's a question of whether we should.
    It does seem 'Draconian' to exclude certain plugins, like yours,
    however some of them might not even be able to produce sound
    at all without MusE providing midi to the plugins.

    PS: I get "Illegal instruction" crash when I try to load your plugins
    in MusE, RG, or QTractor. It's a 64-bit PC. Built from your source.


  • Robert Jonsson

    Robert Jonsson - 2012-04-09

    Hi Jeff,
    As Tim suggests, please do consider joining us on the mailinglist (it's low traffic)
    Also, your plugin building venture looks great :)

  • terminator356

    terminator356 - 2012-04-10

    Hi Jeff.
    After careful consideration, I'm allowing DSSI synths
    (those with a run_*synth* function) to be displayed
    in the LADSPA browser. Committed to release_2_0 branch.

    Just, for now, you'll have to be aware of what's a synth and what is not.
    We'll put some kind of check box, or new browser column showing this.

    Enjoy. Hope it makes life easier. Let me know if any trouble.

    Tested OK with Calf Rotary Speaker in a rack (and a synth too),
    saving and loading.


  • Jeff Hubbard

    Jeff Hubbard - 2012-04-10

    First off, thank you for taking the time to reply. I'll join your mailing list here in a moment, and I'll test the latest SVN build of Muse2 tomorrow night.

    Regarding illegal instruction errors: What distro and CPU are you using? It's probably an issue with one of the default CFLAGS I'm using, admittedly I probably went overboard on some of the compiler optimizations.

    Regarding LADSPA-fying the pure effect plugins: I'm not opposed to doing so, as long as it doesn't cause any negative side effects. Admittedly, I'm still very new to Linux audio, 99% of my experience was on the Windows platform. I'm sure there are still plenty of things I could be doing better with my project, so I do appreciate input and opinions of more experienced Linux developers like yourself.

  • terminator356

    terminator356 - 2012-04-10

    Oh right that's what I should have reported.
    It's an AMD Athlon 64 processor.

  • terminator356

    terminator356 - 2012-09-07

    I believe this has been taken care of now.
    The LADSPA plugin dialog was given a big makeover.


  • terminator356

    terminator356 - 2012-09-07
    • assigned_to: nobody --> terminator356
    • status: open --> closed

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks