(Speaking of which, I implemented a VVID manager for
Audiality the
other day. "Finished and tested", although I haven't integrated it
yet.)
excellent - and the code is where? :)
* This is all
designed to take away the extra fields that aren't
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".
not many I realized - how does the below code look?
There should be no special "MIDI compatible"
controls at all, IMHO,
Well, we want MIDI compatible hinted controls to fall withing the -1 to 1 or
0-1 range, right? That is a bit more than a hint..
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.
Well, we're documenting things as MIDI-compatible hints, right? I.e.: use
this hint if you want a host to know it should connect MIDI velocity.
Well, I still think the cleanest way would be to use
the Control
metadata stuff, giving the timeline controls datatype IDs of their
How's this look - like what you are thinking?
/*
* System controls are base-typed controls - they receive specific data via
* specific events. Plugins can use these controls to receive special
* messages from the host.
*/
#define XAP_DECL_CTRL_SYS(label, name, hints, flags, rtflags) { \
.type = XAP_CTRL_SYS, \
.label = label, \
.name = name, \
.hints = hints, \
.flags = flags, \
.rtflags = rtflags \
}
/*
* TEMPO (double : ticks/sec)
* - gets values [-inf, inf] via XAP_EV_TEMPO
* - hosts must send a TEMPO event at plugin init and when tempo changes
*/
#define XAP_TEMPO_CTRL(label, name) \
XAP_DECL_CTRL_SYS(label, name, XAP_CTRLHINT_TEMPO, 0, 0)
/*
* METER (double : ticks/measure)
* - gets values [1.0, inf] via XAP_EV_METER
* - hosts must send a METER event at plugin init and when meter changes
* - hosts should send a METER event periodically, such as every measure or
* once per second
*/
#define XAP_METER_CTRL(label, name) \
XAP_DECL_CTRL_SYS(label, name, XAP_CTRLHINT_METER, 0, 0)
<...etc...>