46 #include "AUMIDIEffectBase.h"
49 typedef ComponentResult
50 (*TEMP_MusicDeviceMIDIEventProc)(
void * inComponentStorage,
54 UInt32 inOffsetSampleFrame);
56 static ComponentResult AUMIDIEffectBaseMIDIEvent(
void * inComponentStorage,
60 UInt32 inOffsetSampleFrame);
62 AUMIDIEffectBase::AUMIDIEffectBase( ComponentInstance inInstance,
63 bool inProcessesInPlace )
64 : AUEffectBase(inInstance, inProcessesInPlace),
69 ComponentResult AUMIDIEffectBase::GetPropertyInfo(AudioUnitPropertyID inID,
70 AudioUnitScope inScope,
71 AudioUnitElement inElement,
73 Boolean & outWritable)
75 ComponentResult result;
77 result = AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
79 if (result == kAudioUnitErr_InvalidProperty)
80 result = AUMIDIBase::DelegateGetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
85 ComponentResult AUMIDIEffectBase::GetProperty( AudioUnitPropertyID inID,
86 AudioUnitScope inScope,
87 AudioUnitElement inElement,
90 ComponentResult result;
92 if (inID == kAudioUnitProperty_FastDispatch) {
93 if (inElement == kMusicDeviceMIDIEventSelect) {
94 *(TEMP_MusicDeviceMIDIEventProc *)outData = AUMIDIEffectBaseMIDIEvent;
97 return kAudioUnitErr_InvalidElement;
100 result = AUEffectBase::GetProperty (inID, inScope, inElement, outData);
102 if (result == kAudioUnitErr_InvalidProperty)
103 result = AUMIDIBase::DelegateGetProperty (inID, inScope, inElement, outData);
108 ComponentResult AUMIDIEffectBase::SetProperty( AudioUnitPropertyID inID,
109 AudioUnitScope inScope,
110 AudioUnitElement inElement,
115 ComponentResult result = AUEffectBase::SetProperty (inID, inScope, inElement, inData, inDataSize);
117 if (result == kAudioUnitErr_InvalidProperty)
118 result = AUMIDIBase::DelegateSetProperty (inID, inScope, inElement, inData, inDataSize);
124 ComponentResult AUMIDIEffectBase::ComponentEntryDispatch(ComponentParameters * params,
125 AUMIDIEffectBase * This)
127 if (This == NULL)
return paramErr;
129 ComponentResult result;
131 switch (params->what) {
132 case kMusicDeviceMIDIEventSelect:
133 case kMusicDeviceSysExSelect:
134 result = AUMIDIBase::ComponentEntryDispatch (params, This);
137 result = AUEffectBase::ComponentEntryDispatch(params, This);
145 static ComponentResult AUMIDIEffectBaseMIDIEvent(
void * inComponentStorage,
149 UInt32 inOffsetSampleFrame)
151 ComponentResult result = noErr;
153 AUMIDIEffectBase *This =
static_cast<AUMIDIEffectBase *
>(inComponentStorage);
154 if (This == NULL)
return paramErr;
155 result = This->MIDIEvent(inStatus, inData1, inData2, inOffsetSampleFrame);