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.

824 lines
28KB

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