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.

_data.cpp 21KB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  1. /*
  2. * Carla Native Plugins
  3. * Copyright (C) 2012-2020 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. #include "CarlaNative.h"
  18. #include "CarlaMIDI.h"
  19. #include "CarlaUtils.hpp"
  20. #undef DESCFUNCS_WITHCV
  21. #undef DESCFUNCS_WITHOUTCV
  22. #define DESCFUNCS_WITHCV \
  23. nullptr, nullptr, nullptr, nullptr, nullptr, \
  24. nullptr, nullptr, nullptr, nullptr, nullptr, \
  25. nullptr, nullptr, nullptr, nullptr, nullptr, \
  26. nullptr, nullptr, nullptr, nullptr, nullptr, \
  27. nullptr, nullptr
  28. #define DESCFUNCS_WITHOUTCV \
  29. DESCFUNCS_WITHCV, 0, 0, nullptr, nullptr, 0, 0
  30. static const NativePluginDescriptor sNativePluginDescriptors[] = {
  31. // --------------------------------------------------------------------------------------------------------------------
  32. // Simple plugins
  33. {
  34. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  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 */ 1,
  42. /* paramOuts */ 0,
  43. /* name */ "Audio Gain (Mono)",
  44. /* label */ "audiogain",
  45. /* maker */ "falkTX",
  46. /* copyright */ "GNU GPL v2+",
  47. DESCFUNCS_WITHOUTCV
  48. },
  49. {
  50. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  51. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  52. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  53. /* audioIns */ 2,
  54. /* audioOuts */ 2,
  55. /* midiIns */ 0,
  56. /* midiOuts */ 0,
  57. /* paramIns */ 3,
  58. /* paramOuts */ 0,
  59. /* name */ "Audio Gain (Stereo)",
  60. /* label */ "audiogain_s",
  61. /* maker */ "falkTX",
  62. /* copyright */ "GNU GPL v2+",
  63. DESCFUNCS_WITHOUTCV
  64. },
  65. {
  66. /* category */ NATIVE_PLUGIN_CATEGORY_NONE,
  67. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  68. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  69. /* audioIns */ 1,
  70. /* audioOuts */ 1,
  71. /* midiIns */ 0,
  72. /* midiOuts */ 0,
  73. /* paramIns */ 0,
  74. /* paramOuts */ 0,
  75. /* name */ "Bypass",
  76. /* label */ "bypass",
  77. /* maker */ "falkTX",
  78. /* copyright */ "GNU GPL v2+",
  79. DESCFUNCS_WITHOUTCV
  80. },
  81. {
  82. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  83. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  84. |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE),
  85. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  86. /* audioIns */ 0,
  87. /* audioOuts */ 1,
  88. /* midiIns */ 0,
  89. /* midiOuts */ 0,
  90. /* paramIns */ 1,
  91. /* paramOuts */ 0,
  92. /* name */ "CV to Audio",
  93. /* label */ "cv2audio",
  94. /* maker */ "falkTX",
  95. /* copyright */ "GNU GPL v2+",
  96. DESCFUNCS_WITHCV,
  97. /* cvIns */ 1,
  98. /* cvOuts */ 0,
  99. /* bufnamefn */ nullptr,
  100. /* bufrangefn */ nullptr,
  101. /* ui_width */ 0,
  102. /* ui_height */ 0
  103. },
  104. {
  105. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  106. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  107. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  108. /* audioIns */ 0,
  109. /* audioOuts */ 0,
  110. /* midiIns */ 0,
  111. /* midiOuts */ 0,
  112. /* paramIns */ 5-1,
  113. /* paramOuts */ 1,
  114. /* name */ "LFO",
  115. /* label */ "lfo",
  116. /* maker */ "falkTX",
  117. /* copyright */ "GNU GPL v2+",
  118. DESCFUNCS_WITHOUTCV
  119. },
  120. {
  121. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  122. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  123. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  124. /* audioIns */ 0,
  125. /* audioOuts */ 0,
  126. /* midiIns */ 1,
  127. /* midiOuts */ 1,
  128. /* paramIns */ 0,
  129. /* paramOuts */ 0,
  130. /* name */ "MIDI Channel Filter",
  131. /* label */ "midichanfilter",
  132. /* maker */ "falkTX",
  133. /* copyright */ "GNU GPL v2+",
  134. DESCFUNCS_WITHOUTCV
  135. },
  136. {
  137. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  138. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  139. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  140. /* audioIns */ 0,
  141. /* audioOuts */ 0,
  142. /* midiIns */ 1,
  143. /* midiOuts */ 2,
  144. /* paramIns */ 0,
  145. /* paramOuts */ 0,
  146. /* name */ "MIDI Channel A/B",
  147. /* label */ "midichanab",
  148. /* maker */ "Milk Brewster",
  149. /* copyright */ "GNU GPL v2+",
  150. DESCFUNCS_WITHOUTCV
  151. },
  152. {
  153. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  154. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  155. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  156. /* audioIns */ 0,
  157. /* audioOuts */ 0,
  158. /* midiIns */ 1,
  159. /* midiOuts */ 1,
  160. /* paramIns */ 0,
  161. /* paramOuts */ 0,
  162. /* name */ "MIDI Gain",
  163. /* label */ "midigain",
  164. /* maker */ "falkTX",
  165. /* copyright */ "GNU GPL v2+",
  166. DESCFUNCS_WITHOUTCV
  167. },
  168. {
  169. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  170. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  171. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  172. /* audioIns */ 0,
  173. /* audioOuts */ 0,
  174. /* midiIns */ MAX_MIDI_CHANNELS,
  175. /* midiOuts */ 1,
  176. /* paramIns */ 0,
  177. /* paramOuts */ 0,
  178. /* name */ "MIDI Join",
  179. /* label */ "midijoin",
  180. /* maker */ "falkTX",
  181. /* copyright */ "GNU GPL v2+",
  182. DESCFUNCS_WITHOUTCV
  183. },
  184. {
  185. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  186. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  187. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  188. /* audioIns */ 0,
  189. /* audioOuts */ 0,
  190. /* midiIns */ 1,
  191. /* midiOuts */ MAX_MIDI_CHANNELS,
  192. /* paramIns */ 0,
  193. /* paramOuts */ 0,
  194. /* name */ "MIDI Split",
  195. /* label */ "midisplit",
  196. /* maker */ "falkTX",
  197. /* copyright */ "GNU GPL v2+",
  198. DESCFUNCS_WITHOUTCV
  199. },
  200. {
  201. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  202. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  203. |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE),
  204. /* supports */ NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF,
  205. /* audioIns */ 0,
  206. /* audioOuts */ 0,
  207. /* midiIns */ 1,
  208. /* midiOuts */ 0,
  209. /* paramIns */ 4,
  210. /* paramOuts */ 0,
  211. /* name */ "MIDI to CV",
  212. /* label */ "midi2cv",
  213. /* maker */ "falkTX, Bram Giesen, Jarno Verheesen",
  214. /* copyright */ "GNU GPL v2+",
  215. DESCFUNCS_WITHCV,
  216. /* cvIns */ 0,
  217. /* cvOuts */ 3,
  218. /* bufnamefn */ nullptr,
  219. /* bufrangefn */ nullptr,
  220. /* ui_width */ 0,
  221. /* ui_height */ 0
  222. },
  223. {
  224. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  225. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  226. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  227. /* audioIns */ 0,
  228. /* audioOuts */ 0,
  229. /* midiIns */ 1,
  230. /* midiOuts */ 1,
  231. /* paramIns */ 0,
  232. /* paramOuts */ 0,
  233. /* name */ "MIDI Through",
  234. /* label */ "midithrough",
  235. /* maker */ "falkTX",
  236. /* copyright */ "GNU GPL v2+",
  237. DESCFUNCS_WITHOUTCV
  238. },
  239. {
  240. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  241. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  242. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  243. /* audioIns */ 0,
  244. /* audioOuts */ 0,
  245. /* midiIns */ 1,
  246. /* midiOuts */ 1,
  247. /* paramIns */ 2,
  248. /* paramOuts */ 0,
  249. /* name */ "MIDI Transpose",
  250. /* label */ "miditranspose",
  251. /* maker */ "falkTX",
  252. /* copyright */ "GNU GPL v2+",
  253. DESCFUNCS_WITHOUTCV
  254. },
  255. {
  256. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  257. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  258. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  259. /* audioIns */ 0,
  260. /* audioOuts */ 0,
  261. /* midiIns */ 1,
  262. /* midiOuts */ 1,
  263. /* paramIns */ 1,
  264. /* paramOuts */ 0,
  265. /* name */ "MIDI Channelize",
  266. /* label */ "midichannelize",
  267. /* maker */ "falkTX",
  268. /* copyright */ "GNU GPL v2+",
  269. DESCFUNCS_WITHOUTCV
  270. },
  271. // --------------------------------------------------------------------------------------------------------------------
  272. // Audio file
  273. {
  274. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  275. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  276. |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
  277. |NATIVE_PLUGIN_HAS_UI
  278. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
  279. |NATIVE_PLUGIN_REQUESTS_IDLE
  280. |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
  281. |NATIVE_PLUGIN_USES_TIME),
  282. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  283. /* audioIns */ 0,
  284. /* audioOuts */ 2,
  285. /* midiIns */ 0,
  286. /* midiOuts */ 0,
  287. /* paramIns */ 1,
  288. /* paramOuts */ 0,
  289. /* name */ "Audio File",
  290. /* label */ "audiofile",
  291. /* maker */ "falkTX",
  292. /* copyright */ "GNU GPL v2+",
  293. DESCFUNCS_WITHCV,
  294. /* cvIns */ 0,
  295. /* cvOuts */ 1,
  296. /* bufnamefn */ nullptr,
  297. /* bufrangefn */ nullptr,
  298. /* ui_width */ 0,
  299. /* ui_height */ 0
  300. },
  301. // --------------------------------------------------------------------------------------------------------------------
  302. // MIDI file and sequencer
  303. {
  304. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  305. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  306. |NATIVE_PLUGIN_HAS_UI
  307. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
  308. |NATIVE_PLUGIN_REQUESTS_IDLE
  309. |NATIVE_PLUGIN_USES_STATE
  310. |NATIVE_PLUGIN_USES_TIME),
  311. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  312. /* audioIns */ 0,
  313. /* audioOuts */ 0,
  314. /* midiIns */ 0,
  315. /* midiOuts */ 1,
  316. /* paramIns */ 0,
  317. /* paramOuts */ 0,
  318. /* name */ "MIDI File",
  319. /* label */ "midifile",
  320. /* maker */ "falkTX",
  321. /* copyright */ "GNU GPL v2+",
  322. DESCFUNCS_WITHOUTCV
  323. },
  324. #ifdef HAVE_PYQT
  325. {
  326. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  327. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  328. |NATIVE_PLUGIN_HAS_UI
  329. |NATIVE_PLUGIN_USES_STATE
  330. |NATIVE_PLUGIN_USES_TIME),
  331. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  332. /* audioIns */ 0,
  333. /* audioOuts */ 0,
  334. /* midiIns */ 0,
  335. /* midiOuts */ 1,
  336. /* paramIns */ 4,
  337. /* paramOuts */ 0,
  338. /* name */ "MIDI Pattern",
  339. /* label */ "midipattern",
  340. /* maker */ "falkTX, tatch",
  341. /* copyright */ "GNU GPL v2+",
  342. DESCFUNCS_WITHOUTCV
  343. },
  344. #endif
  345. // --------------------------------------------------------------------------------------------------------------------
  346. // Carla
  347. #ifdef HAVE_PYQT
  348. {
  349. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  350. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  351. |NATIVE_PLUGIN_HAS_UI
  352. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  353. |NATIVE_PLUGIN_USES_STATE
  354. |NATIVE_PLUGIN_USES_TIME),
  355. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  356. /* audioIns */ 2,
  357. /* audioOuts */ 2,
  358. /* midiIns */ 1,
  359. /* midiOuts */ 1,
  360. /* paramIns */ 100,
  361. /* paramOuts */ 10,
  362. /* name */ "Carla-Rack",
  363. /* label */ "carlarack",
  364. /* maker */ "falkTX",
  365. /* copyright */ "GNU GPL v2+",
  366. DESCFUNCS_WITHOUTCV
  367. },
  368. {
  369. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  370. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  371. |NATIVE_PLUGIN_HAS_UI
  372. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  373. |NATIVE_PLUGIN_USES_STATE
  374. |NATIVE_PLUGIN_USES_TIME),
  375. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  376. /* audioIns */ 2,
  377. /* audioOuts */ 2,
  378. /* midiIns */ 1,
  379. /* midiOuts */ 0,
  380. /* paramIns */ 100,
  381. /* paramOuts */ 10,
  382. /* name */ "Carla-Rack (no midi out)",
  383. /* label */ "carlarack-nomidiout",
  384. /* maker */ "falkTX",
  385. /* copyright */ "GNU GPL v2+",
  386. DESCFUNCS_WITHOUTCV
  387. },
  388. {
  389. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  390. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  391. |NATIVE_PLUGIN_HAS_UI
  392. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  393. |NATIVE_PLUGIN_USES_STATE
  394. |NATIVE_PLUGIN_USES_TIME),
  395. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  396. /* audioIns */ 2,
  397. /* audioOuts */ 2,
  398. /* midiIns */ 1,
  399. /* midiOuts */ 1,
  400. /* paramIns */ 100,
  401. /* paramOuts */ 10,
  402. /* name */ "Carla-Patchbay",
  403. /* label */ "carlapatchbay",
  404. /* maker */ "falkTX",
  405. /* copyright */ "GNU GPL v2+",
  406. DESCFUNCS_WITHOUTCV
  407. },
  408. {
  409. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  410. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  411. |NATIVE_PLUGIN_HAS_UI
  412. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  413. |NATIVE_PLUGIN_USES_STATE
  414. |NATIVE_PLUGIN_USES_TIME),
  415. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  416. /* audioIns */ 3,
  417. /* audioOuts */ 2,
  418. /* midiIns */ 1,
  419. /* midiOuts */ 1,
  420. /* paramIns */ 100,
  421. /* paramOuts */ 10,
  422. /* name */ "Carla-Patchbay (sidechain)",
  423. /* label */ "carlapatchbay3s",
  424. /* maker */ "falkTX",
  425. /* copyright */ "GNU GPL v2+",
  426. DESCFUNCS_WITHOUTCV
  427. },
  428. {
  429. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  430. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  431. |NATIVE_PLUGIN_HAS_UI
  432. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  433. |NATIVE_PLUGIN_USES_STATE
  434. |NATIVE_PLUGIN_USES_TIME),
  435. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  436. /* audioIns */ 16,
  437. /* audioOuts */ 16,
  438. /* midiIns */ 1,
  439. /* midiOuts */ 1,
  440. /* paramIns */ 100,
  441. /* paramOuts */ 10,
  442. /* name */ "Carla-Patchbay (16chan)",
  443. /* label */ "carlapatchbay16",
  444. /* maker */ "falkTX",
  445. /* copyright */ "GNU GPL v2+",
  446. DESCFUNCS_WITHOUTCV
  447. },
  448. {
  449. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  450. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  451. |NATIVE_PLUGIN_HAS_UI
  452. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  453. |NATIVE_PLUGIN_USES_STATE
  454. |NATIVE_PLUGIN_USES_TIME),
  455. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  456. /* audioIns */ 32,
  457. /* audioOuts */ 32,
  458. /* midiIns */ 1,
  459. /* midiOuts */ 1,
  460. /* paramIns */ 100,
  461. /* paramOuts */ 10,
  462. /* name */ "Carla-Patchbay (32chan)",
  463. /* label */ "carlapatchbay32",
  464. /* maker */ "falkTX",
  465. /* copyright */ "GNU GPL v2+",
  466. DESCFUNCS_WITHOUTCV
  467. },
  468. {
  469. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  470. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  471. |NATIVE_PLUGIN_HAS_UI
  472. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  473. |NATIVE_PLUGIN_USES_STATE
  474. |NATIVE_PLUGIN_USES_TIME),
  475. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  476. /* audioIns */ 64,
  477. /* audioOuts */ 64,
  478. /* midiIns */ 1,
  479. /* midiOuts */ 1,
  480. /* paramIns */ 100,
  481. /* paramOuts */ 10,
  482. /* name */ "Carla-Patchbay (64chan)",
  483. /* label */ "carlapatchbay64",
  484. /* maker */ "falkTX",
  485. /* copyright */ "GNU GPL v2+",
  486. DESCFUNCS_WITHOUTCV
  487. },
  488. {
  489. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  490. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  491. |NATIVE_PLUGIN_HAS_UI
  492. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  493. |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
  494. |NATIVE_PLUGIN_USES_STATE
  495. |NATIVE_PLUGIN_USES_TIME),
  496. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  497. /* audioIns */ 2,
  498. /* audioOuts */ 2,
  499. /* midiIns */ 1,
  500. /* midiOuts */ 1,
  501. /* paramIns */ 100,
  502. /* paramOuts */ 10,
  503. /* name */ "Carla-Patchbay (CV)",
  504. /* label */ "carlapatchbaycv",
  505. /* maker */ "falkTX",
  506. /* copyright */ "GNU GPL v2+",
  507. DESCFUNCS_WITHCV,
  508. /* cvIns */ 5,
  509. /* cvOuts */ 5,
  510. /* bufnamefn */ nullptr,
  511. /* bufrangefn */ nullptr,
  512. /* ui_width */ 0,
  513. /* ui_height */ 0
  514. },
  515. #endif
  516. // --------------------------------------------------------------------------------------------------------------------
  517. // External-UI plugins
  518. #ifdef HAVE_PYQT
  519. {
  520. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  521. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  522. |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
  523. |NATIVE_PLUGIN_HAS_UI
  524. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  525. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  526. /* audioIns */ 2,
  527. /* audioOuts */ 0,
  528. /* midiIns */ 0,
  529. /* midiOuts */ 0,
  530. /* paramIns */ 2,
  531. /* paramOuts */ 2,
  532. /* name */ "Big Meter",
  533. /* label */ "bigmeter",
  534. /* maker */ "falkTX",
  535. /* copyright */ "GNU GPL v2+",
  536. DESCFUNCS_WITHOUTCV
  537. },
  538. {
  539. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  540. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  541. |NATIVE_PLUGIN_HAS_UI),
  542. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  543. /* audioIns */ 0,
  544. /* audioOuts */ 0,
  545. /* midiIns */ 0,
  546. /* midiOuts */ 0,
  547. /* paramIns */ 1,
  548. /* paramOuts */ 0,
  549. /* name */ "Notes",
  550. /* label */ "notes",
  551. /* maker */ "falkTX",
  552. /* copyright */ "GNU GPL v2+",
  553. DESCFUNCS_WITHOUTCV
  554. },
  555. {
  556. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  557. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  558. |NATIVE_PLUGIN_HAS_UI),
  559. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  560. /* audioIns */ 0,
  561. /* audioOuts */ 0,
  562. /* midiIns */ 1,
  563. /* midiOuts */ 1,
  564. /* paramIns */ 2,
  565. /* paramOuts */ 2,
  566. /* name */ "XY Controller",
  567. /* label */ "xycontroller",
  568. /* maker */ "falkTX",
  569. /* copyright */ "GNU GPL v2+",
  570. DESCFUNCS_WITHOUTCV
  571. },
  572. #endif
  573. #ifdef HAVE_EXTERNAL_PLUGINS
  574. # define CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY
  575. # include "external/_data.cpp"
  576. #endif
  577. };
  578. #undef DESCFUNCS_WITHCV
  579. #undef DESCFUNCS_WITHOUTCV
  580. // --------------------------------------------------------------------------------------------------------------------
  581. const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count)
  582. {
  583. CARLA_SAFE_ASSERT_RETURN(count != nullptr, nullptr);
  584. *count = static_cast<uint32_t>(sizeof(sNativePluginDescriptors)/sizeof(NativePluginDescriptor));
  585. return sNativePluginDescriptors;
  586. }
  587. // --------------------------------------------------------------------------------------------------------------------