3 * Copyright (C) 2012-2020 Filipe Coelho <falktx@falktx.com>
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.
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.
15 * For a full copy of the GNU General Public License see the doc/GPL.txt file.
18 #include "CarlaNative.h"
19 #include "CarlaMIDI.h"
20 #include "CarlaUtils.hpp"
22 #undef DESCFUNCS_WITHCV
23 #undef DESCFUNCS_WITHOUTCV
24 #define DESCFUNCS_WITHCV \
25 nullptr, nullptr, nullptr, nullptr, nullptr, \
26 nullptr, nullptr, nullptr, nullptr, nullptr, \
27 nullptr, nullptr, nullptr, nullptr, nullptr, \
28 nullptr, nullptr, nullptr, nullptr, nullptr, \
30 #define DESCFUNCS_WITHOUTCV \
31 DESCFUNCS_WITHCV, 0, 0, nullptr, nullptr, 0, 0
33 static const NativePluginDescriptor sNativePluginDescriptors
[] = {
35 // --------------------------------------------------------------------------------------------------------------------
39 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
40 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
41 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
48 /* name */ "Audio Gain (Mono)",
49 /* label */ "audiogain",
51 /* copyright */ "GNU GPL v2+",
55 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
56 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
57 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
64 /* name */ "Audio Gain (Stereo)",
65 /* label */ "audiogain_s",
67 /* copyright */ "GNU GPL v2+",
71 /* category */ NATIVE_PLUGIN_CATEGORY_NONE
,
72 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
73 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
83 /* copyright */ "GNU GPL v2+",
87 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
88 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
89 |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
),
90 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
97 /* name */ "CV to Audio",
98 /* label */ "cv2audio",
100 /* copyright */ "GNU GPL v2+",
104 /* bufnamefn */ nullptr,
105 /* bufrangefn */ nullptr,
110 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
111 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
112 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
121 /* maker */ "falkTX",
122 /* copyright */ "GNU GPL v2+",
126 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
127 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
128 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
135 /* name */ "MIDI Channel Filter",
136 /* label */ "midichanfilter",
137 /* maker */ "falkTX",
138 /* copyright */ "GNU GPL v2+",
142 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
143 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
144 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
151 /* name */ "MIDI Channel A/B",
152 /* label */ "midichanab",
153 /* maker */ "Milk Brewster",
154 /* copyright */ "GNU GPL v2+",
158 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
159 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
160 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
167 /* name */ "MIDI Gain",
168 /* label */ "midigain",
169 /* maker */ "falkTX",
170 /* copyright */ "GNU GPL v2+",
174 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
175 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
176 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
179 /* midiIns */ MAX_MIDI_CHANNELS
,
183 /* name */ "MIDI Join",
184 /* label */ "midijoin",
185 /* maker */ "falkTX",
186 /* copyright */ "GNU GPL v2+",
190 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
191 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
192 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
196 /* midiOuts */ MAX_MIDI_CHANNELS
,
199 /* name */ "MIDI Split",
200 /* label */ "midisplit",
201 /* maker */ "falkTX",
202 /* copyright */ "GNU GPL v2+",
206 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
207 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
208 |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
),
209 /* supports */ NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF
,
216 /* name */ "MIDI to CV",
217 /* label */ "midi2cv",
218 /* maker */ "falkTX, Bram Giesen, Jarno Verheesen",
219 /* copyright */ "GNU GPL v2+",
223 /* bufnamefn */ nullptr,
224 /* bufrangefn */ nullptr,
229 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
230 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
231 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
238 /* name */ "MIDI Through",
239 /* label */ "midithrough",
240 /* maker */ "falkTX",
241 /* copyright */ "GNU GPL v2+",
245 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
246 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
247 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
254 /* name */ "MIDI Transpose",
255 /* label */ "miditranspose",
256 /* maker */ "falkTX",
257 /* copyright */ "GNU GPL v2+",
261 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
262 /* hints */ NATIVE_PLUGIN_IS_RTSAFE
,
263 /* supports */ NATIVE_PLUGIN_SUPPORTS_EVERYTHING
,
270 /* name */ "MIDI Channelize",
271 /* label */ "midichannelize",
272 /* maker */ "falkTX",
273 /* copyright */ "GNU GPL v2+",
277 // --------------------------------------------------------------------------------------------------------------------
281 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
282 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
283 |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
284 |NATIVE_PLUGIN_HAS_UI
285 |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
286 |NATIVE_PLUGIN_REQUESTS_IDLE
287 |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
288 |NATIVE_PLUGIN_USES_TIME
),
289 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
296 /* name */ "Audio File",
297 /* label */ "audiofile",
298 /* maker */ "falkTX",
299 /* copyright */ "GNU GPL v2+",
303 /* bufnamefn */ nullptr,
304 /* bufrangefn */ nullptr,
309 // --------------------------------------------------------------------------------------------------------------------
310 // MIDI file and sequencer
313 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
314 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
315 |NATIVE_PLUGIN_HAS_UI
316 |NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
317 |NATIVE_PLUGIN_REQUESTS_IDLE
318 |NATIVE_PLUGIN_USES_STATE
319 |NATIVE_PLUGIN_USES_TIME
),
320 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
327 /* name */ "MIDI File",
328 /* label */ "midifile",
329 /* maker */ "falkTX",
330 /* copyright */ "GNU GPL v2+",
335 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
336 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
337 |NATIVE_PLUGIN_HAS_UI
338 |NATIVE_PLUGIN_USES_STATE
339 |NATIVE_PLUGIN_USES_TIME
),
340 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
347 /* name */ "MIDI Pattern",
348 /* label */ "midipattern",
349 /* maker */ "falkTX, tatch",
350 /* copyright */ "GNU GPL v2+",
355 // --------------------------------------------------------------------------------------------------------------------
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
),
373 /* name */ "Carla-Rack",
374 /* label */ "carlarack",
375 /* maker */ "falkTX",
376 /* copyright */ "GNU GPL v2+",
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
),
393 /* name */ "Carla-Rack (no midi out)",
394 /* label */ "carlarack-nomidiout",
395 /* maker */ "falkTX",
396 /* copyright */ "GNU GPL v2+",
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
),
413 /* name */ "Carla-Patchbay",
414 /* label */ "carlapatchbay",
415 /* maker */ "falkTX",
416 /* copyright */ "GNU GPL v2+",
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
),
433 /* name */ "Carla-Patchbay (sidechain)",
434 /* label */ "carlapatchbay3s",
435 /* maker */ "falkTX",
436 /* copyright */ "GNU GPL v2+",
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
),
453 /* name */ "Carla-Patchbay (16chan)",
454 /* label */ "carlapatchbay16",
455 /* maker */ "falkTX",
456 /* copyright */ "GNU GPL v2+",
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
),
473 /* name */ "Carla-Patchbay (32chan)",
474 /* label */ "carlapatchbay32",
475 /* maker */ "falkTX",
476 /* copyright */ "GNU GPL v2+",
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_STATE
485 |NATIVE_PLUGIN_USES_TIME
),
486 /* supports */ static_cast<NativePluginSupports
>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING
),
493 /* name */ "Carla-Patchbay (64chan)",
494 /* label */ "carlapatchbay64",
495 /* maker */ "falkTX",
496 /* copyright */ "GNU GPL v2+",
500 /* category */ NATIVE_PLUGIN_CATEGORY_OTHER
,
501 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_SYNTH
502 |NATIVE_PLUGIN_HAS_UI
503 |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD
504 |NATIVE_PLUGIN_USES_CONTROL_VOLTAGE
505 |NATIVE_PLUGIN_USES_STATE
506 |NATIVE_PLUGIN_USES_TIME
),
507 /* supports */ static_cast<NativePluginSupports
>(NATIVE_PLUGIN_SUPPORTS_EVERYTHING
),
514 /* name */ "Carla-Patchbay (CV)",
515 /* label */ "carlapatchbaycv",
516 /* maker */ "falkTX",
517 /* copyright */ "GNU GPL v2+",
521 /* bufnamefn */ nullptr,
522 /* bufrangefn */ nullptr,
528 // --------------------------------------------------------------------------------------------------------------------
529 // External-UI plugins
533 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
534 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
535 |NATIVE_PLUGIN_HAS_INLINE_DISPLAY
536 |NATIVE_PLUGIN_HAS_UI
537 |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS
),
538 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
545 /* name */ "Big Meter",
546 /* label */ "bigmeter",
547 /* maker */ "falkTX",
548 /* copyright */ "GNU GPL v2+",
552 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
553 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
554 |NATIVE_PLUGIN_HAS_UI
),
555 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
564 /* maker */ "falkTX",
565 /* copyright */ "GNU GPL v2+",
569 /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY
,
570 /* hints */ static_cast<NativePluginHints
>(NATIVE_PLUGIN_IS_RTSAFE
571 |NATIVE_PLUGIN_HAS_UI
),
572 /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING
,
579 /* name */ "XY Controller",
580 /* label */ "xycontroller",
581 /* maker */ "falkTX",
582 /* copyright */ "GNU GPL v2+",
587 #ifdef HAVE_EXTERNAL_PLUGINS
588 # define CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY
589 # include "external/_data.cpp"
594 #undef DESCFUNCS_WITHCV
595 #undef DESCFUNCS_WITHOUTCV
597 // --------------------------------------------------------------------------------------------------------------------
599 const NativePluginDescriptor
* carla_get_native_plugins_data(uint32_t* count
)
601 CARLA_SAFE_ASSERT_RETURN(count
!= nullptr, nullptr);
603 *count
= static_cast<uint32_t>(sizeof(sNativePluginDescriptors
)/sizeof(NativePluginDescriptor
));
604 return sNativePluginDescriptors
;
607 // --------------------------------------------------------------------------------------------------------------------