41 #include "CAAUMIDIMap.h"
44 static MIDILinearTransformer linearTrans;
45 static MIDILogTransformer logTrans;
46 static MIDIExpTransformer expTrans;
47 static MIDISqrtTransformer sqrtTrans;
48 static MIDISquareTransformer squareTrans;
49 static MIDICubeRtTransformer cubeRtTrans;
50 static MIDICubeTransformer cubeTrans;
52 MIDIValueTransformer * CAAUMIDIMap::GetTransformer (UInt32 inFlags)
54 if (AudioUnitDisplayTypeIsLogarithmic(inFlags))
56 else if (AudioUnitDisplayTypeIsExponential(inFlags))
58 else if (AudioUnitDisplayTypeIsSquareRoot(inFlags))
60 else if (AudioUnitDisplayTypeIsSquared(inFlags))
62 else if (AudioUnitDisplayTypeIsCubed(inFlags))
64 else if (AudioUnitDisplayTypeIsCubeRoot(inFlags))
71 bool CAAUMIDIMap::MIDI_Matches (UInt8 inChannel, UInt8 inData1, UInt8 inData2, Float32 &outLinear)
const
74 SInt8 chan = Channel();
76 if (chan >= 0 && chan != inChannel)
84 if (IsBipolar_OnValue()) {
98 if (IsBipolar_OnValue()) {
115 outLinear = inData2 / 127.0;
117 outLinear = inData1 / 127.0;
120 if (mData1 == inData1) {
122 outLinear = inData2 / 127.0;
129 else if (IsControlChange()) {
131 if (mData1 == inData1) {
133 if (IsBipolar_OnValue()) {
147 outLinear = inData2 / 127.;
154 if (IsPatchChange()) {
155 if (mData1 == inData1) {
165 if (IsBipolar_OnValue()) {
180 UInt16 value = (inData2 << 7) | inData1;
181 outLinear = value / 16383.;
183 else if (IsChannelPressure()) {
184 outLinear = inData1 / 127.0;
191 void CAAUMIDIMap::Print ()
const
193 printf (
"CAAUMIDIMap:%p, (%u/%u), mParamID %d, IsValid:%c, Status:0x%X, mData1 %d, Flags:0x%X\n",
this, (
unsigned int)mScope, (
unsigned int)mElement, (
int)mParameterID, (IsValid() ?
'T' :
'F'), mStatus, mData1, (
int)mFlags);