The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.1KB

  1. /*!
  2. @file AudioUnitSDK/MusicDeviceBase.h
  3. @copyright © 2000-2021 Apple Inc. All rights reserved.
  4. */
  5. #ifndef AudioUnitSDK_MusicDeviceBase_h
  6. #define AudioUnitSDK_MusicDeviceBase_h
  7. #include <AudioUnitSDK/AUMIDIBase.h>
  8. namespace ausdk {
  9. // ________________________________________________________________________
  10. // MusicDeviceBase
  11. //
  12. /*!
  13. @class MusicDeviceBase
  14. @brief Deriving from AUBase and AUMIDIBase, an abstract base class for Music Device
  15. subclasses.
  16. */
  17. class MusicDeviceBase : public AUBase, public AUMIDIBase {
  18. public:
  19. MusicDeviceBase(AudioComponentInstance inInstance, UInt32 numInputs, UInt32 numOutputs,
  20. UInt32 numGroups = 0);
  21. OSStatus MIDIEvent(
  22. UInt32 inStatus, UInt32 inData1, UInt32 inData2, UInt32 inOffsetSampleFrame) override
  23. {
  24. return AUMIDIBase::MIDIEvent(inStatus, inData1, inData2, inOffsetSampleFrame);
  25. }
  26. OSStatus SysEx(const UInt8* inData, UInt32 inLength) override
  27. {
  28. return AUMIDIBase::SysEx(inData, inLength);
  29. }
  30. #if AUSDK_MIDI2_AVAILABLE
  31. OSStatus MIDIEventList(
  32. UInt32 inOffsetSampleFrame, const struct MIDIEventList* eventList) override
  33. {
  34. return AUMIDIBase::MIDIEventList(inOffsetSampleFrame, eventList);
  35. }
  36. #endif
  37. OSStatus GetPropertyInfo(AudioUnitPropertyID inID, AudioUnitScope inScope,
  38. AudioUnitElement inElement, UInt32& outDataSize, bool& outWritable) override;
  39. OSStatus GetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope,
  40. AudioUnitElement inElement, void* outData) override;
  41. OSStatus SetProperty(AudioUnitPropertyID inID, AudioUnitScope inScope,
  42. AudioUnitElement inElement, const void* inData, UInt32 inDataSize) override;
  43. OSStatus HandleNoteOn(
  44. UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame) override;
  45. OSStatus HandleNoteOff(
  46. UInt8 inChannel, UInt8 inNoteNumber, UInt8 inVelocity, UInt32 inStartFrame) override;
  47. virtual OSStatus GetInstrumentCount(UInt32& outInstCount) const;
  48. private:
  49. OSStatus HandleStartNoteMessage(MusicDeviceInstrumentID inInstrument,
  50. MusicDeviceGroupID inGroupID, NoteInstanceID* outNoteInstanceID, UInt32 inOffsetSampleFrame,
  51. const MusicDeviceNoteParams* inParams);
  52. };
  53. } // namespace ausdk
  54. #endif // AudioUnitSDK_MusicDeviceBase_h