Hello Doug,
I am sorry to attempt to make you even busier than you are, but I would like to ask you whether you think about adding something between "automated" sending of MIDI data to an audio unit and "manual" handling of buffers. I.E. between AUMIDIControllerHandleMIDI and AUMIDIControllerConnectSource.
I think it would be nice to allow a transformation of MIDI notes and filtering of controllers. The structure of parameters may looke like this:
SInt16 rcvChannel; //0-15, kAllChannels SInt16 sndChannel; //0-15, kAllChannels, kDontChange SInt16 lowVeloLimit; SInt16 hiVeloLimit; SInt16 lowNoteLimit; SInt16 hiNoteLimit; SInt16 noteTranspose; SInt16 veloCurve[128]; //transformation of velocity, //Transform: outVelo = veloCurve[inVelo]; //examples: Linear - veloCurve[ii] = ii; Fixed: veloCurve[ii] = constValue; UInt32 filterFlags; //bit field //...and anything you would find useful, as there is probably nobody understanding MIDI better than the author of OMS and CoreMidi...
Furthermore, there could be a set of utility functions, sending simple data to the AU, getting to a little bit higher level, than handling buffers, such as MIDISendNote, MIDISendProgramChange, MIDISendVolume etc. Do you, other guys, would utilize it?
Cheers
Lubor Prikryl DSound (CZ) Audio Software Developer
|