in ardour3, which the only implementation i want to talk about, we have a basic object called a Controllable which consists fundamentally of just a set() and get() method pair and a callback/signal that is called/emitted when the value changes. Controllables are used for just about everything in ardour that can "be controlled", and they all have unique, persistent ID.
MIDI bindings link a particular MIDI message (e.g. a CC number) with the ID of a Controllable, and will generally cause the set() method of the object to be called when the message is received. On 3/22/11, Harry Van Haaren <[email protected]> wrote: > Hey guys, > > I'm wondering how to approach creating a MIDI map to all controllers > available in the GUI. Needless to say I can hard code in a MIDI CC, and from > JACK's process callback call the function that I want to map that control > to, but that's a little rigid. > > I like Ardour's one-click map idea, and I'm wondering how its implemented. > Here's what I concluded so far: > On mouse_3 down, pop up dialog, send message to JACK process to keep next > MIDI input stored somewhere. That's the CC to map > > Where I'm getting stuck is how to make each CC point to a different > "parameter" in the software, or a different function in the code. Function > pointers come to mind, but somehow I don't like that idea much. Creating a > generic interface to map every control in the entire engine might work, but > I think that may be a little overkill? > > I'd be interested to hear how various projects handles this internally, if > anybody wants to chip in? > Cheers, -Harry > _______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/listinfo/linux-audio-dev
