External plugins for 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.

395 lines
14KB

  1. /*
  2. * Carla Native Plugins
  3. * Copyright (C) 2012-2018 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 "CarlaMIDI.h"
  19. #include "CarlaUtils.hpp"
  20. #ifndef CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY
  21. # define DESCFUNCS_WITHCV \
  22. nullptr, nullptr, nullptr, nullptr, nullptr, \
  23. nullptr, nullptr, nullptr, nullptr, nullptr, \
  24. nullptr, nullptr, nullptr, nullptr, nullptr, \
  25. nullptr, nullptr, nullptr, nullptr, nullptr, \
  26. nullptr, nullptr
  27. # define DESCFUNCS_WITHOUTCV \
  28. DESCFUNCS_WITHCV, 0, 0
  29. static const NativePluginDescriptor sNativePluginDescriptors[] = {
  30. #endif
  31. // --------------------------------------------------------------------------------------------------------------------
  32. // DISTRHO Plugins
  33. {
  34. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  35. #ifdef HAVE_DGL
  36. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  37. |NATIVE_PLUGIN_HAS_UI
  38. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  39. |NATIVE_PLUGIN_USES_PARENT_ID),
  40. #else
  41. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  42. #endif
  43. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  44. /* audioIns */ 2,
  45. /* audioOuts */ 2,
  46. /* midiIns */ 0,
  47. /* midiOuts */ 0,
  48. /* paramIns */ 6,
  49. /* paramOuts */ 0,
  50. /* name */ "3 Band EQ",
  51. /* label */ "3bandeq",
  52. /* maker */ "falkTX, Michael Gruhn",
  53. /* copyright */ "LGPL",
  54. DESCFUNCS_WITHOUTCV
  55. },
  56. {
  57. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  58. #ifdef HAVE_DGL
  59. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  60. |NATIVE_PLUGIN_HAS_UI
  61. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  62. |NATIVE_PLUGIN_USES_PARENT_ID),
  63. #else
  64. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  65. #endif
  66. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  67. /* audioIns */ 2,
  68. /* audioOuts */ 6,
  69. /* midiIns */ 0,
  70. /* midiOuts */ 0,
  71. /* paramIns */ 6,
  72. /* paramOuts */ 0,
  73. /* name */ "3 Band Splitter",
  74. /* label */ "3bandsplitter",
  75. /* maker */ "falkTX, Michael Gruhn",
  76. /* copyright */ "LGPL",
  77. DESCFUNCS_WITHOUTCV
  78. },
  79. {
  80. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  81. #ifdef HAVE_DGL
  82. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  83. |NATIVE_PLUGIN_IS_SYNTH
  84. |NATIVE_PLUGIN_HAS_UI
  85. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  86. |NATIVE_PLUGIN_USES_PARENT_ID),
  87. #else
  88. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  89. |NATIVE_PLUGIN_IS_SYNTH),
  90. #endif
  91. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  92. /* audioIns */ 0,
  93. /* audioOuts */ 1,
  94. /* midiIns */ 1,
  95. /* midiOuts */ 0,
  96. /* paramIns */ 1,
  97. /* paramOuts */ 0,
  98. /* name */ "Kars",
  99. /* label */ "kars",
  100. /* maker */ "falkTX, Chris Cannam",
  101. /* copyright */ "ISC",
  102. DESCFUNCS_WITHOUTCV
  103. },
  104. {
  105. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  106. #ifdef HAVE_DGL
  107. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  108. |NATIVE_PLUGIN_IS_SYNTH
  109. |NATIVE_PLUGIN_HAS_UI
  110. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  111. |NATIVE_PLUGIN_USES_PARENT_ID),
  112. #else
  113. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  114. |NATIVE_PLUGIN_IS_SYNTH),
  115. #endif
  116. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  117. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  118. /* audioIns */ 0,
  119. /* audioOuts */ 1,
  120. /* midiIns */ 1,
  121. /* midiOuts */ 0,
  122. /* paramIns */ 8,
  123. /* paramOuts */ 0,
  124. /* name */ "Nekobi",
  125. /* label */ "nekobi",
  126. /* maker */ "falkTX, Sean Bolton and others",
  127. /* copyright */ "GPL v2+",
  128. DESCFUNCS_WITHOUTCV
  129. },
  130. {
  131. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  132. #ifdef HAVE_DGL
  133. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  134. |NATIVE_PLUGIN_HAS_UI
  135. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  136. |NATIVE_PLUGIN_USES_PARENT_ID),
  137. #else
  138. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  139. #endif
  140. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  141. /* audioIns */ 2,
  142. /* audioOuts */ 2,
  143. /* midiIns */ 0,
  144. /* midiOuts */ 0,
  145. /* paramIns */ 2,
  146. /* paramOuts */ 0,
  147. /* name */ "Ping Pong Pan",
  148. /* label */ "pingpongpan",
  149. /* maker */ "falkTX, Michael Gruhn",
  150. /* copyright */ "LGPL",
  151. DESCFUNCS_WITHOUTCV
  152. },
  153. #ifdef HAVE_DGL
  154. #ifdef HAVE_PROJECTM
  155. {
  156. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  157. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  158. |NATIVE_PLUGIN_HAS_UI
  159. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  160. |NATIVE_PLUGIN_USES_PARENT_ID),
  161. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  162. /* audioIns */ 1,
  163. /* audioOuts */ 1,
  164. /* midiIns */ 0,
  165. /* midiOuts */ 0,
  166. /* paramIns */ 0,
  167. /* paramOuts */ 0,
  168. /* name */ "ProM",
  169. /* label */ "prom",
  170. /* maker */ "falkTX",
  171. /* copyright */ "LGPL",
  172. DESCFUNCS_WITHOUTCV
  173. },
  174. #endif // HAVE_PROJECTM
  175. #endif // HAVE_DGL
  176. // --------------------------------------------------------------------------------------------------------------------
  177. // DISTRHO plugins (Juice)
  178. {
  179. /* category */ NATIVE_PLUGIN_CATEGORY_DYNAMICS,
  180. #ifdef HAVE_DGL
  181. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  182. |NATIVE_PLUGIN_HAS_UI
  183. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  184. |NATIVE_PLUGIN_USES_PARENT_ID
  185. |NATIVE_PLUGIN_USES_TIME),
  186. #else
  187. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  188. |NATIVE_PLUGIN_USES_TIME),
  189. #endif
  190. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  191. /* audioIns */ 2,
  192. /* audioOuts */ 2,
  193. /* midiIns */ 0,
  194. /* midiOuts */ 0,
  195. /* paramIns */ 6,
  196. /* paramOuts */ 0,
  197. /* name */ "WobbleJuice",
  198. /* label */ "wobblejuice",
  199. /* maker */ "Andre Sklenar",
  200. /* copyright */ "GPL v2+",
  201. DESCFUNCS_WITHOUTCV
  202. },
  203. {
  204. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  205. #ifdef HAVE_DGL
  206. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  207. |NATIVE_PLUGIN_HAS_UI
  208. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  209. |NATIVE_PLUGIN_USES_PARENT_ID
  210. |NATIVE_PLUGIN_USES_TIME),
  211. #else
  212. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  213. |NATIVE_PLUGIN_USES_TIME),
  214. #endif
  215. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  216. /* audioIns */ 8,
  217. /* audioOuts */ 2,
  218. /* midiIns */ 0,
  219. /* midiOuts */ 0,
  220. /* paramIns */ 13,
  221. /* paramOuts */ 4,
  222. /* name */ "VectorJuice",
  223. /* label */ "vectorjuice",
  224. /* maker */ "Andre Sklenar",
  225. /* copyright */ "GPL v2+",
  226. DESCFUNCS_WITHOUTCV
  227. },
  228. // --------------------------------------------------------------------------------------------------------------------
  229. // ZynAddSubFX
  230. #ifdef HAVE_ZYN_DEPS
  231. {
  232. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  233. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  234. |NATIVE_PLUGIN_USES_PANNING
  235. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  236. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  237. /* audioIns */ 2,
  238. /* audioOuts */ 2,
  239. /* midiIns */ 0,
  240. /* midiOuts */ 0,
  241. /* paramIns */ 11-2,
  242. /* paramOuts */ 0,
  243. /* name */ "ZynAlienWah",
  244. /* label */ "zynalienwah",
  245. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  246. /* copyright */ "GNU GPL v2+",
  247. DESCFUNCS_WITHOUTCV
  248. },
  249. {
  250. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  251. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  252. |NATIVE_PLUGIN_USES_PANNING
  253. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  254. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  255. /* audioIns */ 2,
  256. /* audioOuts */ 2,
  257. /* midiIns */ 0,
  258. /* midiOuts */ 0,
  259. /* paramIns */ 12-2,
  260. /* paramOuts */ 0,
  261. /* name */ "ZynChorus",
  262. /* label */ "zynchorus",
  263. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  264. /* copyright */ "GNU GPL v2+",
  265. DESCFUNCS_WITHOUTCV
  266. },
  267. {
  268. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  269. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  270. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  271. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  272. /* audioIns */ 2,
  273. /* audioOuts */ 2,
  274. /* midiIns */ 0,
  275. /* midiOuts */ 0,
  276. /* paramIns */ 11-2,
  277. /* paramOuts */ 0,
  278. /* name */ "ZynDistortion",
  279. /* label */ "zyndistortion",
  280. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  281. /* copyright */ "GNU GPL v2+",
  282. DESCFUNCS_WITHOUTCV
  283. },
  284. {
  285. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  286. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  287. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  288. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  289. /* audioIns */ 2,
  290. /* audioOuts */ 2,
  291. /* midiIns */ 0,
  292. /* midiOuts */ 0,
  293. /* paramIns */ 10-2,
  294. /* paramOuts */ 0,
  295. /* name */ "ZynDynamicFilter",
  296. /* label */ "zyndynamicfilter",
  297. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  298. /* copyright */ "GNU GPL v2+",
  299. DESCFUNCS_WITHOUTCV
  300. },
  301. {
  302. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  303. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  304. |NATIVE_PLUGIN_USES_PANNING
  305. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  306. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  307. /* audioIns */ 2,
  308. /* audioOuts */ 2,
  309. /* midiIns */ 0,
  310. /* midiOuts */ 0,
  311. /* paramIns */ 7-2,
  312. /* paramOuts */ 0,
  313. /* name */ "ZynEcho",
  314. /* label */ "zynecho",
  315. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  316. /* copyright */ "GNU GPL v2+",
  317. DESCFUNCS_WITHOUTCV
  318. },
  319. {
  320. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  321. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  322. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  323. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  324. /* audioIns */ 2,
  325. /* audioOuts */ 2,
  326. /* midiIns */ 0,
  327. /* midiOuts */ 0,
  328. /* paramIns */ 15-2,
  329. /* paramOuts */ 0,
  330. /* name */ "ZynPhaser",
  331. /* label */ "zynphaser",
  332. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  333. /* copyright */ "GNU GPL v2+",
  334. DESCFUNCS_WITHOUTCV
  335. },
  336. {
  337. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  338. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  339. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  340. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  341. /* audioIns */ 2,
  342. /* audioOuts */ 2,
  343. /* midiIns */ 0,
  344. /* midiOuts */ 0,
  345. /* paramIns */ 13-2,
  346. /* paramOuts */ 0,
  347. /* name */ "ZynReverb",
  348. /* label */ "zynreverb",
  349. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  350. /* copyright */ "GNU GPL v2+",
  351. DESCFUNCS_WITHOUTCV
  352. },
  353. # ifndef SKIP_ZYN_SYNTH
  354. {
  355. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  356. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  357. # ifdef HAVE_ZYN_UI_DEPS
  358. |NATIVE_PLUGIN_HAS_UI
  359. # endif
  360. |NATIVE_PLUGIN_USES_MULTI_PROGS
  361. |NATIVE_PLUGIN_USES_STATE),
  362. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  363. |NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH
  364. |NATIVE_PLUGIN_SUPPORTS_PITCHBEND
  365. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  366. /* audioIns */ 0,
  367. /* audioOuts */ 2,
  368. /* midiIns */ 1,
  369. /* midiOuts */ 0,
  370. /* paramIns */ 6,
  371. /* paramOuts */ 0,
  372. /* name */ "ZynAddSubFX",
  373. /* label */ "zynaddsubfx",
  374. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  375. /* copyright */ "GNU GPL v2+",
  376. DESCFUNCS_WITHOUTCV
  377. },
  378. # endif // ! SKIP_ZYN_SYNTH
  379. #endif // HAVE_ZYN_DEPS
  380. // --------------------------------------------------------------------------------------------------------------------
  381. #ifndef CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY
  382. }
  383. #endif