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.

141 lines
3.9KB

  1. /*
  2. * Carla Native Plugins
  3. * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. #include "CarlaNative.h"
  18. #include "RtList.hpp"
  19. #include "lv2/lv2.h"
  20. // -----------------------------------------------------------------------
  21. // Plugin register calls
  22. extern "C" {
  23. // Simple plugins
  24. void carla_register_native_plugin_bypass();
  25. void carla_register_native_plugin_lfo();
  26. //void carla_register_native_plugin_midiSequencer();
  27. void carla_register_native_plugin_midiSplit();
  28. void carla_register_native_plugin_midiThrough();
  29. void carla_register_native_plugin_midiTranspose();
  30. void carla_register_native_plugin_nekofilter();
  31. //void carla_register_native_plugin_sunvoxfile();
  32. // Carla
  33. //void carla_register_native_plugin_carla();
  34. #ifdef WANT_AUDIOFILE
  35. // AudioFile
  36. void carla_register_native_plugin_audiofile();
  37. #endif
  38. #ifdef WANT_MIDIFILE
  39. // MidiFile
  40. void carla_register_native_plugin_midifile();
  41. #endif
  42. #ifdef WANT_OPENGL
  43. // DISTRHO plugins (OpenGL)
  44. void carla_register_native_plugin_3BandEQ();
  45. void carla_register_native_plugin_3BandSplitter();
  46. void carla_register_native_plugin_Nekobi();
  47. void carla_register_native_plugin_PingPongPan();
  48. void carla_register_native_plugin_StereoEnhancer();
  49. #endif
  50. // DISTRHO plugins (Qt)
  51. void carla_register_native_plugin_Notes();
  52. #ifdef WANT_ZYNADDSUBFX
  53. // ZynAddSubFX
  54. void carla_register_native_plugin_zynaddsubfx();
  55. #endif
  56. }
  57. // -----------------------------------------------------------------------
  58. // Plugin List
  59. struct PluginListManager {
  60. PluginListManager()
  61. {
  62. // Simple plugins
  63. carla_register_native_plugin_bypass();
  64. carla_register_native_plugin_lfo();
  65. //carla_register_native_plugin_midiSequencer(); // unfinished
  66. carla_register_native_plugin_midiSplit();
  67. carla_register_native_plugin_midiThrough();
  68. carla_register_native_plugin_midiTranspose();
  69. carla_register_native_plugin_nekofilter();
  70. //carla_register_native_plugin_sunvoxfile(); // unfinished
  71. // Carla
  72. //carla_register_native_plugin_carla(); // kinda unfinished
  73. #ifdef WANT_AUDIOFILE
  74. // AudioFile
  75. carla_register_native_plugin_audiofile();
  76. #endif
  77. #ifdef WANT_MIDIFILE
  78. // MidiFile
  79. carla_register_native_plugin_midifile();
  80. #endif
  81. #ifdef WANT_OPENGL
  82. // DISTRHO plugins (OpenGL)
  83. carla_register_native_plugin_3BandEQ();
  84. carla_register_native_plugin_3BandSplitter();
  85. carla_register_native_plugin_Nekobi();
  86. carla_register_native_plugin_PingPongPan();
  87. carla_register_native_plugin_StereoEnhancer(); // unfinished
  88. #endif
  89. // DISTRHO plugins (Qt)
  90. carla_register_native_plugin_Notes(); // unfinished
  91. #ifdef WANT_ZYNADDSUBFX
  92. // ZynAddSubFX
  93. carla_register_native_plugin_zynaddsubfx();
  94. #endif
  95. }
  96. ~PluginListManager()
  97. {
  98. for (NonRtList<const LV2_Descriptor*>::Itenerator it = lv2Descs.begin(); it.valid(); it.next())
  99. {
  100. const LV2_Descriptor*& lv2Desc(*it);
  101. delete[] lv2Desc->URI;
  102. delete lv2Desc;
  103. }
  104. descs.clear();
  105. lv2Descs.clear();
  106. }
  107. NonRtList<const PluginDescriptor*> descs;
  108. NonRtList<const LV2_Descriptor*> lv2Descs;
  109. };
  110. static PluginListManager sPluginDescsMgr;
  111. void carla_register_native_plugin(const PluginDescriptor* desc)
  112. {
  113. sPluginDescsMgr.descs.append(desc);
  114. }
  115. // -----------------------------------------------------------------------