On Wednesday 18 December 2002 19.39, Tim Hockin wrote:
OK, I thought that the host was responsible for
mashalling the
queues.
Only when you send events from different contexts to the same
Queue. There's normally no need for it otherwise.
If the host expects to draw a UI that corresponds to an actual knob
moving, it needs to snoop events.
Well, you're bringing up an interesting set of problems.
First, note that a Control is either an input or an output - so you
can't drive a knob that way from a single Control. You need an output
control to move the knob, and an input control to get user input from
the knob. For an input widget, the plugin will normally have only an
input Control, so the output must come from somewhere else: The
sequencer.
So, the actual connections don't have much to do with snooping at
all, but rather look something like this:
|-----------| |-------|
| |--+----------->| Synth |
| | | |-----| |-------|
| Sequencer | +->| |
| | | GUI |
| |<----| |
|-----------| |-----|
That is, the sequencer sends data to the synth *and* the synth's GUI.
This is what makes the GUI track the automation.
When automation is on "record", the sequencer takes input from the
GUI as well, and basically records it and forwards it to the Synth at
the same time.
Display widgets in GUIs would be the same, although without control
output. Obviously, all widgets must have inputs.
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`--------------------------->
http://olofson.net/audiality -'
---
http://olofson.net ---
http://www.reologica.se ---