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.

769 lines
27KB

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