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.

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