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.

857 lines
30KB

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