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.

853 lines
29KB

  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. #ifdef CARLA_OS_LINUX
  199. {
  200. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  201. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  202. |NATIVE_PLUGIN_HAS_UI
  203. |NATIVE_PLUGIN_USES_STATE
  204. |NATIVE_PLUGIN_USES_TIME),
  205. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  206. /* audioIns */ 0,
  207. /* audioOuts */ 0,
  208. /* midiIns */ 0,
  209. /* midiOuts */ 1,
  210. /* paramIns */ 4,
  211. /* paramOuts */ 0,
  212. /* name */ "MIDI Pattern",
  213. /* label */ "midipattern",
  214. /* maker */ "falkTX, tatch",
  215. /* copyright */ "GNU GPL v2+",
  216. DESCFUNCS
  217. },
  218. #endif
  219. // -----------------------------------------------------------------------
  220. // Carla
  221. #ifndef CARLA_OS_WIN
  222. {
  223. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  224. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  225. |NATIVE_PLUGIN_HAS_UI
  226. //|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  227. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  228. |NATIVE_PLUGIN_USES_STATE
  229. |NATIVE_PLUGIN_USES_TIME),
  230. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  231. /* audioIns */ 2,
  232. /* audioOuts */ 2,
  233. /* midiIns */ 1,
  234. /* midiOuts */ 1,
  235. /* paramIns */ 0,
  236. /* paramOuts */ 0,
  237. /* name */ "Carla-Rack",
  238. /* label */ "carlarack",
  239. /* maker */ "falkTX",
  240. /* copyright */ "GNU GPL v2+",
  241. DESCFUNCS
  242. },
  243. {
  244. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  245. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  246. |NATIVE_PLUGIN_HAS_UI
  247. //|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  248. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  249. |NATIVE_PLUGIN_USES_STATE
  250. |NATIVE_PLUGIN_USES_TIME),
  251. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  252. /* audioIns */ 2,
  253. /* audioOuts */ 2,
  254. /* midiIns */ 1,
  255. /* midiOuts */ 1,
  256. /* paramIns */ 0,
  257. /* paramOuts */ 0,
  258. /* name */ "Carla-Patchbay",
  259. /* label */ "carlapatchbay",
  260. /* maker */ "falkTX",
  261. /* copyright */ "GNU GPL v2+",
  262. DESCFUNCS
  263. },
  264. {
  265. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  266. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  267. |NATIVE_PLUGIN_HAS_UI
  268. //|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  269. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  270. |NATIVE_PLUGIN_USES_STATE
  271. |NATIVE_PLUGIN_USES_TIME),
  272. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  273. /* audioIns */ 3,
  274. /* audioOuts */ 2,
  275. /* midiIns */ 1,
  276. /* midiOuts */ 1,
  277. /* paramIns */ 0,
  278. /* paramOuts */ 0,
  279. /* name */ "Carla-Patchbay (sidechain)",
  280. /* label */ "carlapatchbay3s",
  281. /* maker */ "falkTX",
  282. /* copyright */ "GNU GPL v2+",
  283. DESCFUNCS
  284. },
  285. {
  286. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  287. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  288. |NATIVE_PLUGIN_HAS_UI
  289. //|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  290. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  291. |NATIVE_PLUGIN_USES_STATE
  292. |NATIVE_PLUGIN_USES_TIME),
  293. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  294. /* audioIns */ 16,
  295. /* audioOuts */ 16,
  296. /* midiIns */ 1,
  297. /* midiOuts */ 1,
  298. /* paramIns */ 0,
  299. /* paramOuts */ 0,
  300. /* name */ "Carla-Patchbay (16chan)",
  301. /* label */ "carlapatchbay16",
  302. /* maker */ "falkTX",
  303. /* copyright */ "GNU GPL v2+",
  304. DESCFUNCS
  305. },
  306. {
  307. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  308. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  309. |NATIVE_PLUGIN_HAS_UI
  310. //|NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  311. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  312. |NATIVE_PLUGIN_USES_STATE
  313. |NATIVE_PLUGIN_USES_TIME),
  314. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  315. /* audioIns */ 32,
  316. /* audioOuts */ 32,
  317. /* midiIns */ 1,
  318. /* midiOuts */ 1,
  319. /* paramIns */ 0,
  320. /* paramOuts */ 0,
  321. /* name */ "Carla-Patchbay (32chan)",
  322. /* label */ "carlapatchbay32",
  323. /* maker */ "falkTX",
  324. /* copyright */ "GNU GPL v2+",
  325. DESCFUNCS
  326. },
  327. #endif // CARLA_OS_WIN
  328. // -----------------------------------------------------------------------
  329. // DISTRHO Plugins
  330. {
  331. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  332. #ifdef HAVE_DGL
  333. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  334. |NATIVE_PLUGIN_HAS_UI
  335. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  336. |NATIVE_PLUGIN_USES_PARENT_ID),
  337. #else
  338. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  339. #endif
  340. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  341. /* audioIns */ 2,
  342. /* audioOuts */ 2,
  343. /* midiIns */ 0,
  344. /* midiOuts */ 0,
  345. /* paramIns */ 6,
  346. /* paramOuts */ 0,
  347. /* name */ "3 Band EQ",
  348. /* label */ "3bandeq",
  349. /* maker */ "falkTX, Michael Gruhn",
  350. /* copyright */ "LGPL",
  351. DESCFUNCS
  352. },
  353. {
  354. /* category */ NATIVE_PLUGIN_CATEGORY_EQ,
  355. #ifdef HAVE_DGL
  356. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  357. |NATIVE_PLUGIN_HAS_UI
  358. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  359. |NATIVE_PLUGIN_USES_PARENT_ID),
  360. #else
  361. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  362. #endif
  363. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  364. /* audioIns */ 2,
  365. /* audioOuts */ 6,
  366. /* midiIns */ 0,
  367. /* midiOuts */ 0,
  368. /* paramIns */ 6,
  369. /* paramOuts */ 0,
  370. /* name */ "3 Band Splitter",
  371. /* label */ "3bandsplitter",
  372. /* maker */ "falkTX, Michael Gruhn",
  373. /* copyright */ "LGPL",
  374. DESCFUNCS
  375. },
  376. {
  377. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  378. #ifdef HAVE_DGL
  379. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  380. |NATIVE_PLUGIN_IS_SYNTH
  381. |NATIVE_PLUGIN_HAS_UI
  382. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  383. |NATIVE_PLUGIN_USES_PARENT_ID),
  384. #else
  385. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  386. |NATIVE_PLUGIN_IS_SYNTH),
  387. #endif
  388. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  389. /* audioIns */ 0,
  390. /* audioOuts */ 1,
  391. /* midiIns */ 1,
  392. /* midiOuts */ 0,
  393. /* paramIns */ 1,
  394. /* paramOuts */ 0,
  395. /* name */ "Kars",
  396. /* label */ "kars",
  397. /* maker */ "falkTX, Chris Cannam",
  398. /* copyright */ "ISC",
  399. DESCFUNCS
  400. },
  401. {
  402. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  403. #ifdef HAVE_DGL
  404. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  405. |NATIVE_PLUGIN_HAS_UI
  406. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  407. |NATIVE_PLUGIN_USES_PARENT_ID),
  408. #else
  409. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  410. #endif
  411. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  412. /* audioIns */ 2,
  413. /* audioOuts */ 2,
  414. /* midiIns */ 0,
  415. /* midiOuts */ 0,
  416. /* paramIns */ 9,
  417. /* paramOuts */ 0,
  418. /* name */ "MVerb",
  419. /* label */ "mverb",
  420. /* maker */ "falkTX, Martin Eastwood",
  421. /* copyright */ "GPL v3+",
  422. DESCFUNCS
  423. },
  424. {
  425. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  426. #ifdef HAVE_DGL
  427. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  428. |NATIVE_PLUGIN_IS_SYNTH
  429. |NATIVE_PLUGIN_HAS_UI
  430. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  431. |NATIVE_PLUGIN_USES_PARENT_ID),
  432. #else
  433. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  434. |NATIVE_PLUGIN_IS_SYNTH),
  435. #endif
  436. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  437. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  438. /* audioIns */ 0,
  439. /* audioOuts */ 1,
  440. /* midiIns */ 1,
  441. /* midiOuts */ 0,
  442. /* paramIns */ 8,
  443. /* paramOuts */ 0,
  444. /* name */ "Nekobi",
  445. /* label */ "nekobi",
  446. /* maker */ "falkTX, Sean Bolton and others",
  447. /* copyright */ "GPL v2+",
  448. DESCFUNCS
  449. },
  450. {
  451. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  452. #ifdef HAVE_DGL
  453. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  454. |NATIVE_PLUGIN_HAS_UI
  455. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  456. |NATIVE_PLUGIN_USES_PARENT_ID),
  457. #else
  458. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE),
  459. #endif
  460. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  461. /* audioIns */ 2,
  462. /* audioOuts */ 2,
  463. /* midiIns */ 0,
  464. /* midiOuts */ 0,
  465. /* paramIns */ 2,
  466. /* paramOuts */ 0,
  467. /* name */ "Ping Pong Pan",
  468. /* label */ "pingpongpan",
  469. /* maker */ "falkTX, Michael Gruhn",
  470. /* copyright */ "LGPL",
  471. DESCFUNCS
  472. },
  473. #ifdef HAVE_DGL
  474. #ifdef HAVE_PROJECTM
  475. {
  476. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  477. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  478. |NATIVE_PLUGIN_HAS_UI
  479. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  480. |NATIVE_PLUGIN_USES_PARENT_ID),
  481. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  482. /* audioIns */ 1,
  483. /* audioOuts */ 1,
  484. /* midiIns */ 0,
  485. /* midiOuts */ 0,
  486. /* paramIns */ 0,
  487. /* paramOuts */ 0,
  488. /* name */ "ProM",
  489. /* label */ "prom",
  490. /* maker */ "falkTX",
  491. /* copyright */ "LGPL",
  492. DESCFUNCS
  493. },
  494. #endif // HAVE_PROJECTM
  495. #endif // HAVE_DGL
  496. // -----------------------------------------------------------------------
  497. // DISTRHO plugins (Juice)
  498. {
  499. /* category */ NATIVE_PLUGIN_CATEGORY_DYNAMICS,
  500. #ifdef HAVE_DGL
  501. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  502. |NATIVE_PLUGIN_HAS_UI
  503. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  504. |NATIVE_PLUGIN_USES_PARENT_ID
  505. |NATIVE_PLUGIN_USES_TIME),
  506. #else
  507. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  508. |NATIVE_PLUGIN_USES_TIME),
  509. #endif
  510. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  511. /* audioIns */ 2,
  512. /* audioOuts */ 2,
  513. /* midiIns */ 0,
  514. /* midiOuts */ 0,
  515. /* paramIns */ 6,
  516. /* paramOuts */ 0,
  517. /* name */ "WobbleJuice",
  518. /* label */ "wobblejuice",
  519. /* maker */ "Andre Sklenar",
  520. /* copyright */ "GPL v2+",
  521. DESCFUNCS
  522. },
  523. {
  524. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  525. #ifdef HAVE_DGL
  526. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  527. |NATIVE_PLUGIN_HAS_UI
  528. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  529. |NATIVE_PLUGIN_USES_PARENT_ID
  530. |NATIVE_PLUGIN_USES_TIME),
  531. #else
  532. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  533. |NATIVE_PLUGIN_USES_TIME),
  534. #endif
  535. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  536. /* audioIns */ 8,
  537. /* audioOuts */ 2,
  538. /* midiIns */ 0,
  539. /* midiOuts */ 0,
  540. /* paramIns */ 13,
  541. /* paramOuts */ 4,
  542. /* name */ "VectorJuice",
  543. /* label */ "vectorjuice",
  544. /* maker */ "Andre Sklenar",
  545. /* copyright */ "GPL v2+",
  546. DESCFUNCS
  547. },
  548. // -----------------------------------------------------------------------
  549. // External-UI plugins
  550. #ifndef CARLA_OS_WIN
  551. {
  552. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  553. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  554. |NATIVE_PLUGIN_HAS_UI
  555. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  556. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  557. /* audioIns */ 2,
  558. /* audioOuts */ 0,
  559. /* midiIns */ 0,
  560. /* midiOuts */ 0,
  561. /* paramIns */ 2,
  562. /* paramOuts */ 2,
  563. /* name */ "Big Meter",
  564. /* label */ "bigmeter",
  565. /* maker */ "falkTX",
  566. /* copyright */ "GNU GPL v2+",
  567. DESCFUNCS
  568. },
  569. {
  570. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  571. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  572. |NATIVE_PLUGIN_HAS_UI),
  573. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  574. /* audioIns */ 0,
  575. /* audioOuts */ 0,
  576. /* midiIns */ 0,
  577. /* midiOuts */ 0,
  578. /* paramIns */ 1,
  579. /* paramOuts */ 0,
  580. /* name */ "Notes",
  581. /* label */ "notes",
  582. /* maker */ "falkTX",
  583. /* copyright */ "GNU GPL v2+",
  584. DESCFUNCS
  585. },
  586. #endif
  587. // -----------------------------------------------------------------------
  588. // ZynAddSubFX
  589. #ifdef HAVE_ZYN_DEPS
  590. {
  591. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  592. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  593. |NATIVE_PLUGIN_USES_PANNING
  594. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  595. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  596. /* audioIns */ 2,
  597. /* audioOuts */ 2,
  598. /* midiIns */ 0,
  599. /* midiOuts */ 0,
  600. /* paramIns */ 11-2,
  601. /* paramOuts */ 0,
  602. /* name */ "ZynAlienWah",
  603. /* label */ "zynalienwah",
  604. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  605. /* copyright */ "GNU GPL v2+",
  606. DESCFUNCS
  607. },
  608. {
  609. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  610. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  611. |NATIVE_PLUGIN_USES_PANNING
  612. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  613. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  614. /* audioIns */ 2,
  615. /* audioOuts */ 2,
  616. /* midiIns */ 0,
  617. /* midiOuts */ 0,
  618. /* paramIns */ 12-2,
  619. /* paramOuts */ 0,
  620. /* name */ "ZynChorus",
  621. /* label */ "zynchorus",
  622. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  623. /* copyright */ "GNU GPL v2+",
  624. DESCFUNCS
  625. },
  626. {
  627. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  628. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  629. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  630. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  631. /* audioIns */ 2,
  632. /* audioOuts */ 2,
  633. /* midiIns */ 0,
  634. /* midiOuts */ 0,
  635. /* paramIns */ 11-2,
  636. /* paramOuts */ 0,
  637. /* name */ "ZynDistortion",
  638. /* label */ "zyndistortion",
  639. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  640. /* copyright */ "GNU GPL v2+",
  641. DESCFUNCS
  642. },
  643. {
  644. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  645. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  646. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  647. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  648. /* audioIns */ 2,
  649. /* audioOuts */ 2,
  650. /* midiIns */ 0,
  651. /* midiOuts */ 0,
  652. /* paramIns */ 10-2,
  653. /* paramOuts */ 0,
  654. /* name */ "ZynDynamicFilter",
  655. /* label */ "zyndynamicfilter",
  656. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  657. /* copyright */ "GNU GPL v2+",
  658. DESCFUNCS
  659. },
  660. {
  661. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  662. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  663. |NATIVE_PLUGIN_USES_PANNING
  664. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  665. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  666. /* audioIns */ 2,
  667. /* audioOuts */ 2,
  668. /* midiIns */ 0,
  669. /* midiOuts */ 0,
  670. /* paramIns */ 7-2,
  671. /* paramOuts */ 0,
  672. /* name */ "ZynEcho",
  673. /* label */ "zynecho",
  674. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  675. /* copyright */ "GNU GPL v2+",
  676. DESCFUNCS
  677. },
  678. {
  679. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  680. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  681. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  682. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  683. /* audioIns */ 2,
  684. /* audioOuts */ 2,
  685. /* midiIns */ 0,
  686. /* midiOuts */ 0,
  687. /* paramIns */ 15-2,
  688. /* paramOuts */ 0,
  689. /* name */ "ZynPhaser",
  690. /* label */ "zynphaser",
  691. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  692. /* copyright */ "GNU GPL v2+",
  693. DESCFUNCS
  694. },
  695. {
  696. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  697. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_USES_PANNING
  698. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  699. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  700. /* audioIns */ 2,
  701. /* audioOuts */ 2,
  702. /* midiIns */ 0,
  703. /* midiOuts */ 0,
  704. /* paramIns */ 13-2,
  705. /* paramOuts */ 0,
  706. /* name */ "ZynReverb",
  707. /* label */ "zynreverb",
  708. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  709. /* copyright */ "GNU GPL v2+",
  710. DESCFUNCS
  711. },
  712. {
  713. /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH,
  714. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  715. # ifdef HAVE_ZYN_UI_DEPS
  716. |NATIVE_PLUGIN_HAS_UI
  717. # endif
  718. |NATIVE_PLUGIN_USES_MULTI_PROGS
  719. |NATIVE_PLUGIN_USES_STATE),
  720. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES
  721. |NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH
  722. |NATIVE_PLUGIN_SUPPORTS_PITCHBEND
  723. |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF),
  724. /* audioIns */ 0,
  725. /* audioOuts */ 2,
  726. /* midiIns */ 1,
  727. /* midiOuts */ 0,
  728. /* paramIns */ 6,
  729. /* paramOuts */ 0,
  730. /* name */ "ZynAddSubFX",
  731. /* label */ "zynaddsubfx",
  732. /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul",
  733. /* copyright */ "GNU GPL v2+",
  734. DESCFUNCS
  735. },
  736. #endif // HAVE_ZYN_DEPS
  737. // -----------------------------------------------------------------------
  738. // Experimental plugins
  739. #ifdef HAVE_EXPERIMENTAL_PLUGINS
  740. {
  741. /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR,
  742. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  743. |NATIVE_PLUGIN_HAS_UI
  744. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
  745. |NATIVE_PLUGIN_USES_STATE),
  746. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  747. /* audioIns */ 1,
  748. /* audioOuts */ 1,
  749. /* midiIns */ 1,
  750. /* midiOuts */ 0,
  751. /* paramIns */ 6,
  752. /* paramOuts */ 0,
  753. /* name */ "AT1",
  754. /* label */ "at1",
  755. /* maker */ "falkTX, Fons Adriaensen",
  756. /* copyright */ "GPL v2+",
  757. DESCFUNCS
  758. },
  759. {
  760. /* category */ NATIVE_PLUGIN_CATEGORY_FILTER,
  761. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  762. |NATIVE_PLUGIN_HAS_UI
  763. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  764. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  765. /* audioIns */ 2,
  766. /* audioOuts */ 2,
  767. /* midiIns */ 0,
  768. /* midiOuts */ 0,
  769. /* paramIns */ 6,
  770. /* paramOuts */ 0,
  771. /* name */ "BLS1",
  772. /* label */ "bls1",
  773. /* maker */ "falkTX, Fons Adriaensen",
  774. /* copyright */ "GPL v2+",
  775. DESCFUNCS
  776. },
  777. {
  778. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  779. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  780. |NATIVE_PLUGIN_HAS_UI
  781. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  782. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  783. /* audioIns */ 2,
  784. /* audioOuts */ 4,
  785. /* midiIns */ 0,
  786. /* midiOuts */ 0,
  787. /* paramIns */ 10,
  788. /* paramOuts */ 0,
  789. /* name */ "REV1 (Ambisonic)",
  790. /* label */ "rev1-ambisonic",
  791. /* maker */ "falkTX, Fons Adriaensen",
  792. /* copyright */ "GPL v2+",
  793. DESCFUNCS
  794. },
  795. {
  796. /* category */ NATIVE_PLUGIN_CATEGORY_DELAY,
  797. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  798. |NATIVE_PLUGIN_HAS_UI
  799. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  800. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  801. /* audioIns */ 2,
  802. /* audioOuts */ 2,
  803. /* midiIns */ 0,
  804. /* midiOuts */ 0,
  805. /* paramIns */ 10,
  806. /* paramOuts */ 0,
  807. /* name */ "REV1 (Stereo)",
  808. /* label */ "rev1-stereo",
  809. /* maker */ "falkTX, Fons Adriaensen",
  810. /* copyright */ "GPL v2+",
  811. DESCFUNCS
  812. },
  813. #endif // HAVE_EXPERIMENTAL_PLUGINS
  814. };
  815. #undef DESCFUNCS
  816. // -----------------------------------------------------------------------
  817. const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count)
  818. {
  819. CARLA_SAFE_ASSERT_RETURN(count != nullptr, nullptr);
  820. *count = static_cast<uint32_t>(sizeof(sNativePluginDescriptors)/sizeof(NativePluginDescriptor));
  821. return sNativePluginDescriptors;
  822. }
  823. // -----------------------------------------------------------------------