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.

552 lines
19KB

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