[Clam-devel] Control objects

Albert Graef Dr.Graef at t-online.de
Sat Mar 31 12:17:06 PDT 2007

Hi Pau,

I'm forwarding this to the devel list now, so that maybe some other kind
soul will relieve you from the burden of having to reply yourself. ;-)

> controls threading is something that needs to be fixed: right now the
> control registers are saved from the ui tread. and control callbacks (if
> any) are also executed from ui thread. of course all this should be done
> from the processing thread, once per Network::Do(). we need to add an
> event queue that acts as the tread boundary.

Yes, I remember that we discussed this at LAC. Lockfree queue data
structures are readily available, so it should be easy enough to add
this. Anyway, I don't think that this will be much of a problem for me
right now.

> anyhow, we are able (though not safely) to access processing object
> state from the ui thread. actually controlt registers are processing
> object attributes.

Does "though not safely" mean that right now there will be races between
the GUI thread updating the control values and the audio thread reading
those values in the Do() method?

> look at these examples. specially the "simple" one.
> http://iua-share.upf.edu/svn/clam/trunk/CLAM/examples/ControlArrayExamples/

Yes thanks, that was more or less what I was looking for. I browsed that
code and also digged through the available tutorials, documentation and
the wiki. Alas, I don't have the time to sift through the entire ml
archives right now, and they don't have a search function. ;-) So I
still have a few questions.

1. Is there a simple example which also shows how to do control
*output*? This is supposed to be done in the Do() method, right?

2. How do I build a version of CLAM and/or the NetworkEditor which has
my custom processing object included -- just add my class to the
src/Processing tree?

3. Last but not least, I'll need to have a little configuration dialog
which will allow the user to pick the Q function to be called for the
control processing (similar to what the AudioFile object does when you
enter the name of the file to be played). Does the NetworkEditor create
that automagically from the configuration interface of the processing
object or do I have to do my own with QtDesigner?

Any help will be much appreciated.


Dr. Albert Gr"af
Dept. of Music-Informatics, University of Mainz, Germany
Email:  Dr.Graef at t-online.de, ag at muwiinfa.geschichte.uni-mainz.de
WWW:    http://www.musikinformatik.uni-mainz.de/ag

More information about the clam-devel mailing list