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.

576 lines
19KB

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