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.

99 lines
3.5KB

  1. //------------------------------------------------------------------------
  2. // Project : VST SDK
  3. // Version : 3.6.7
  4. //
  5. // Category : Interfaces
  6. // Filename : pluginterfaces/vst/ivsthostapplication.h
  7. // Created by : Steinberg, 04/2006
  8. // Description : VST Host Interface
  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/vst/ivstmessage.h"
  19. //------------------------------------------------------------------------
  20. namespace Steinberg {
  21. namespace Vst {
  22. //------------------------------------------------------------------------
  23. /** Basic Host Callback Interface.
  24. \ingroup vstIHost vst300
  25. - [host imp]
  26. - [passed as 'context' in to IPluginBase::initialize () ]
  27. Basic VST host application interface. */
  28. //------------------------------------------------------------------------
  29. class IHostApplication: public FUnknown
  30. {
  31. public:
  32. //------------------------------------------------------------------------
  33. /** Gets host application name. */
  34. virtual tresult PLUGIN_API getName (String128 name) = 0;
  35. /** Creates host object (e.g. Vst::IMessage). */
  36. virtual tresult PLUGIN_API createInstance (TUID cid, TUID _iid, void** obj) = 0;
  37. //------------------------------------------------------------------------
  38. static const FUID iid;
  39. };
  40. DECLARE_CLASS_IID (IHostApplication, 0x58E595CC, 0xDB2D4969, 0x8B6AAF8C, 0x36A664E5)
  41. //------------------------------------------------------------------------
  42. inline IMessage* allocateMessage (IHostApplication* host)
  43. {
  44. TUID iid;
  45. IMessage::iid.toTUID (iid);
  46. IMessage* m = 0;
  47. if (host->createInstance (iid, iid, (void**)&m) == kResultOk)
  48. return m;
  49. return 0;
  50. }
  51. //------------------------------------------------------------------------
  52. /** VST 3 to VST 2 Wrapper Interface.
  53. \ingroup vstIHost vst310
  54. - [host imp]
  55. - [passed as 'context' to IPluginBase::initialize () ]
  56. Informs the Plug-in that a VST 3 to VST 2 wrapper is used between the Plug-in and the real host.
  57. Implemented by the VST 2 Wrapper. */
  58. //------------------------------------------------------------------------
  59. class IVst3ToVst2Wrapper: public FUnknown
  60. {
  61. public:
  62. //------------------------------------------------------------------------
  63. static const FUID iid;
  64. };
  65. DECLARE_CLASS_IID (IVst3ToVst2Wrapper, 0x29633AEC, 0x1D1C47E2, 0xBB85B97B, 0xD36EAC61)
  66. //------------------------------------------------------------------------
  67. /** VST 3 to AU Wrapper Interface.
  68. \ingroup vstIHost vst310
  69. - [host imp]
  70. - [passed as 'context' to IPluginBase::initialize () ]
  71. Informs the Plug-in that a VST 3 to AU wrapper is used between the Plug-in and the real host.
  72. Implemented by the AU Wrapper. */
  73. //------------------------------------------------------------------------
  74. class IVst3ToAUWrapper: public FUnknown
  75. {
  76. public:
  77. //------------------------------------------------------------------------
  78. static const FUID iid;
  79. };
  80. DECLARE_CLASS_IID (IVst3ToAUWrapper, 0xA3B8C6C5, 0xC0954688, 0xB0916F0B, 0xB697AA44)
  81. //------------------------------------------------------------------------
  82. } // namespace Vst
  83. } // namespace Steinberg