[linux-audio-dev] Midi/OSC help - Continuous controllers

Olivier Guilyardi ml at xung.org
Thu Jun 30 10:20:06 UTC 2005


Alfons Adriaensen wrote:
> On Wed, Jun 29, 2005 at 10:46:55AM -0400, Paul Coccoli wrote:
> 
> 
>>On 6/28/05, Olivier Guilyardi <ml at xung.org> wrote:
>>
>>
>>>I believe there could exist a library with which :
>>>1 - you instantiate a core object (providing the alsa midi port as an arg)
>>>2 - you "attach" to some widgets : sliders, spin buttons, etc.. (note that this
>>>is different from extending (bloating) widgets)
>>>3 - you may call a function to enter the capture-mode
>>>4 - 100 % of this capture-mode is encapsulated by the library : knobs-to-widgets
>>>assignations are handled transparently
>>>5 - there is some way to retrieve these assignations to recall them later
>>>
>>
>>You seem to really like this idea.  Why don't you just do it and see
>>if it works well?  I have an unfounded hunch that it won't, since you
>>usually want your GUI running in a lower priority thread.

Needs checking indeed... Spawning an additionnal thread may be required. The 
reason why I don't "just do it" is because discussing implementations ideas 
before coding has been of great benefit to me in the past, especially here in 
LAD...

> Yes, and you'd force the widgets to update for each message sent by
> a knob, even if there are 1000 such messages per second, which is absurd
> and could easily freeze the entire application.

Why ? I can cache/compare values before asking the widget to update.

> It's also not a general model. What if you want to link to GUIs, or
> two HW controllers ?

Two controllers (mtk: midi toolkit) :
c1 = midibind_new();
c2 = midibind_new();

That would open two input midi ports (and maybe create two threads).

Then you could attach to whatever widget you like :

mtk_attach_gtk_hscale (c1, gui1->hscale);
mtk_attach_gtk_vscale (c2, gui1->vscale);
mtk_attach_gtk_hscale (c2, gui2->hscale);
...

> The association should be done in the 'server' part of the model, i.e.
> that part which provides the interface to all controllers and viewers.
> In the MVC structure, a GUI is just a controller/viewer as any other.
> It does not play any central role.

I know what you mean. But I tend to keep my distances with such academic 
considerations.

Thanks for your input and criticism.

--
   og



More information about the Linux-audio-dev mailing list