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.

610 lines
21KB

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