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.

_data.cpp 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. /*
  2. * Carla Native Plugins
  3. * Copyright (C) 2012-2015 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 "CarlaUtils.hpp"
  19. #undef DESCFUNCS
  20. #define DESCFUNCS \
  21. nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, \
  22. nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, \
  23. nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, \
  24. nullptr, nullptr, nullptr, nullptr
  25. static const NativePluginDescriptor sNativePluginDescriptors[] = {
  26. // -----------------------------------------------------------------------
  27. // Simple plugins
  28. {
  29. /* category */ NATIVE_PLUGIN_CATEGORY_NONE,
  30. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  31. /* supports */ static_cast<NativePluginSupports>(0x0),
  32. /* audioIns */ 1,
  33. /* audioOuts */ 1,
  34. /* midiIns */ 0,
  35. /* midiOuts */ 0,
  36. /* paramIns */ 0,
  37. /* paramOuts */ 0,
  38. /* name */ "Bypass",
  39. /* label */ "bypass",
  40. /* maker */ "falkTX",
  41. /* copyright */ "GNU GPL v2+",
  42. DESCFUNCS
  43. },
  44. {
  45. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  46. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  47. /* supports */ static_cast<NativePluginSupports>(0x0),
  48. /* audioIns */ 0,
  49. /* audioOuts */ 0,
  50. /* midiIns */ 0,
  51. /* midiOuts */ 0,
  52. /* paramIns */ 5-1,
  53. /* paramOuts */ 1,
  54. /* name */ "LFO",
  55. /* label */ "lfo",
  56. /* maker */ "falkTX",
  57. /* copyright */ "GNU GPL v2+",
  58. DESCFUNCS
  59. },
  60. {
  61. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  62. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  63. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  64. /* audioIns */ 0,
  65. /* audioOuts */ 0,
  66. /* midiIns */ 1,
  67. /* midiOuts */ 1,
  68. /* paramIns */ 0,
  69. /* paramOuts */ 0,
  70. /* name */ "MIDI Gain",
  71. /* label */ "midigain",
  72. /* maker */ "falkTX",
  73. /* copyright */ "GNU GPL v2+",
  74. DESCFUNCS
  75. },
  76. {
  77. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  78. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  79. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  80. /* audioIns */ 0,
  81. /* audioOuts */ 0,
  82. /* midiIns */ 1,
  83. /* midiOuts */ 16,
  84. /* paramIns */ 0,
  85. /* paramOuts */ 0,
  86. /* name */ "MIDI Split",
  87. /* label */ "midisplit",
  88. /* maker */ "falkTX",
  89. /* copyright */ "GNU GPL v2+",
  90. DESCFUNCS
  91. },
  92. {
  93. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  94. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  95. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  96. /* audioIns */ 0,
  97. /* audioOuts */ 0,
  98. /* midiIns */ 1,
  99. /* midiOuts */ 1,
  100. /* paramIns */ 0,
  101. /* paramOuts */ 0,
  102. /* name */ "MIDI Through",
  103. /* label */ "midithrough",
  104. /* maker */ "falkTX",
  105. /* copyright */ "GNU GPL v2+",
  106. DESCFUNCS
  107. },
  108. {
  109. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  110. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  111. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  112. /* audioIns */ 0,
  113. /* audioOuts */ 0,
  114. /* midiIns */ 1,
  115. /* midiOuts */ 1,
  116. /* paramIns */ 1,
  117. /* paramOuts */ 0,
  118. /* name */ "MIDI Transpose",
  119. /* label */ "miditranspose",
  120. /* maker */ "falkTX",
  121. /* copyright */ "GNU GPL v2+",
  122. DESCFUNCS
  123. },
  124. {
  125. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  126. #if defined(__linux__) || defined(__linux)
  127. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  128. |NATIVE_PLUGIN_HAS_UI),
  129. #else
  130. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  131. #endif
  132. /* supports */ static_cast<NativePluginSupports>(0x0),
  133. /* audioIns */ 1,
  134. /* audioOuts */ 1,
  135. /* midiIns */ 0,
  136. /* midiOuts */ 0,
  137. /* paramIns */ 2 + 4*4,
  138. /* paramOuts */ 0,
  139. /* name */ "NekoFilter",
  140. /* label */ "nekofilter",
  141. /* maker */ "falkTX, Nedko, Fons Adriaensen",
  142. /* copyright */ "GNU GPL v2+",
  143. DESCFUNCS
  144. },
  145. // -----------------------------------------------------------------------
  146. // Audio file
  147. {
  148. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  149. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_HAS_UI
  150. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE),
  151. /* supports */ static_cast<NativePluginSupports>(0x0),
  152. /* audioIns */ 0,
  153. /* audioOuts */ 2,
  154. /* midiIns */ 0,
  155. /* midiOuts */ 0,
  156. /* paramIns */ 1,
  157. /* paramOuts */ 0,
  158. /* name */ "Audio File",
  159. /* label */ "audiofile",
  160. /* maker */ "falkTX",
  161. /* copyright */ "GNU GPL v2+",
  162. DESCFUNCS
  163. },
  164. // -----------------------------------------------------------------------
  165. // MIDI file and sequencer
  166. {
  167. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  168. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  169. |NATIVE_PLUGIN_HAS_UI
  170. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
  171. |NATIVE_PLUGIN_USES_STATE
  172. |NATIVE_PLUGIN_USES_TIME),
  173. /* supports */ static_cast<NativePluginSupports>(0x0),
  174. /* audioIns */ 0,
  175. /* audioOuts */ 0,
  176. /* midiIns */ 0,
  177. /* midiOuts */ 1,
  178. /* paramIns */ 0,
  179. /* paramOuts */ 0,
  180. /* name */ "MIDI File",
  181. /* label */ "midifile",
  182. /* maker */ "falkTX",
  183. /* copyright */ "GNU GPL v2+",
  184. DESCFUNCS
  185. },
  186. #ifdef CARLA_OS_LINUX
  187. {
  188. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  189. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  190. |NATIVE_PLUGIN_HAS_UI
  191. |NATIVE_PLUGIN_USES_STATE
  192. |NATIVE_PLUGIN_USES_TIME),
  193. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  194. /* audioIns */ 0,
  195. /* audioOuts */ 0,
  196. /* midiIns */ 1,
  197. /* midiOuts */ 1,
  198. /* paramIns */ 0,
  199. /* paramOuts */ 0,
  200. /* name */ "MIDI Sequencer",
  201. /* label */ "midisequencer",
  202. /* maker */ "falkTX, tatch",
  203. /* copyright */ "GNU GPL v2+",
  204. DESCFUNCS
  205. },
  206. #endif
  207. // -----------------------------------------------------------------------
  208. // Carla
  209. #ifndef CARLA_OS_WIN
  210. {
  211. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  212. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  213. |NATIVE_PLUGIN_HAS_UI
  214. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  215. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  216. |NATIVE_PLUGIN_USES_STATE
  217. |NATIVE_PLUGIN_USES_TIME),
  218. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  219. /* audioIns */ 2,
  220. /* audioOuts */ 2,
  221. /* midiIns */ 1,
  222. /* midiOuts */ 1,
  223. /* paramIns */ 0,
  224. /* paramOuts */ 0,
  225. /* name */ "Carla-Rack",
  226. /* label */ "carlarack",
  227. /* maker */ "falkTX",
  228. /* copyright */ "GNU GPL v2+",
  229. DESCFUNCS
  230. },
  231. {
  232. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  233. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  234. |NATIVE_PLUGIN_HAS_UI
  235. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  236. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  237. |NATIVE_PLUGIN_USES_STATE
  238. |NATIVE_PLUGIN_USES_TIME),
  239. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  240. /* audioIns */ 2,
  241. /* audioOuts */ 2,
  242. /* midiIns */ 1,
  243. /* midiOuts */ 1,
  244. /* paramIns */ 0,
  245. /* paramOuts */ 0,
  246. /* name */ "Carla-Patchbay",
  247. /* label */ "carlapatchbay",
  248. /* maker */ "falkTX",
  249. /* copyright */ "GNU GPL v2+",
  250. DESCFUNCS
  251. },
  252. {
  253. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  254. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  255. |NATIVE_PLUGIN_HAS_UI
  256. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  257. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  258. |NATIVE_PLUGIN_USES_STATE
  259. |NATIVE_PLUGIN_USES_TIME),
  260. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  261. /* audioIns */ 3,
  262. /* audioOuts */ 2,
  263. /* midiIns */ 1,
  264. /* midiOuts */ 1,
  265. /* paramIns */ 0,
  266. /* paramOuts */ 0,
  267. /* name */ "Carla-Patchbay (sidechain)",
  268. /* label */ "carlapatchbay3s",
  269. /* maker */ "falkTX",
  270. /* copyright */ "GNU GPL v2+",
  271. DESCFUNCS
  272. },
  273. {
  274. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  275. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  276. |NATIVE_PLUGIN_HAS_UI
  277. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  278. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  279. |NATIVE_PLUGIN_USES_STATE
  280. |NATIVE_PLUGIN_USES_TIME),
  281. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  282. /* audioIns */ 16,
  283. /* audioOuts */ 16,
  284. /* midiIns */ 1,
  285. /* midiOuts */ 1,
  286. /* paramIns */ 0,
  287. /* paramOuts */ 0,
  288. /* name */ "Carla-Patchbay (16chan)",
  289. /* label */ "carlapatchbay16",
  290. /* maker */ "falkTX",
  291. /* copyright */ "GNU GPL v2+",
  292. DESCFUNCS
  293. },
  294. {
  295. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  296. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  297. |NATIVE_PLUGIN_HAS_UI
  298. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  299. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  300. |NATIVE_PLUGIN_USES_STATE
  301. |NATIVE_PLUGIN_USES_TIME),
  302. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  303. /* audioIns */ 32,
  304. /* audioOuts */ 32,
  305. /* midiIns */ 1,
  306. /* midiOuts */ 1,
  307. /* paramIns */ 0,
  308. /* paramOuts */ 0,
  309. /* name */ "Carla-Patchbay (32chan)",
  310. /* label */ "carlapatchbay32",
  311. /* maker */ "falkTX",
  312. /* copyright */ "GNU GPL v2+",
  313. DESCFUNCS
  314. },
  315. #endif // CARLA_OS_WIN
  316. // -----------------------------------------------------------------------
  317. // DISTRHO Plugins
  318. {
  319. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  320. #ifdef HAVE_DGL
  321. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  322. |NATIVE_PLUGIN_HAS_UI
  323. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  324. |NATIVE_PLUGIN_USES_PARENT_ID),
  325. #else
  326. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  327. #endif
  328. /* supports */ static_cast<NativePluginSupports>(0x0),
  329. /* audioIns */ 2,
  330. /* audioOuts */ 2,
  331. /* midiIns */ 0,
  332. /* midiOuts */ 0,
  333. /* paramIns */ 6,
  334. /* paramOuts */ 0,
  335. /* name */ "3 Band EQ",
  336. /* label */ "3bandeq",
  337. /* maker */ "falkTX, Michael Gruhn",
  338. /* copyright */ "LGPL",
  339. DESCFUNCS
  340. },
  341. {
  342. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  343. #ifdef HAVE_DGL
  344. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  345. |NATIVE_PLUGIN_HAS_UI
  346. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  347. |NATIVE_PLUGIN_USES_PARENT_ID),
  348. #else
  349. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  350. #endif
  351. /* supports */ static_cast<NativePluginSupports>(0x0),
  352. /* audioIns */ 2,
  353. /* audioOuts */ 6,
  354. /* midiIns */ 0,
  355. /* midiOuts */ 0,
  356. /* paramIns */ 6,
  357. /* paramOuts */ 0,
  358. /* name */ "3 Band Splitter",
  359. /* label */ "3bandsplitter",
  360. /* maker */ "falkTX, Michael Gruhn",
  361. /* copyright */ "LGPL",
  362. DESCFUNCS
  363. },
  364. {
  365. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  366. #if defined(HAVE_DGL) && ! defined(CARLA_OS_WIN)
  367. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  368. |NATIVE_PLUGIN_HAS_UI
  369. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  370. |NATIVE_PLUGIN_USES_PARENT_ID),
  371. #else
  372. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  373. #endif
  374. /* supports */ static_cast<NativePluginSupports>(0x0),
  375. /* audioIns */ 2,
  376. /* audioOuts */ 2,
  377. /* midiIns */ 0,
  378. /* midiOuts */ 0,
  379. /* paramIns */ 9,
  380. /* paramOuts */ 0,
  381. /* name */ "MVerb",
  382. /* label */ "mverb",
  383. /* maker */ "falkTX, Martin Eastwood",
  384. /* copyright */ "GPL v3+",
  385. DESCFUNCS
  386. },
  387. {
  388. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  389. #ifdef HAVE_DGL
  390. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  391. |NATIVE_PLUGIN_IS_SYNTH
  392. |NATIVE_PLUGIN_HAS_UI
  393. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  394. |NATIVE_PLUGIN_USES_PARENT_ID),
  395. #else
  396. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  397. |NATIVE_PLUGIN_IS_SYNTH),
  398. #endif
  399. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  400. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  401. /* audioIns */ 0,
  402. /* audioOuts */ 1,
  403. /* midiIns */ 1,
  404. /* midiOuts */ 0,
  405. /* paramIns */ 8,
  406. /* paramOuts */ 0,
  407. /* name */ "Nekobi",
  408. /* label */ "nekobi",
  409. /* maker */ "falkTX, Sean Bolton and others",
  410. /* copyright */ "GPL v2+",
  411. DESCFUNCS
  412. },
  413. {
  414. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  415. #ifdef HAVE_DGL
  416. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  417. |NATIVE_PLUGIN_HAS_UI
  418. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  419. |NATIVE_PLUGIN_USES_PARENT_ID),
  420. #else
  421. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  422. #endif
  423. /* supports */ static_cast<NativePluginSupports>(0x0),
  424. /* audioIns */ 2,
  425. /* audioOuts */ 2,
  426. /* midiIns */ 0,
  427. /* midiOuts */ 0,
  428. /* paramIns */ 2,
  429. /* paramOuts */ 0,
  430. /* name */ "Ping Pong Pan",
  431. /* label */ "pingpongpan",
  432. /* maker */ "falkTX, Michael Gruhn",
  433. /* copyright */ "LGPL",
  434. DESCFUNCS
  435. },
  436. #ifdef HAVE_DGL
  437. #ifdef HAVE_PROJECTM
  438. {
  439. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  440. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  441. |NATIVE_PLUGIN_HAS_UI
  442. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  443. |NATIVE_PLUGIN_USES_PARENT_ID),
  444. /* supports */ static_cast<NativePluginSupports>(0x0),
  445. /* audioIns */ 1,
  446. /* audioOuts */ 1,
  447. /* midiIns */ 0,
  448. /* midiOuts */ 0,
  449. /* paramIns */ 0,
  450. /* paramOuts */ 0,
  451. /* name */ "ProM",
  452. /* label */ "prom",
  453. /* maker */ "falkTX",
  454. /* copyright */ "LGPL",
  455. DESCFUNCS
  456. },
  457. #endif // HAVE_PROJECTM
  458. #endif // HAVE_DGL
  459. // -----------------------------------------------------------------------
  460. // DISTRHO plugins (Juice)
  461. {
  462. /* category */ NATIVE_PLUGIN_CATEGORY_DYNAMICS,
  463. #ifdef HAVE_DGL
  464. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  465. |NATIVE_PLUGIN_HAS_UI
  466. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  467. |NATIVE_PLUGIN_USES_PARENT_ID
  468. |NATIVE_PLUGIN_USES_TIME),
  469. #else
  470. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  471. |NATIVE_PLUGIN_USES_TIME),
  472. #endif
  473. /* supports */ static_cast<NativePluginSupports>(0x0),
  474. /* audioIns */ 2,
  475. /* audioOuts */ 2,
  476. /* midiIns */ 0,
  477. /* midiOuts */ 0,
  478. /* paramIns */ 6,
  479. /* paramOuts */ 0,
  480. /* name */ "WobbleJuice",
  481. /* label */ "wobblejuice",
  482. /* maker */ "Andre Sklenar",
  483. /* copyright */ "GPL v2+",
  484. DESCFUNCS
  485. },
  486. {
  487. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  488. #ifdef HAVE_DGL
  489. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  490. |NATIVE_PLUGIN_HAS_UI
  491. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  492. |NATIVE_PLUGIN_USES_PARENT_ID
  493. |NATIVE_PLUGIN_USES_TIME),
  494. #else
  495. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  496. |NATIVE_PLUGIN_USES_TIME),
  497. #endif
  498. /* supports */ static_cast<NativePluginSupports>(0x0),
  499. /* audioIns */ 8,
  500. /* audioOuts */ 2,
  501. /* midiIns */ 0,
  502. /* midiOuts */ 0,
  503. /* paramIns */ 13,
  504. /* paramOuts */ 4,
  505. /* name */ "VectorJuice",
  506. /* label */ "vectorjuice",
  507. /* maker */ "Andre Sklenar",
  508. /* copyright */ "GPL v2+",
  509. DESCFUNCS
  510. },
  511. // -----------------------------------------------------------------------
  512. // External-UI plugins
  513. #ifndef CARLA_OS_WIN
  514. {
  515. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  516. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  517. |NATIVE_PLUGIN_HAS_UI
  518. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  519. /* supports */ static_cast<NativePluginSupports>(0x0),
  520. /* audioIns */ 2,
  521. /* audioOuts */ 0,
  522. /* midiIns */ 0,
  523. /* midiOuts */ 0,
  524. /* paramIns */ 1,
  525. /* paramOuts */ 2,
  526. /* name */ "Big Meter",
  527. /* label */ "bigmeter",
  528. /* maker */ "falkTX",
  529. /* copyright */ "GNU GPL v2+",
  530. DESCFUNCS
  531. },
  532. {
  533. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  534. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  535. |NATIVE_PLUGIN_HAS_UI),
  536. /* supports */ static_cast<NativePluginSupports>(0x0),
  537. /* audioIns */ 0,
  538. /* audioOuts */ 0,
  539. /* midiIns */ 0,
  540. /* midiOuts */ 0,
  541. /* paramIns */ 1,
  542. /* paramOuts */ 0,
  543. /* name */ "Notes",
  544. /* label */ "notes",
  545. /* maker */ "falkTX",
  546. /* copyright */ "GNU GPL v2+",
  547. DESCFUNCS
  548. },
  549. #endif
  550. // -----------------------------------------------------------------------
  551. // ZynAddSubFX
  552. #ifdef HAVE_ZYN_DEPS
  553. {
  554. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  555. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  556. |NATIVE_PLUGIN_USES_PANNING
  557. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  558. /* supports */ static_cast<NativePluginSupports>(0x0),
  559. /* audioIns */ 2,
  560. /* audioOuts */ 2,
  561. /* midiIns */ 0,
  562. /* midiOuts */ 0,
  563. /* paramIns */ 11-2,
  564. /* paramOuts */ 0,
  565. /* name */ "ZynAlienWah",
  566. /* label */ "zynalienwah",
  567. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  568. /* copyright */ "GNU GPL v2+",
  569. DESCFUNCS
  570. },
  571. {
  572. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  573. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  574. |NATIVE_PLUGIN_USES_PANNING
  575. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  576. /* supports */ static_cast<NativePluginSupports>(0x0),
  577. /* audioIns */ 2,
  578. /* audioOuts */ 2,
  579. /* midiIns */ 0,
  580. /* midiOuts */ 0,
  581. /* paramIns */ 12-2,
  582. /* paramOuts */ 0,
  583. /* name */ "ZynChorus",
  584. /* label */ "zynchorus",
  585. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  586. /* copyright */ "GNU GPL v2+",
  587. DESCFUNCS
  588. },
  589. {
  590. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  591. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  592. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  593. /* supports */ static_cast<NativePluginSupports>(0x0),
  594. /* audioIns */ 2,
  595. /* audioOuts */ 2,
  596. /* midiIns */ 0,
  597. /* midiOuts */ 0,
  598. /* paramIns */ 11-2,
  599. /* paramOuts */ 0,
  600. /* name */ "ZynDistortion",
  601. /* label */ "zyndistortion",
  602. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  603. /* copyright */ "GNU GPL v2+",
  604. DESCFUNCS
  605. },
  606. {
  607. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  608. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  609. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  610. /* supports */ static_cast<NativePluginSupports>(0x0),
  611. /* audioIns */ 2,
  612. /* audioOuts */ 2,
  613. /* midiIns */ 0,
  614. /* midiOuts */ 0,
  615. /* paramIns */ 10-2,
  616. /* paramOuts */ 0,
  617. /* name */ "ZynDynamicFilter",
  618. /* label */ "zyndynamicfilter",
  619. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  620. /* copyright */ "GNU GPL v2+",
  621. DESCFUNCS
  622. },
  623. {
  624. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  625. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  626. |NATIVE_PLUGIN_USES_PANNING
  627. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  628. /* supports */ static_cast<NativePluginSupports>(0x0),
  629. /* audioIns */ 2,
  630. /* audioOuts */ 2,
  631. /* midiIns */ 0,
  632. /* midiOuts */ 0,
  633. /* paramIns */ 7-2,
  634. /* paramOuts */ 0,
  635. /* name */ "ZynEcho",
  636. /* label */ "zynecho",
  637. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  638. /* copyright */ "GNU GPL v2+",
  639. DESCFUNCS
  640. },
  641. {
  642. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  643. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  644. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  645. /* supports */ static_cast<NativePluginSupports>(0x0),
  646. /* audioIns */ 2,
  647. /* audioOuts */ 2,
  648. /* midiIns */ 0,
  649. /* midiOuts */ 0,
  650. /* paramIns */ 15-2,
  651. /* paramOuts */ 0,
  652. /* name */ "ZynPhaser",
  653. /* label */ "zynphaser",
  654. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  655. /* copyright */ "GNU GPL v2+",
  656. DESCFUNCS
  657. },
  658. {
  659. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  660. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  661. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  662. /* supports */ static_cast<NativePluginSupports>(0x0),
  663. /* audioIns */ 2,
  664. /* audioOuts */ 2,
  665. /* midiIns */ 0,
  666. /* midiOuts */ 0,
  667. /* paramIns */ 13-2,
  668. /* paramOuts */ 0,
  669. /* name */ "ZynReverb",
  670. /* label */ "zynreverb",
  671. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  672. /* copyright */ "GNU GPL v2+",
  673. DESCFUNCS
  674. },
  675. # ifdef CARLA_OS_LINUX
  676. {
  677. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  678. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  679. # ifdef HAVE_ZYN_UI_DEPS
  680. |NATIVE_PLUGIN_HAS_UI
  681. # endif
  682. |NATIVE_PLUGIN_USES_MULTI_PROGS
  683. |NATIVE_PLUGIN_USES_STATE),
  684. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  685. |NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH
  686. |NATIVE_PLUGIN_SUPPORTS_PITCHBEND
  687. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  688. /* audioIns */ 0,
  689. /* audioOuts */ 2,
  690. /* midiIns */ 1,
  691. /* midiOuts */ 0,
  692. /* paramIns */ 6,
  693. /* paramOuts */ 0,
  694. /* name */ "ZynAddSubFX",
  695. /* label */ "zynaddsubfx",
  696. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  697. /* copyright */ "GNU GPL v2+",
  698. DESCFUNCS
  699. },
  700. # endif // CARLA_OS_LINUX
  701. #endif // HAVE_ZYN_DEPS
  702. // -----------------------------------------------------------------------
  703. // Experimental plugins
  704. #ifdef HAVE_EXPERIMENTAL_PLUGINS
  705. {
  706. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  707. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  708. |NATIVE_PLUGIN_HAS_UI
  709. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  710. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  711. |NATIVE_PLUGIN_USES_PARENT_ID),
  712. /* supports */ static_cast<NativePluginSupports>(0x0),
  713. /* audioIns */ 1,
  714. /* audioOuts */ 1,
  715. /* midiIns */ 1,
  716. /* midiOuts */ 0,
  717. /* paramIns */ 6,
  718. /* paramOuts */ 0,
  719. /* name */ "AT1",
  720. /* label */ "at1",
  721. /* maker */ "falkTX, Fons Adriaensen",
  722. /* copyright */ "GPL v2+",
  723. DESCFUNCS
  724. },
  725. {
  726. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  727. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  728. |NATIVE_PLUGIN_HAS_UI
  729. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  730. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  731. |NATIVE_PLUGIN_USES_PARENT_ID),
  732. /* supports */ static_cast<NativePluginSupports>(0x0),
  733. /* audioIns */ 2,
  734. /* audioOuts */ 2,
  735. /* midiIns */ 0,
  736. /* midiOuts */ 0,
  737. /* paramIns */ 6,
  738. /* paramOuts */ 0,
  739. /* name */ "BLS1",
  740. /* label */ "bls1",
  741. /* maker */ "falkTX, Fons Adriaensen",
  742. /* copyright */ "GPL v2+",
  743. DESCFUNCS
  744. },
  745. {
  746. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  747. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  748. |NATIVE_PLUGIN_HAS_UI
  749. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  750. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  751. |NATIVE_PLUGIN_USES_PARENT_ID),
  752. /* supports */ static_cast<NativePluginSupports>(0x0),
  753. /* audioIns */ 2,
  754. /* audioOuts */ 4,
  755. /* midiIns */ 0,
  756. /* midiOuts */ 0,
  757. /* paramIns */ 10,
  758. /* paramOuts */ 0,
  759. /* name */ "REV1 (Ambisonic)",
  760. /* label */ "rev1-ambisonic",
  761. /* maker */ "falkTX, Fons Adriaensen",
  762. /* copyright */ "GPL v2+",
  763. DESCFUNCS
  764. },
  765. {
  766. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  767. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  768. |NATIVE_PLUGIN_HAS_UI
  769. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  770. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  771. |NATIVE_PLUGIN_USES_PARENT_ID),
  772. /* supports */ static_cast<NativePluginSupports>(0x0),
  773. /* audioIns */ 2,
  774. /* audioOuts */ 2,
  775. /* midiIns */ 0,
  776. /* midiOuts */ 0,
  777. /* paramIns */ 10,
  778. /* paramOuts */ 0,
  779. /* name */ "REV1 (Stereo)",
  780. /* label */ "rev1-stereo",
  781. /* maker */ "falkTX, Fons Adriaensen",
  782. /* copyright */ "GPL v2+",
  783. DESCFUNCS
  784. },
  785. #endif // HAVE_EXPERIMENTAL_PLUGINS
  786. };
  787. #undef DESCFUNCS
  788. // -----------------------------------------------------------------------
  789. const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count)
  790. {
  791. CARLA_SAFE_ASSERT_RETURN(count != nullptr, nullptr);
  792. *count = static_cast<uint32_t>(sizeof(sNativePluginDescriptors)/sizeof(NativePluginDescriptor));
  793. return sNativePluginDescriptors;
  794. }
  795. // -----------------------------------------------------------------------