[linux-audio-dev] XAP: magic 'sys controls' vs normal controls

David Olofson david at olofson.net
Mon Dec 23 21:03:00 UTC 2002


On Tuesday 24 December 2002 00.28, Tim Hockin wrote:
[...]
> Random thoughts:
>
> * sys_controls could be per-plugin not per-channel - they really
> ARE plugin-global:  TEMPO, METER, TIMEBASE, TRANSPORT, etc.

Yes, if we assume that a plugin can only be aware of one timeline at 
a time. Probably not a major restriction.


> Making
> them per-channel means we can have POLYPHONY, VOICE_ON, and SEEK be
> sys controls, too.

No, the latter two are *per-voice* - although that basically just 
means they take a VVID argument as well.

(Speaking of which, I implemented a VVID manager for Audiality the 
other day. "Finished and tested", although I haven't integrated it 
yet.)


> * This is all designed to take away the extra fields that aren't
> needed for magic controls.  Maybe that is a waste of energy.  Just
> define macros for making them taste like normal controls, and tell
> plugin writers to deal with the wasted memory/footprint.

How many fields can actually be eliminated? Can't be many bytes, and 
there aren't all that many of these controls. I can't see that it's 
worth any special casing to save a few fields per "magic control".


> * If they taste like normal controls, we need to flag them as
> system controls.

Why? It should be enough to give them datatype codes of their own, so 
no one will get the idea that they're compatible with anything else.


> They really ARE special to the
> host/sequencer/timeline.

In what way? Indeed, the relation between TEMPO and POSITION is a bit 
"odd", but other than that, they're basically just controls used by 
the timeline to express musical time.


> * MIDI-compatible controls are essentially fixed controls, too.  We
> don't want to break those out.  But they aren't as 'special' as
> these.

There should be no special "MIDI compatible" controls at all, IMHO, 
but rather just a standard set of hints. The motivation for those is 
really just this "Cable" idea of hosts connecting ranges of controls 
automatically. PITCH->PITCH, VELOCITY->VELOCITY etc.

MIDI drivers/converters would just map MIDI CCs to suitable Controls 
in the way suggested by the Control hint names. We could have an 
official MIDI CC -> Control mapping, if desired, but no actual 
references to MIDI in the API.


> Anyone have ideas on the cleanest representation?

Well, I still think the cleanest way would be to use the Control 
metadata stuff, giving the timeline controls datatype IDs of their 
own. No hints needed, I think, as ranges, semantics etc would be 
strictly specified in the API anyway.


//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 ---



More information about the Linux-audio-dev mailing list