Re: [LAD] Linux-audio-dev Digest, Vol 49, Issue 16

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-audio-dev@...>
Date: Wednesday, March 23, 2011 - 10:58 pm

> 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
MIDI message...

enum EcontrollerType{
Learn=-2,
None=-1,
NullType=0, // ignore.
CC = 2,
RPN,
NRPN,
SYSEX,
Bender,
ChannelPressure, // monophonic aftertouch.
BPM,
TransportPlaying,
SongPosition,

Pitch = 19, // only polyphonic allowed after here. see
ControllerType::isPolyphonic().
Gate,
VelocityOn,
VelocityOff,
PolyAftertouch,
Trigger,
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
there too.

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
changes.

This system, AFAIK, handles MIDI automation for pretty much any type of MIDI
event.

Best Regards,
Jeff

> -----Original Message-----

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-dev

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

This is the only confirmed message in this thread.