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.

582 lines
20KB

  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 */ NATIVE_PLUGIN_IS_RTSAFE,
  84. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  85. /* audioIns */ 0,
  86. /* audioOuts */ 1,
  87. /* midiIns */ 0,
  88. /* midiOuts */ 0,
  89. /* paramIns */ 1,
  90. /* paramOuts */ 0,
  91. /* name */ "CV to Audio",
  92. /* label */ "cv2audio",
  93. /* maker */ "falkTX",
  94. /* copyright */ "GNU GPL v2+",
  95. DESCFUNCS_WITHCV,
  96. /* cvIns */ 1,
  97. /* cvOuts */ 0,
  98. /* bufnamefn */ nullptr,
  99. /* bufrangefn */ nullptr,
  100. /* ui_width */ 0,
  101. /* ui_height */ 0
  102. },
  103. {
  104. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  105. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  106. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  107. /* audioIns */ 0,
  108. /* audioOuts */ 0,
  109. /* midiIns */ 0,
  110. /* midiOuts */ 0,
  111. /* paramIns */ 5-1,
  112. /* paramOuts */ 1,
  113. /* name */ "LFO",
  114. /* label */ "lfo",
  115. /* maker */ "falkTX",
  116. /* copyright */ "GNU GPL v2+",
  117. DESCFUNCS_WITHOUTCV
  118. },
  119. {
  120. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  121. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  122. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  123. /* audioIns */ 0,
  124. /* audioOuts */ 0,
  125. /* midiIns */ 1,
  126. /* midiOuts */ 1,
  127. /* paramIns */ 0,
  128. /* paramOuts */ 0,
  129. /* name */ "MIDI Channel Filter",
  130. /* label */ "midichanfilter",
  131. /* maker */ "falkTX",
  132. /* copyright */ "GNU GPL v2+",
  133. DESCFUNCS_WITHOUTCV
  134. },
  135. {
  136. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  137. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  138. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  139. /* audioIns */ 0,
  140. /* audioOuts */ 0,
  141. /* midiIns */ 1,
  142. /* midiOuts */ 2,
  143. /* paramIns */ 0,
  144. /* paramOuts */ 0,
  145. /* name */ "MIDI Channel A/B",
  146. /* label */ "midichanab",
  147. /* maker */ "Milk Brewster",
  148. /* copyright */ "GNU GPL v2+",
  149. DESCFUNCS_WITHOUTCV
  150. },
  151. {
  152. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  153. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  154. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  155. /* audioIns */ 0,
  156. /* audioOuts */ 0,
  157. /* midiIns */ 1,
  158. /* midiOuts */ 1,
  159. /* paramIns */ 0,
  160. /* paramOuts */ 0,
  161. /* name */ "MIDI Gain",
  162. /* label */ "midigain",
  163. /* maker */ "falkTX",
  164. /* copyright */ "GNU GPL v2+",
  165. DESCFUNCS_WITHOUTCV
  166. },
  167. {
  168. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  169. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  170. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  171. /* audioIns */ 0,
  172. /* audioOuts */ 0,
  173. /* midiIns */ MAX_MIDI_CHANNELS,
  174. /* midiOuts */ 1,
  175. /* paramIns */ 0,
  176. /* paramOuts */ 0,
  177. /* name */ "MIDI Join",
  178. /* label */ "midijoin",
  179. /* maker */ "falkTX",
  180. /* copyright */ "GNU GPL v2+",
  181. DESCFUNCS_WITHOUTCV
  182. },
  183. {
  184. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  185. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  186. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  187. /* audioIns */ 0,
  188. /* audioOuts */ 0,
  189. /* midiIns */ 1,
  190. /* midiOuts */ MAX_MIDI_CHANNELS,
  191. /* paramIns */ 0,
  192. /* paramOuts */ 0,
  193. /* name */ "MIDI Split",
  194. /* label */ "midisplit",
  195. /* maker */ "falkTX",
  196. /* copyright */ "GNU GPL v2+",
  197. DESCFUNCS_WITHOUTCV
  198. },
  199. {
  200. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  201. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  202. /* supports */ NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF,
  203. /* audioIns */ 0,
  204. /* audioOuts */ 0,
  205. /* midiIns */ 1,
  206. /* midiOuts */ 0,
  207. /* paramIns */ 4,
  208. /* paramOuts */ 0,
  209. /* name */ "MIDI to CV",
  210. /* label */ "midi2cv",
  211. /* maker */ "falkTX, Bram Giesen, Jarno Verheesen",
  212. /* copyright */ "GNU GPL v2+",
  213. DESCFUNCS_WITHCV,
  214. /* cvIns */ 0,
  215. /* cvOuts */ 3,
  216. /* bufnamefn */ nullptr,
  217. /* bufrangefn */ nullptr,
  218. /* ui_width */ 0,
  219. /* ui_height */ 0
  220. },
  221. {
  222. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  223. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  224. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  225. /* audioIns */ 0,
  226. /* audioOuts */ 0,
  227. /* midiIns */ 1,
  228. /* midiOuts */ 1,
  229. /* paramIns */ 0,
  230. /* paramOuts */ 0,
  231. /* name */ "MIDI Through",
  232. /* label */ "midithrough",
  233. /* maker */ "falkTX",
  234. /* copyright */ "GNU GPL v2+",
  235. DESCFUNCS_WITHOUTCV
  236. },
  237. {
  238. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  239. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  240. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  241. /* audioIns */ 0,
  242. /* audioOuts */ 0,
  243. /* midiIns */ 1,
  244. /* midiOuts */ 1,
  245. /* paramIns */ 2,
  246. /* paramOuts */ 0,
  247. /* name */ "MIDI Transpose",
  248. /* label */ "miditranspose",
  249. /* maker */ "falkTX",
  250. /* copyright */ "GNU GPL v2+",
  251. DESCFUNCS_WITHOUTCV
  252. },
  253. {
  254. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  255. /* hints */ NATIVE_PLUGIN_IS_RTSAFE,
  256. /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING,
  257. /* audioIns */ 0,
  258. /* audioOuts */ 0,
  259. /* midiIns */ 1,
  260. /* midiOuts */ 1,
  261. /* paramIns */ 1,
  262. /* paramOuts */ 0,
  263. /* name */ "MIDI Channelize",
  264. /* label */ "midichannelize",
  265. /* maker */ "falkTX",
  266. /* copyright */ "GNU GPL v2+",
  267. DESCFUNCS_WITHOUTCV
  268. },
  269. // --------------------------------------------------------------------------------------------------------------------
  270. // Audio file
  271. {
  272. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  273. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  274. |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
  275. |NATIVE_PLUGIN_HAS_UI
  276. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
  277. |NATIVE_PLUGIN_REQUESTS_IDLE
  278. |NATIVE_PLUGIN_USES_TIME),
  279. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  280. /* audioIns */ 0,
  281. /* audioOuts */ 2,
  282. /* midiIns */ 0,
  283. /* midiOuts */ 0,
  284. /* paramIns */ 1,
  285. /* paramOuts */ 0,
  286. /* name */ "Audio File",
  287. /* label */ "audiofile",
  288. /* maker */ "falkTX",
  289. /* copyright */ "GNU GPL v2+",
  290. DESCFUNCS_WITHOUTCV
  291. },
  292. // --------------------------------------------------------------------------------------------------------------------
  293. // MIDI file and sequencer
  294. {
  295. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  296. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  297. |NATIVE_PLUGIN_HAS_UI
  298. |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
  299. |NATIVE_PLUGIN_REQUESTS_IDLE
  300. |NATIVE_PLUGIN_USES_STATE
  301. |NATIVE_PLUGIN_USES_TIME),
  302. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  303. /* audioIns */ 0,
  304. /* audioOuts */ 0,
  305. /* midiIns */ 0,
  306. /* midiOuts */ 1,
  307. /* paramIns */ 0,
  308. /* paramOuts */ 0,
  309. /* name */ "MIDI File",
  310. /* label */ "midifile",
  311. /* maker */ "falkTX",
  312. /* copyright */ "GNU GPL v2+",
  313. DESCFUNCS_WITHOUTCV
  314. },
  315. #ifdef HAVE_PYQT
  316. {
  317. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  318. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  319. |NATIVE_PLUGIN_HAS_UI
  320. |NATIVE_PLUGIN_USES_STATE
  321. |NATIVE_PLUGIN_USES_TIME),
  322. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  323. /* audioIns */ 0,
  324. /* audioOuts */ 0,
  325. /* midiIns */ 0,
  326. /* midiOuts */ 1,
  327. /* paramIns */ 4,
  328. /* paramOuts */ 0,
  329. /* name */ "MIDI Pattern",
  330. /* label */ "midipattern",
  331. /* maker */ "falkTX, tatch",
  332. /* copyright */ "GNU GPL v2+",
  333. DESCFUNCS_WITHOUTCV
  334. },
  335. #endif
  336. // --------------------------------------------------------------------------------------------------------------------
  337. // Carla
  338. #ifdef HAVE_PYQT
  339. {
  340. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  341. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  342. |NATIVE_PLUGIN_HAS_UI
  343. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  344. |NATIVE_PLUGIN_USES_STATE
  345. |NATIVE_PLUGIN_USES_TIME),
  346. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  347. /* audioIns */ 2,
  348. /* audioOuts */ 2,
  349. /* midiIns */ 1,
  350. /* midiOuts */ 1,
  351. /* paramIns */ 100,
  352. /* paramOuts */ 10,
  353. /* name */ "Carla-Rack",
  354. /* label */ "carlarack",
  355. /* maker */ "falkTX",
  356. /* copyright */ "GNU GPL v2+",
  357. DESCFUNCS_WITHOUTCV
  358. },
  359. {
  360. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  361. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  362. |NATIVE_PLUGIN_HAS_UI
  363. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  364. |NATIVE_PLUGIN_USES_STATE
  365. |NATIVE_PLUGIN_USES_TIME),
  366. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  367. /* audioIns */ 2,
  368. /* audioOuts */ 2,
  369. /* midiIns */ 1,
  370. /* midiOuts */ 0,
  371. /* paramIns */ 100,
  372. /* paramOuts */ 10,
  373. /* name */ "Carla-Rack (no midi out)",
  374. /* label */ "carlarack-nomidiout",
  375. /* maker */ "falkTX",
  376. /* copyright */ "GNU GPL v2+",
  377. DESCFUNCS_WITHOUTCV
  378. },
  379. {
  380. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  381. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  382. |NATIVE_PLUGIN_HAS_UI
  383. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  384. |NATIVE_PLUGIN_USES_STATE
  385. |NATIVE_PLUGIN_USES_TIME),
  386. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  387. /* audioIns */ 2,
  388. /* audioOuts */ 2,
  389. /* midiIns */ 1,
  390. /* midiOuts */ 1,
  391. /* paramIns */ 100,
  392. /* paramOuts */ 10,
  393. /* name */ "Carla-Patchbay",
  394. /* label */ "carlapatchbay",
  395. /* maker */ "falkTX",
  396. /* copyright */ "GNU GPL v2+",
  397. DESCFUNCS_WITHOUTCV
  398. },
  399. {
  400. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  401. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  402. |NATIVE_PLUGIN_HAS_UI
  403. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  404. |NATIVE_PLUGIN_USES_STATE
  405. |NATIVE_PLUGIN_USES_TIME),
  406. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  407. /* audioIns */ 3,
  408. /* audioOuts */ 2,
  409. /* midiIns */ 1,
  410. /* midiOuts */ 1,
  411. /* paramIns */ 100,
  412. /* paramOuts */ 10,
  413. /* name */ "Carla-Patchbay (sidechain)",
  414. /* label */ "carlapatchbay3s",
  415. /* maker */ "falkTX",
  416. /* copyright */ "GNU GPL v2+",
  417. DESCFUNCS_WITHOUTCV
  418. },
  419. {
  420. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  421. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  422. |NATIVE_PLUGIN_HAS_UI
  423. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  424. |NATIVE_PLUGIN_USES_STATE
  425. |NATIVE_PLUGIN_USES_TIME),
  426. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  427. /* audioIns */ 16,
  428. /* audioOuts */ 16,
  429. /* midiIns */ 1,
  430. /* midiOuts */ 1,
  431. /* paramIns */ 100,
  432. /* paramOuts */ 10,
  433. /* name */ "Carla-Patchbay (16chan)",
  434. /* label */ "carlapatchbay16",
  435. /* maker */ "falkTX",
  436. /* copyright */ "GNU GPL v2+",
  437. DESCFUNCS_WITHOUTCV
  438. },
  439. {
  440. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  441. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  442. |NATIVE_PLUGIN_HAS_UI
  443. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  444. |NATIVE_PLUGIN_USES_STATE
  445. |NATIVE_PLUGIN_USES_TIME),
  446. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  447. /* audioIns */ 32,
  448. /* audioOuts */ 32,
  449. /* midiIns */ 1,
  450. /* midiOuts */ 1,
  451. /* paramIns */ 100,
  452. /* paramOuts */ 10,
  453. /* name */ "Carla-Patchbay (32chan)",
  454. /* label */ "carlapatchbay32",
  455. /* maker */ "falkTX",
  456. /* copyright */ "GNU GPL v2+",
  457. DESCFUNCS_WITHOUTCV
  458. },
  459. {
  460. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  461. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  462. |NATIVE_PLUGIN_HAS_UI
  463. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  464. |NATIVE_PLUGIN_USES_STATE
  465. |NATIVE_PLUGIN_USES_TIME),
  466. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  467. /* audioIns */ 64,
  468. /* audioOuts */ 64,
  469. /* midiIns */ 1,
  470. /* midiOuts */ 1,
  471. /* paramIns */ 100,
  472. /* paramOuts */ 10,
  473. /* name */ "Carla-Patchbay (64chan)",
  474. /* label */ "carlapatchbay64",
  475. /* maker */ "falkTX",
  476. /* copyright */ "GNU GPL v2+",
  477. DESCFUNCS_WITHOUTCV
  478. },
  479. {
  480. /* category */ NATIVE_PLUGIN_CATEGORY_OTHER,
  481. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_SYNTH
  482. |NATIVE_PLUGIN_HAS_UI
  483. |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
  484. |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
  485. |NATIVE_PLUGIN_USES_STATE
  486. |NATIVE_PLUGIN_USES_TIME),
  487. /* supports */ static_cast<NativePluginSupports>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING),
  488. /* audioIns */ 2,
  489. /* audioOuts */ 2,
  490. /* midiIns */ 1,
  491. /* midiOuts */ 1,
  492. /* paramIns */ 100,
  493. /* paramOuts */ 10,
  494. /* name */ "Carla-Patchbay (CV)",
  495. /* label */ "carlapatchbaycv",
  496. /* maker */ "falkTX",
  497. /* copyright */ "GNU GPL v2+",
  498. DESCFUNCS_WITHCV,
  499. /* cvIns */ 5,
  500. /* cvOuts */ 5,
  501. /* bufnamefn */ nullptr,
  502. /* bufrangefn */ nullptr,
  503. /* ui_width */ 0,
  504. /* ui_height */ 0
  505. },
  506. #endif
  507. // --------------------------------------------------------------------------------------------------------------------
  508. // External-UI plugins
  509. #ifdef HAVE_PYQT
  510. {
  511. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  512. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  513. |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
  514. |NATIVE_PLUGIN_HAS_UI
  515. |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS),
  516. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  517. /* audioIns */ 2,
  518. /* audioOuts */ 0,
  519. /* midiIns */ 0,
  520. /* midiOuts */ 0,
  521. /* paramIns */ 2,
  522. /* paramOuts */ 2,
  523. /* name */ "Big Meter",
  524. /* label */ "bigmeter",
  525. /* maker */ "falkTX",
  526. /* copyright */ "GNU GPL v2+",
  527. DESCFUNCS_WITHOUTCV
  528. },
  529. {
  530. /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY,
  531. /* hints */ static_cast<NativePluginHints>(NATIVE_PLUGIN_IS_RTSAFE
  532. |NATIVE_PLUGIN_HAS_UI),
  533. /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING,
  534. /* audioIns */ 0,
  535. /* audioOuts */ 0,
  536. /* midiIns */ 0,
  537. /* midiOuts */ 0,
  538. /* paramIns */ 1,
  539. /* paramOuts */ 0,
  540. /* name */ "Notes",
  541. /* label */ "notes",
  542. /* maker */ "falkTX",
  543. /* copyright */ "GNU GPL v2+",
  544. DESCFUNCS_WITHOUTCV
  545. },
  546. #endif
  547. #ifdef HAVE_EXTERNAL_PLUGINS
  548. # define CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY
  549. # include "external/_data.cpp"
  550. #endif
  551. };
  552. #undef DESCFUNCS_WITHCV
  553. #undef DESCFUNCS_WITHOUTCV
  554. // --------------------------------------------------------------------------------------------------------------------
  555. const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count)
  556. {
  557. CARLA_SAFE_ASSERT_RETURN(count != nullptr, nullptr);
  558. *count = static_cast<uint32_t>(sizeof(sNativePluginDescriptors)/sizeof(NativePluginDescriptor));
  559. return sNativePluginDescriptors;
  560. }
  561. // --------------------------------------------------------------------------------------------------------------------