1 /* 2 Copyright (C) 2016 Apple Inc. All Rights Reserved. 3 See LICENSE.txt for this sample’s licensing information 4 5 Abstract: 6 Part of Core Audio AUBase Classes 7 */ 8 9 #ifndef __MusicDeviceBase_h__ 10 #define __MusicDeviceBase_h__ 11 12 #include "AUMIDIBase.h" 13 14 // ________________________________________________________________________ 15 // MusicDeviceBase 16 // 17 18 /*! @class MusicDeviceBase */ 19 class MusicDeviceBase : public AUBase, public AUMIDIBase { 20 public: 21 /*! @ctor MusicDeviceBase */ 22 MusicDeviceBase( AudioComponentInstance inInstance, 23 UInt32 numInputs, 24 UInt32 numOutputs, 25 UInt32 numGroups = 0); 26 27 MIDIEvent(UInt32 inStatus,UInt32 inData1,UInt32 inData2,UInt32 inOffsetSampleFrame)28 virtual OSStatus MIDIEvent( UInt32 inStatus, 29 UInt32 inData1, 30 UInt32 inData2, 31 UInt32 inOffsetSampleFrame) 32 { 33 return AUMIDIBase::MIDIEvent (inStatus, inData1, inData2, inOffsetSampleFrame); 34 } 35 36 /*! @method SysEx */ SysEx(const UInt8 * inData,UInt32 inLength)37 virtual OSStatus SysEx( const UInt8 * inData, 38 UInt32 inLength) 39 { 40 return AUMIDIBase::SysEx (inData, inLength); 41 } 42 43 /*! @method GetPropertyInfo */ 44 virtual OSStatus GetPropertyInfo(AudioUnitPropertyID inID, 45 AudioUnitScope inScope, 46 AudioUnitElement inElement, 47 UInt32 & outDataSize, 48 Boolean & outWritable); 49 50 /*! @method GetProperty */ 51 virtual OSStatus GetProperty( AudioUnitPropertyID inID, 52 AudioUnitScope inScope, 53 AudioUnitElement inElement, 54 void * outData); 55 56 /*! @method SetProperty */ 57 virtual OSStatus SetProperty( AudioUnitPropertyID inID, 58 AudioUnitScope inScope, 59 AudioUnitElement inElement, 60 const void * inData, 61 UInt32 inDataSize); 62 63 /*! @method HandleNoteOn */ 64 virtual OSStatus HandleNoteOn( UInt8 inChannel, 65 UInt8 inNoteNumber, 66 UInt8 inVelocity, 67 UInt32 inStartFrame); 68 69 /*! @method HandleNoteOff */ 70 virtual OSStatus HandleNoteOff( UInt8 inChannel, 71 UInt8 inNoteNumber, 72 UInt8 inVelocity, 73 UInt32 inStartFrame); 74 75 /*! @method GetInstrumentCount */ 76 virtual OSStatus GetInstrumentCount ( UInt32 &outInstCount) const; 77 78 #if !CA_USE_AUDIO_PLUGIN_ONLY 79 // component dispatcher 80 /*! @method ComponentEntryDispatch */ 81 static OSStatus ComponentEntryDispatch( ComponentParameters * params, 82 MusicDeviceBase * This); 83 #endif 84 private: 85 OSStatus HandleStartNoteMessage (MusicDeviceInstrumentID inInstrument, MusicDeviceGroupID inGroupID, NoteInstanceID *outNoteInstanceID, UInt32 inOffsetSampleFrame, const MusicDeviceNoteParams *inParams); 86 }; 87 88 #endif // __MusicDeviceBase_h__ 89