[ardour-dev] Mackie design ideas

John Anderson ardour at semiosix.com
Wed Jan 3 13:07:22 PST 2007

Here's what I'm thinking. Feedback welcome, nay, requisite.

A data structure containing entries for each physical control, optimised
for lookup by incoming midi identifiers.

Whenever an incoming midi message arrives, find the control and fetch
the route from the route table (if it's a route/strip type control).
Make the necessary changes by calling the relevant methods in BasicUI or

Is there a Session::refresh or something like that to tell it to redraw
changes to the UI and do other necessary updates?

Then ... some of the changes will generate feedback to be sent to the
surface (ie faders to confirm their position, or pots to make pretty
patterns in the LED ring). These would be added to an outgoing queue.
Events generated by mouse & keyboard use on faders and buttons and pans
and pots would also be added to the queue. As would outgoing bank
switching data.

Every n milliseconds, a thread wakes up and flushes the queue. To be
honest, I'm not certain why the Tranzport and GenericMidi do it this way
(instead of just writing the bytes direct to the device) but I'm sure
there's a good reason, which y'all will provide for my enlightenment...

Hmm, is that it? Seems quite simple - I must have overlooked
something :-|

It's late and I'm going to sleep now. Seeyas tomorrow.


More information about the Ardour-Dev mailing list