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.

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