Live performance with a MIDI controller - MIDI learn for plugin parameters?

I’m thinking about making Ardour a workhorse for performing live with a band using various synths and soundfonts.
The idea is to make my MIDI controller able to use al it’s potentiona to control various plugins live and filter data by MDI channel so I can set up 16 different instruments, each with it’s own plugin controls router to 8 knobs I have, some globals assigned to 9 faders and 9 buttons that all send MIDI CC.

Using the x42-plugins (MIDI filters) I was able to set up Calf-Monosynth on channel 1, Calf-Fluidsynth on channel 2, and ZynAddSubFX drumkit on channel 10 (assigned to 8 drum pads). I tried Ardour’s built-in MIDI channel functinality but it seems to not work when not recording. I still had all instruments react to all MIDI channels, whitch is a show-stopper. Good that there’s a plugin that can do this.

However Ardour doesn’t seem to be able to assign my CC controls to various plugin parameters for live operation, like LMMS does.

In LMMS you can MIDI-learn every single paramater of any plugin or interface element (mixer fader, solo-switch, etc.) to any MIDI CC control with MIDI channel-filtering.

Calf plugins seems to support MIDI-learn on their own, however it looks like Ardour doens’t forwards CC messages to the plugins, because I was unable to use this feature within Ardour.

In LMMS I could use my MIDI controller’s (m-audio Oxygen 49 MKIV) buttons to temporarily enable tapestop or stutter effects live, but I can’t do this in Ardour right now.

I’m thinking about maybe using an external plugin rack for such stuff, but using multiple programs seems to be more difficult and crash-prone then using a single host.

LMMS downside on this is that it has no way of manipulating audio signal in realtime (no way to vocode my voice live) and it’s doesn’t support LV2 plugins, so I’m limited to what instruments I can use there.

My idea is to enable MIDI-learn for all automatable controls allowing them to be accesed via MIDI CC (possibly also OSC) in a live manner when the session transport is stopped.

Recently (LAC’15) a very similar use-case popped up: Use a midi-controller to trigger various “scenes” in ardour for live-performance.

There are two big issues with current Ardour:

  1. The “midi control” port is special (one cannot [yet] route the output of a midi-track or bus back into it. The events would only arrive in the next cycle)

  2. one cannot arbitrarily bind midi events (e.g. a single event cannot trigger different actions e.g. mute this, unmute that and also set gain to X)

but pretty much all actions including plugin parameters can be controlled via OSC. So as stopgap, I whipped up https://github.com/x42/jackmidi2osc
It has no GUI and a terse text config file, but it’s powerful, portable and reliable. Eventually the goal is to allow such things in Ardour, the problem is that someone will need to come up with a UI to set this up…

PS. Ardour does forward CC messages to plugins (at least Ardour4 does), and also the reverse is possible: plugins can produce CC. setBfree is a working example.

PPS. look at https://github.com/Ardour/ardour/blob/master/libs/surfaces/osc/osc.cc#L344

Some of the OSC actions like ‘/ardour/routes/plugin/parameter’ are not yet documented at http://manual.ardour.org/using-control-surfaces/controlling-ardour-with-osc/

Ardour has functional MIDI learn, as documented: http://www.manual.ardour.org/using-control-surfaces/midi-learn/

Thank you guys so much for the input!

It looks like Ardour is already capable of what I need, I’ll get digging in the documentation.

In fact, I like arrange keyboard mode, that is you can load a performance preset, it will load voices and multipads , styles (this is a part of accompany system) automatically. Just like one man band, we just play melody on the right and chord on the left or foot keyboard. I am working on it. And I 'm glad to combine my program into Ardour