|
- /*!
- @file AudioUnitSDK/MusicDeviceBase.h
- @copyright © 2000-2021 Apple Inc. All rights reserved.
- */
- #ifndef AudioUnitSDK_MusicDeviceBase_h
- #define AudioUnitSDK_MusicDeviceBase_h
-
- #include <AudioUnitSDK/AUMIDIBase.h>
-
- 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
|