/*! @file AudioUnitSDK/MusicDeviceBase.h @copyright © 2000-2021 Apple Inc. All rights reserved. */ #ifndef AudioUnitSDK_MusicDeviceBase_h #define AudioUnitSDK_MusicDeviceBase_h #include namespace ausdk { // ________________________________________________________________________ // MusicDeviceBase // /*! @class MusicDeviceBase @brief Deriving from AUBase and AUMIDIBase, an abstract base class for Music Device subclasses. */ class MusicDeviceBase : public AUBase, public AUMIDIBase { public: MusicDeviceBase(AudioComponentInstance inInstance, UInt32 numInputs, UInt32 numOutputs, UInt32 numGroups = 0); OSStatus MIDIEvent( UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame) override { return AUMIDIBase::MIDIEvent(inStatus, inData1, inData2, inOffsetSampleFrame); } OSStatus SysEx(const UInt8* inData, UInt32 inLength) override { return AUMIDIBase::SysEx(inData, inLength); } #if AUSDK_MIDI2_AVAILABLE OSStatus MIDIEventList( UInt32 inOffsetSampleFrame, const struct MIDIEventList* eventList) override { return AUMIDIBase::MIDIEventList(inOffsetSampleFrame, eventList); } #endif OSStatus GetPropertyInfo(AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32& outDataSize, bool& outWritable) override; OSStatus GetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void* outData) override; OSStatus SetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, const void* inData, UInt32 inDataSize) override; OSStatus HandleNoteOn( UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame) override; OSStatus HandleNoteOff( UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame) override; virtual OSStatus GetInstrumentCount(UInt32& outInstCount) const; private: OSStatus HandleStartNoteMessage(MusicDeviceInstrumentID inInstrument, MusicDeviceGroupID inGroupID, NoteInstanceID* outNoteInstanceID, UInt32 inOffsetSampleFrame, const MusicDeviceNoteParams* inParams); }; } // namespace ausdk #endif // AudioUnitSDK_MusicDeviceBase_h