> I'd be interested to hear how various projects handles this internally, if
In mine, each parameter has two additional members:
- controller_id (32 bit int)
- SYSEX string. (for SYSEX based automation).
Controller ID is several sub-fields. The high order 8 bits are the type of
NullType=0, // ignore.
CC = 2,
ChannelPressure, // monophonic aftertouch.
Pitch = 19, // only polyphonic allowed after here. see
Active, // note-stealing. float. Active (10) = not stolen.
0.0 - Voice in rapid-mute (steal) phase.
unused1, //Reset, // int. Voice assigned new Voice ID or
re-used after period of inactivity, kill any residue of previous use. poly
ADSRs need reset to zero, filters/delays need clearing.
VirtualVoiceId, // int. usually same as MIDI note number.
..The next 24 bits identify the CC, RPN, or NRPN number (if relevant). With
polyphonic controllers, like poly-pressure, the key-number gets squeezed in
SYSEX string is for SYSEX controllers, it's just a unsigned char array
containing the SYSEX string with imbedded 'format specifiers' at the
'variable' parts. E.g. "FO 41 10 42 12 VV F7" ..."VV" being the value that
This system, AFAIK, handles MIDI automation for pretty much any type of MIDI
> -----Original Message-----
Linux-audio-dev mailing list