Audio plugin host https://kx.studio/carla
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.

145 lines
4.9KB

  1. //------------------------------------------------------------------------
  2. // Project : VST SDK
  3. // Version : 3.6.7
  4. //
  5. // Category : Interfaces
  6. // Filename : pluginterfaces/vst/ivstinterappaudio.h
  7. // Created by : Steinberg, 08/2013
  8. // Description : VST InterAppAudio Interfaces
  9. //
  10. //-----------------------------------------------------------------------------
  11. // This file is part of a Steinberg SDK. It is subject to the license terms
  12. // in the LICENSE file found in the top-level directory of this distribution
  13. // and at www.steinberg.net/sdklicenses.
  14. // No part of the SDK, including this file, may be copied, modified, propagated,
  15. // or distributed except according to the terms contained in the LICENSE file.
  16. //-----------------------------------------------------------------------------
  17. #pragma once
  18. #include "pluginterfaces/base/funknown.h"
  19. //------------------------------------------------------------------------
  20. namespace Steinberg {
  21. struct ViewRect;
  22. namespace Vst {
  23. struct Event;
  24. class IInterAppAudioPresetManager;
  25. //------------------------------------------------------------------------
  26. /** Inter-App Audio host Interface.
  27. \ingroup vstIHost vst360
  28. - [host imp]
  29. - [passed as 'context' to IPluginBase::initialize () ]
  30. - [released: 3.6.0]
  31. Implemented by the InterAppAudio Wrapper. */
  32. //------------------------------------------------------------------------
  33. class IInterAppAudioHost: public FUnknown
  34. {
  35. public:
  36. /** get the size of the screen
  37. * @param size size of the screen
  38. * @param scale scale of the screen
  39. * @return kResultTrue on success
  40. */
  41. virtual tresult PLUGIN_API getScreenSize (ViewRect* size, float* scale) = 0;
  42. /** get status of connection
  43. * @return kResultTrue if an Inter-App Audio connection is established
  44. */
  45. virtual tresult PLUGIN_API connectedToHost () = 0;
  46. /** switch to the host.
  47. * @return kResultTrue on success
  48. */
  49. virtual tresult PLUGIN_API switchToHost () = 0;
  50. /** send a remote control event to the host
  51. * @param event event type, see AudioUnitRemoteControlEvent in the iOS SDK documentation for possible types
  52. * @return kResultTrue on success
  53. */
  54. virtual tresult PLUGIN_API sendRemoteControlEvent (uint32 event) = 0;
  55. /** ask for the host icon.
  56. * @param icon pointer to a CGImageRef
  57. * @return kResultTrue on success
  58. */
  59. virtual tresult PLUGIN_API getHostIcon (void** icon) = 0;
  60. /** schedule an event from the user interface thread
  61. * @param event the event to schedule
  62. * @return kResultTrue on success
  63. */
  64. virtual tresult PLUGIN_API scheduleEventFromUI (Event& event) = 0;
  65. /** get the preset manager
  66. * @param cid class ID to use by the preset manager
  67. * @return the preset manager. Needs to be released by called.
  68. */
  69. virtual IInterAppAudioPresetManager* PLUGIN_API createPresetManager (const TUID& cid) = 0;
  70. /** show the settings view
  71. * currently includes MIDI settings and Tempo setting
  72. * @return kResultTrue on success
  73. */
  74. virtual tresult PLUGIN_API showSettingsView () = 0;
  75. //------------------------------------------------------------------------
  76. static const FUID iid;
  77. };
  78. DECLARE_CLASS_IID (IInterAppAudioHost, 0x0CE5743D, 0x68DF415E, 0xAE285BD4, 0xE2CDC8FD)
  79. //------------------------------------------------------------------------
  80. /** Extended Plug-in interface IEditController for Inter-App Audio connection state change notifications
  81. \ingroup vstIPlug vst360
  82. - [plug imp]
  83. - [extends IEditController]
  84. - [released: 3.6.0]
  85. */
  86. //------------------------------------------------------------------------
  87. class IInterAppAudioConnectionNotification : public FUnknown
  88. {
  89. public:
  90. /** called when the Inter-App Audio connection state changes
  91. * @param newState true if an Inter-App Audio connection is established, otherwise false
  92. */
  93. virtual void PLUGIN_API onInterAppAudioConnectionStateChange (TBool newState) = 0;
  94. //------------------------------------------------------------------------
  95. static const FUID iid;
  96. };
  97. DECLARE_CLASS_IID (IInterAppAudioConnectionNotification, 0x6020C72D, 0x5FC24AA1, 0xB0950DB5, 0xD7D6D5CF)
  98. //------------------------------------------------------------------------
  99. /** Extended Plug-in interface IEditController for Inter-App Audio Preset Management
  100. \ingroup vstIPlug vst360
  101. - [plug imp]
  102. - [extends IEditController]
  103. - [released: 3.6.0]
  104. */
  105. //------------------------------------------------------------------------
  106. class IInterAppAudioPresetManager : public FUnknown
  107. {
  108. public:
  109. /** TODO */
  110. virtual tresult PLUGIN_API runLoadPresetBrowser () = 0;
  111. /** TODO */
  112. virtual tresult PLUGIN_API runSavePresetBrowser () = 0;
  113. /** TODO */
  114. virtual tresult PLUGIN_API loadNextPreset () = 0;
  115. /** TODO */
  116. virtual tresult PLUGIN_API loadPreviousPreset () = 0;
  117. //------------------------------------------------------------------------
  118. static const FUID iid;
  119. };
  120. DECLARE_CLASS_IID (IInterAppAudioPresetManager, 0xADE6FCC4, 0x46C94E1D, 0xB3B49A80, 0xC93FEFDD)
  121. //------------------------------------------------------------------------
  122. } // namespace Vst
  123. } // namespace Steinberg