1 // SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
2 // SPDX-License-Identifier: GPL-2.0-or-later
4 #include "CarlaUtils.h"
5 #include "CarlaString.hpp"
7 #if defined(HAVE_FLUIDSYNTH) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH)
8 # include <fluidsynth.h>
11 #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
12 # pragma GCC diagnostic push
13 # pragma GCC diagnostic ignored "-Wconversion"
14 # pragma GCC diagnostic ignored "-Weffc++"
15 # pragma GCC diagnostic ignored "-Wsign-conversion"
16 # pragma GCC diagnostic ignored "-Wundef"
17 # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
21 # include "rtaudio/RtAudio.h"
22 # include "rtmidi/RtMidi.h"
25 #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
26 # pragma GCC diagnostic pop
29 #include "water/files/File.h"
31 // -------------------------------------------------------------------------------------------------------------------
33 const char* carla_get_complete_license_text()
35 carla_debug("carla_get_complete_license_text()");
37 static CarlaString retText
;
39 if (retText
.isEmpty())
42 "<p>This current Carla build is using the following features and 3rd-party code:</p>"
46 "<li>LADSPA plugin support</li>"
47 "<li>DSSI plugin support</li>"
48 "<li>LV2 plugin support</li>"
49 "<li>VST2 plugin support (using VeSTige header by Javier Serrano Polo)</li>"
50 "<li>VST3 plugin support (using Travesty header files)</li>"
52 "<li>AU plugin support (discovery only)</li>"
55 "<li>JSFX plugin support (using ysfx)</li>"
58 // Sample kit libraries
59 #if defined(HAVE_FLUIDSYNTH) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH)
60 "<li>FluidSynth library v" FLUIDSYNTH_VERSION
" for SF2/3 support</li>"
62 "<li>SFZero module for SFZ support</li>"
65 "<li>base64 utilities based on code by Ren\u00E9 Nyffenegger</li>"
66 "<li>dr_mp3 for mp3 file support</li>"
68 "<li>liblo library for OSC support</li>"
71 "<li>libsndfile library for base audio file support</li>"
73 "<li>rtmempool library by Nedko Arnaudov</li>"
74 "<li>serd, sord, sratom and lilv libraries for LV2 discovery</li>"
76 "<li>RtAudio v" RTAUDIO_VERSION
" and RtMidi v" RTMIDI_VERSION
" for native Audio and MIDI support</li>"
78 "<li>zita-resampler for audio file sample rate resampling</li>"
81 "<li>MIDI Sequencer UI code by Perry Nguyen</li>"
84 #ifdef HAVE_EXTERNAL_PLUGINS
85 "<li>Nekobi plugin code based on nekobee by Sean Bolton and others</li>"
86 "<li>VectorJuice and WobbleJuice plugin code by Andre Sklenar</li>"
88 "<li>ZynAddSubFX plugin code by Mark McCurry and Nasca Octavian Paul</li>"
99 const char* const* carla_get_supported_file_extensions()
101 carla_debug("carla_get_supported_file_extensions()");
103 // NOTE: please keep in sync with CarlaEngine::loadFile!!
104 static const char* const extensions
[] = {
108 // plugin files and resources
109 #ifdef HAVE_FLUIDSYNTH
112 #ifdef HAVE_FLUIDSYNTH_INSTPATCH
129 "aif", "aifc", "aiff", "au", "bwf", "flac", "htk", "iff", "mat4", "mat5", "oga", "ogg", "opus",
130 "paf", "pvf", "pvf5", "sd2", "sf", "snd", "svx", "vcc", "w64", "wav", "xi",
133 "3g2", "3gp", "aac", "ac3", "amr", "ape", "mp2", "mp3", "mpc", "wma",
135 // FFmpeg without sndfile
136 "flac", "oga", "ogg", "w64", "wav",
161 const char* const* carla_get_supported_features()
163 carla_debug("carla_get_supported_features()");
165 static const char* const features
[] = {
166 #ifdef HAVE_FLUIDSYNTH
169 #ifdef HAVE_FLUIDSYNTH_INSTPATCH
178 #if defined(HAVE_LIBMAGIC) || defined(CARLA_OS_WIN)
193 // -------------------------------------------------------------------------------------------------------------------
195 const char* carla_get_library_filename()
197 carla_debug("carla_get_library_filename()");
199 static CarlaString ret
;
204 ret
= File(File::getSpecialLocation(File::currentExecutableFile
)).getFullPathName().toRawUTF8();
210 const char* carla_get_library_folder()
212 carla_debug("carla_get_library_folder()");
214 static CarlaString ret
;
219 ret
= File(File::getSpecialLocation(File::currentExecutableFile
).getParentDirectory()).getFullPathName().toRawUTF8();
225 // -------------------------------------------------------------------------------------------------------------------