diff --git a/Makefile b/Makefile index a2d862cc3..c4c756545 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,7 @@ # Created by falkTX # +CWD=source include source/Makefile.mk # ---------------------------------------------------------------------------------------------------------------------------- @@ -50,7 +51,7 @@ BIN: backend discovery bridges-plugin bridges-ui interposer libjack plugin theme # ---------------------------------------------------------------------------------------------------------------------------- -ALL_LIBS = $(MODULEDIR)/carla_engine.a +ALL_LIBS += $(MODULEDIR)/carla_engine.a ALL_LIBS += $(MODULEDIR)/carla_engine_plugin.a ALL_LIBS += $(MODULEDIR)/carla_plugin.a ALL_LIBS += $(MODULEDIR)/jackbridge.a @@ -59,10 +60,6 @@ ALL_LIBS += $(MODULEDIR)/lilv.a ALL_LIBS += $(MODULEDIR)/rtmempool.a ALL_LIBS += $(MODULEDIR)/water.a -ifeq ($(HAVE_DGL),true) -ALL_LIBS += $(MODULEDIR)/dgl.a -endif - ifeq ($(HAVE_HYLIA),true) ALL_LIBS += $(MODULEDIR)/hylia.a endif @@ -782,7 +779,7 @@ else FEV="Qt5" endif -features: +features_print: @echo "$(tS)---> Main features $(tE)" ifeq ($(HAVE_PYQT),true) @echo "Front-End: $(ANS_YES)(Using $(FEV))" @@ -944,38 +941,26 @@ endif @echo "" @echo "$(tS)---> Internal plugins: $(tE)" + @echo "Basic Plugins: $(ANS_YES)" ifneq ($(WIN32),true) - @echo "Carla-Patchbay: $(ANS_YES)" - @echo "Carla-Rack: $(ANS_YES)" -else - @echo "Carla-Patchbay: $(ANS_NO) $(mS)Not available for Windows$(mE)" - @echo "Carla-Rack: $(ANS_NO) $(mS)Not available for Windows$(mE)" -endif -ifeq ($(HAVE_DGL),true) - @echo "DISTRHO Plugins:$(ANS_YES)(with UI)" -ifeq ($(HAVE_PROJECTM),true) - @echo "DISTRHO ProM: $(ANS_YES)" + @echo "Carla-Patchbay: $(ANS_YES)" + @echo "Carla-Rack: $(ANS_YES)" else - @echo "DISTRHO ProM: $(ANS_NO) (missing libprojectM)" + @echo "Carla-Patchbay: $(ANS_NO) $(mS)Not available for Windows$(mE)" + @echo "Carla-Rack: $(ANS_NO) $(mS)Not available for Windows$(mE)" endif +ifeq ($(EXTERNAL_PLUGINS),true) + @echo "External Plugins:$(ANS_YES)" else - @echo "DISTRHO Plugins:$(ANS_YES)(without UI)" - @echo "DISTRHO ProM: $(ANS_NO) (missing OpenGL)" + @echo "External Plugins:$(ANS_NO)" endif -ifeq ($(HAVE_ZYN_DEPS),true) -ifeq ($(HAVE_ZYN_UI_DEPS),true) -ifeq ($(HAVE_NTK),true) - @echo "ZynAddSubFX: $(ANS_YES)(with NTK UI)" -else - @echo "ZynAddSubFX: $(ANS_YES)(with FLTK UI)" -endif -else - @echo "ZynAddSubFX: $(ANS_YES)(without UI) $(mS)FLTK or NTK missing$(mE)" -endif -else - @echo "ZynAddSubFX: $(ANS_NO) $(mS)fftw3, mxml or zlib missing$(mE)" + +ifneq ($(EXTERNAL_PLUGINS),true) +features_print_external_plugins: endif +features: features_print features_print_external_plugins + # ---------------------------------------------------------------------------------------------------------------------------- .FORCE: diff --git a/README.md b/README.md index 454d561af..e3b42a3d5 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ It's open source and licensed under the GNU General Public License, version 2 or Features --------- -* LADSPA, DSSI, LV2, VST2, VST3 and AU plugin formats +* LADSPA, DSSI, LV2 and VST plugin formats * GIG, SF2 and SFZ sound banks * Internal audio and midi file player * Automation of plugin parameters via MIDI CC diff --git a/source/Makefile.mk b/source/Makefile.mk index cf3d727a1..ded03a2ce 100644 --- a/source/Makefile.mk +++ b/source/Makefile.mk @@ -7,6 +7,9 @@ # -------------------------------------------------------------- # Modify to enable/disable specific features +# Build external plugins +EXTERNAL_PLUGINS = true + # Enable experimental plugins, don't complain if the build fails when using this! EXPERIMENTAL_PLUGINS = false @@ -136,7 +139,6 @@ CFLAGS += -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wwrite- CXXFLAGS += -Wc++0x-compat -Wc++11-compat -Weffc++ -Wnon-virtual-dtor -Woverloaded-virtual -Wzero-as-null-pointer-constant ifeq ($(LINUX),true) BASE_FLAGS += -isystem /opt/kxstudio/include -CXXFLAGS += -isystem /opt/kxstudio/include/ntk CXXFLAGS += -isystem /usr/include/glib-2.0 CXXFLAGS += -isystem /usr/include/glib-2.0/glib CXXFLAGS += -isystem /usr/include/gtk-2.0 @@ -163,10 +165,7 @@ endif # -------------------------------------------------------------- # Check for optional libs (required by backend or bridges) -ifeq ($(MACOS_OR_WIN32),true) -HAVE_DGL = true -else -HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true) +ifneq ($(MACOS_OR_WIN32),true) HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && echo true) HAVE_GTK3 = $(shell pkg-config --exists gtk+-3.0 && echo true) HAVE_PULSEAUDIO = $(shell pkg-config --exists libpulse-simple && echo true) @@ -187,8 +186,6 @@ endif HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true) -HAVE_NTK = $(shell pkg-config --exists ntk ntk_images && echo true) -HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) # -------------------------------------------------------------- # Check for optional libs (special non-pkgconfig unix tests) @@ -198,16 +195,6 @@ ifeq ($(UNIX),true) # libmagic doesn't have a pkg-config file, so we need to call the compiler to test it HAVE_LIBMAGIC = $(shell echo '\#include ' | $(CC) $(CFLAGS) -x c -w -c - -o .libmagic-tmp 2>/dev/null && echo true) -# fltk doesn't have a pkg-config file but has fltk-config instead. -# Also, don't try looking for it if we already have NTK. -ifneq ($(HAVE_NTK),true) -ifeq ($(shell which fltk-config 1>/dev/null 2>/dev/null && echo true),true) -ifeq ($(shell which fluid 1>/dev/null 2>/dev/null && echo true),true) -HAVE_FLTK = true -endif -endif -endif - endif # -------------------------------------------------------------- @@ -290,10 +277,6 @@ ifeq ($(HAVE_PYQT),true) BASE_FLAGS += -DHAVE_PYQT endif -ifeq ($(HAVE_DGL),true) -BASE_FLAGS += -DHAVE_DGL -endif - ifeq ($(HAVE_FLUIDSYNTH),true) BASE_FLAGS += -DHAVE_FLUIDSYNTH endif @@ -314,10 +297,6 @@ ifeq ($(HAVE_LINUXSAMPLER),true) BASE_FLAGS += -DHAVE_LINUXSAMPLER endif -ifeq ($(HAVE_PROJECTM),true) -BASE_FLAGS += -DHAVE_PROJECTM -endif - ifeq ($(HAVE_X11),true) BASE_FLAGS += -DHAVE_X11 endif @@ -346,11 +325,6 @@ LINUXSAMPLER_LIBS += -lws2_32 endif endif -ifeq ($(HAVE_PROJECTM),true) -PROJECTM_FLAGS = $(shell pkg-config --cflags libprojectM) -PROJECTM_LIBS = $(shell pkg-config --libs libprojectM) -endif - ifeq ($(HAVE_X11),true) X11_FLAGS = $(shell pkg-config --cflags x11) X11_LIBS = $(shell pkg-config --libs x11) @@ -384,10 +358,6 @@ HYLIA_FLAGS = -DLINK_PLATFORM_LINUX=1 JACKBRIDGE_LIBS = -ldl -lpthread -lrt LILV_LIBS = -ldl -lm -lrt WATER_LIBS = -ldl -lpthread -lrt -ifeq ($(HAVE_DGL),true) -DGL_FLAGS = $(shell pkg-config --cflags gl x11) -DGL_LIBS = $(shell pkg-config --libs gl x11) -endif ifeq ($(HAVE_ALSA),true) RTAUDIO_FLAGS += $(shell pkg-config --cflags alsa) -D__LINUX_ALSA__ RTAUDIO_LIBS += $(shell pkg-config --libs alsa) -lpthread @@ -401,7 +371,6 @@ endif endif ifeq ($(MACOS),true) -DGL_LIBS = -framework OpenGL -framework Cocoa HYLIA_FLAGS = -DLINK_PLATFORM_MACOSX=1 JACKBRIDGE_LIBS = -ldl -lpthread LILV_LIBS = -ldl -lm @@ -411,7 +380,6 @@ WATER_LIBS = -framework AppKit endif ifeq ($(WIN32),true) -DGL_LIBS = -lopengl32 -lgdi32 HYLIA_FLAGS = -DLINK_PLATFORM_WINDOWS=1 JACKBRIDGE_LIBS = -lpthread LILV_LIBS = -lm @@ -421,38 +389,6 @@ RTMIDI_FLAGS += -D__WINDOWS_MM__ WATER_LIBS = -luuid -lwsock32 -lwininet -lversion -lole32 -lws2_32 -loleaut32 -limm32 -lcomdlg32 -lshlwapi -lrpcrt4 -lwinmm endif -# -------------------------------------------------------------- -# Set libs stuff (part 3) - -HAVE_ZYN_DEPS = $(shell pkg-config --exists liblo fftw3 mxml zlib && echo true) -ifeq ($(HAVE_FLTK),true) -HAVE_ZYN_UI_DEPS = true -endif -ifeq ($(HAVE_NTK),true) -HAVE_ZYN_UI_DEPS = true -endif - -ifeq ($(HAVE_DGL),true) -NATIVE_PLUGINS_LIBS += $(DGL_LIBS) -ifeq ($(HAVE_PROJECTM),true) -NATIVE_PLUGINS_LIBS += $(PROJECTM_LIBS) -endif -endif - -ifeq ($(EXPERIMENTAL_PLUGINS),true) -BASE_FLAGS += -DHAVE_EXPERIMENTAL_PLUGINS -NATIVE_PLUGINS_LIBS += -lclthreads -lzita-convolver -lzita-resampler -NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs fftw3f) -endif - -ifeq ($(HAVE_ZYN_DEPS),true) -BASE_FLAGS += -DHAVE_ZYN_DEPS -NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs liblo fftw3 mxml zlib) -ifeq ($(HAVE_ZYN_UI_DEPS),true) -BASE_FLAGS += -DHAVE_ZYN_UI_DEPS -endif -endif - # -------------------------------------------------------------- # Set app extension @@ -493,3 +429,10 @@ SHARED = -shared endif # -------------------------------------------------------------- + +ifeq ($(EXTERNAL_PLUGINS),true) +BASE_FLAGS += -DHAVE_EXTERNAL_PLUGINS +include $(CWD)/native-plugins/external/Makefile.mk +endif + +# -------------------------------------------------------------- diff --git a/source/modules/Makefile.mk b/source/modules/Makefile.mk index 9813ca337..62d5245cf 100644 --- a/source/modules/Makefile.mk +++ b/source/modules/Makefile.mk @@ -29,6 +29,5 @@ endif BUILD_C_FLAGS += -I. -I$(CWD)/includes BUILD_CXX_FLAGS += -I. -I$(CWD)/includes -I$(CWD)/utils -BUILD_CXX_FLAGS += -DJUCE_APP_CONFIG_HEADER='' # ---------------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/Makefile b/source/native-plugins/Makefile index cf46140ab..0bcdd264a 100644 --- a/source/native-plugins/Makefile +++ b/source/native-plugins/Makefile @@ -5,78 +5,29 @@ # CWD=.. +CWDE=.. +EXTERNAL=external/ MODULENAME=native-plugins include ../modules/Makefile.mk -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- BUILD_C_FLAGS += -I.. -BUILD_CXX_FLAGS += -I.. -isystem $(CWD)/modules -I$(CWD)/modules/distrho +BUILD_CXX_FLAGS += -I.. -I$(CWD)/modules -# ---------------------------------------------------------------------------------------------------------------------------- -# Flags for Zita UIs - -ifeq ($(EXPERIMENTAL_PLUGINS),true) -ZITA_DSP_CXX_FLAGS = $(BUILD_CXX_FLAGS) -Wno-unused-parameter -ZITA_DSP_CXX_FLAGS += $(shell pkg-config --cflags fftw3f) -ZITA_UI_CXX_FLAGS = $(BUILD_CXX_FLAGS) -Wno-ignored-qualifiers -Wno-unused-parameter -Wno-unused-result -ZITA_UI_CXX_FLAGS += $(shell pkg-config --cflags cairo libpng12 freetype2 x11 xft zlib) -ZITA_UI_LINK_FLAGS = $(LINK_FLAGS) -lclxclient -lclthreads -ZITA_UI_LINK_FLAGS += $(shell pkg-config --libs cairo libpng12 freetype2 x11 xft zlib) -ZITA_UI_LINK_FLAGS += -ldl -lpthread -lrt -endif # EXPERIMENTAL_PLUGINS - -# ---------------------------------------------------------------------------------------------------------------------------- -# Flags for ZynAddSubFX - -ifeq ($(HAVE_ZYN_DEPS),true) -ZYN_CXX_FLAGS = $(BUILD_CXX_FLAGS) -Izynaddsubfx -Izynaddsubfx/rtosc -ZYN_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml zlib) -ZYN_LD_FLAGS = $(LINK_FLAGS) -ZYN_LD_FLAGS += $(shell pkg-config --libs liblo) -ZYN_LD_FLAGS += -ldl -lpthread -ifneq ($(WIN32),true) -ZYN_CXX_FLAGS += -DHAVE_ASYNC -endif -ifeq ($(HAVE_X11),true) -ZYN_CXX_FLAGS += $(shell pkg-config --cflags x11) -ZYN_LD_FLAGS += $(shell pkg-config --libs x11) -endif -ifeq ($(HAVE_ZYN_UI_DEPS),true) -ifeq ($(HAVE_NTK),true) -FLUID = ntk-fluid -ZYN_CXX_FLAGS += -DNTK_GUI -ZYN_CXX_FLAGS += $(shell pkg-config --cflags ntk_images ntk) -ZYN_LD_FLAGS += $(shell pkg-config --libs ntk_images ntk) -else # HAVE_NTK -FLUID = fluid -ZYN_CXX_FLAGS += -DFLTK_GUI -ZYN_CXX_FLAGS += $(shell fltk-config --use-images --cxxflags) -ZYN_LD_FLAGS += $(shell fltk-config --use-images --ldflags) -endif # HAVE_NTK -ifeq ($(LINUX),true) -ZYN_LD_FLAGS += -lrt -else -ZYN_LD_FLAGS += $(MODULEDIR)/water.a -endif -else # HAVE_ZYN_UI_DEPS -ZYN_CXX_FLAGS += -DNO_UI -endif # HAVE_ZYN_UI_DEPS -endif # HAVE_ZYN_DEPS - -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Set targets TARGETS = $(MODULEDIR)/$(MODULENAME).a -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Set objects OBJS = \ $(OBJDIR)/_all.c.o \ $(OBJDIR)/_data.cpp.o -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Simple plugins OBJS += \ @@ -96,99 +47,18 @@ OBJS += \ $(OBJDIR)/midi-pattern.cpp.o \ $(OBJDIR)/notes.cpp.o -# ---------------------------------------------------------------------------------------------------------------------------- -# DISTRHO plugins - -OBJS += \ - $(OBJDIR)/distrho-3bandeq.cpp.o \ - $(OBJDIR)/distrho-3bandsplitter.cpp.o \ - $(OBJDIR)/distrho-kars.cpp.o \ - $(OBJDIR)/distrho-nekobi.cpp.o \ - $(OBJDIR)/distrho-pingpongpan.cpp.o - -ifeq ($(HAVE_DGL),true) -ifeq ($(HAVE_PROJECTM),true) -OBJS += $(OBJDIR)/distrho-prom.cpp.o -endif -endif - -# ---------------------------------------------------------------------------------------------------------------------------- -# DISTRHO plugins (Juice) - -OBJS += \ - $(OBJDIR)/distrho-vectorjuice.cpp.o \ - $(OBJDIR)/distrho-wobblejuice.cpp.o - -# ---------------------------------------------------------------------------------------------------------------------------- -# ZynAddSubFX - -ifeq ($(HAVE_ZYN_DEPS),true) -OBJS += \ - $(OBJDIR)/zynaddsubfx-fx.cpp.o \ - $(OBJDIR)/zynaddsubfx-synth.cpp.o \ - $(OBJDIR)/zynaddsubfx-src.cpp.o - -ifeq ($(HAVE_ZYN_UI_DEPS),true) -TARGETS += resources/zynaddsubfx-ui$(APP_EXT) - -ZYN_UI_FILES_CPP = \ - zynaddsubfx/UI/ADnoteUI.cpp \ - zynaddsubfx/UI/BankUI.cpp \ - zynaddsubfx/UI/ConfigUI.cpp \ - zynaddsubfx/UI/EffUI.cpp \ - zynaddsubfx/UI/EnvelopeUI.cpp \ - zynaddsubfx/UI/FilterUI.cpp \ - zynaddsubfx/UI/LFOUI.cpp \ - zynaddsubfx/UI/MasterUI.cpp \ - zynaddsubfx/UI/MicrotonalUI.cpp \ - zynaddsubfx/UI/OscilGenUI.cpp \ - zynaddsubfx/UI/PADnoteUI.cpp \ - zynaddsubfx/UI/PartUI.cpp \ - zynaddsubfx/UI/PresetsUI.cpp \ - zynaddsubfx/UI/ResonanceUI.cpp \ - zynaddsubfx/UI/SUBnoteUI.cpp \ - zynaddsubfx/UI/VirKeyboard.cpp - -ZYN_UI_FILES_H = \ - zynaddsubfx/UI/ADnoteUI.h \ - zynaddsubfx/UI/BankUI.h \ - zynaddsubfx/UI/ConfigUI.h \ - zynaddsubfx/UI/EffUI.h \ - zynaddsubfx/UI/EnvelopeUI.h \ - zynaddsubfx/UI/FilterUI.h \ - zynaddsubfx/UI/LFOUI.h \ - zynaddsubfx/UI/MasterUI.h \ - zynaddsubfx/UI/MicrotonalUI.h \ - zynaddsubfx/UI/OscilGenUI.h \ - zynaddsubfx/UI/PADnoteUI.h \ - zynaddsubfx/UI/PartUI.h \ - zynaddsubfx/UI/PresetsUI.h \ - zynaddsubfx/UI/ResonanceUI.h \ - zynaddsubfx/UI/SUBnoteUI.h \ - zynaddsubfx/UI/VirKeyboard.h -endif -endif - -# ---------------------------------------------------------------------------------------------------------------------------- -# Experimental plugins - -ifeq ($(EXPERIMENTAL_PLUGINS),true) -OBJS += \ - $(OBJDIR)/zita-at1.cpp.o \ - $(OBJDIR)/zita-bls1.cpp.o \ - $(OBJDIR)/zita-rev1.cpp.o +# --------------------------------------------------------------------------------------------------------------------- +# Include external plugins, if present -TARGETS += \ - resources/at1-ui$(APP_EXT) \ - resources/bls1-ui$(APP_EXT) \ - resources/rev1-ui$(APP_EXT) +ifeq ($(EXTERNAL_PLUGINS),true) +include external/Makefile endif -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- all: $(TARGETS) -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- clean: rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a $(ZYN_UI_FILES_H) $(ZYN_UI_FILES_CPP) $(TARGETS) @@ -196,168 +66,28 @@ clean: debug: $(MAKE) DEBUG=true -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- $(MODULEDIR)/$(MODULENAME).a: $(OBJS) -@mkdir -p $(MODULEDIR) @echo "Creating $(MODULENAME).a" @rm -f $@ - @$(AR) crs $@ $^ + $(AR) crs $@ $^ -resources/at1-ui$(APP_EXT): $(OBJDIR)/zita-at1-ui.cpp.o - -@mkdir -p $(OBJDIR) - @echo "Linking at1-ui" - @$(CXX) $^ $(ZITA_UI_LINK_FLAGS) -o $@ - -resources/bls1-ui$(APP_EXT): $(OBJDIR)/zita-bls1-ui.cpp.o - -@mkdir -p $(OBJDIR) - @echo "Linking bls1-ui" - @$(CXX) $^ $(ZITA_UI_LINK_FLAGS) -o $@ - -resources/rev1-ui$(APP_EXT): $(OBJDIR)/zita-rev1-ui.cpp.o - -@mkdir -p $(OBJDIR) - @echo "Linking rev1-ui" - @$(CXX) $^ $(ZITA_UI_LINK_FLAGS) -o $@ - -resources/zynaddsubfx-ui$(APP_EXT): $(OBJDIR)/zynaddsubfx-ui.cpp.o - -@mkdir -p $(OBJDIR) - @echo "Linking zynaddsubfx-ui" - @$(CXX) $^ $(ZYN_LD_FLAGS) -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- - -zynaddsubfx/UI/%.cpp: zynaddsubfx/UI/%.fl - @echo "Generating $@|h" - @$(FLUID) -c -o zynaddsubfx/UI/$*.cpp -h zynaddsubfx/UI/$*.h $< - -zynaddsubfx/UI/%.h: zynaddsubfx/UI/%.fl - @echo "Generating $@|cpp" - @$(FLUID) -c -o zynaddsubfx/UI/$*.cpp -h zynaddsubfx/UI/$*.h $< - -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- $(OBJDIR)/%.c.o: %.c -@mkdir -p $(OBJDIR) @echo "Compiling $<" @$(CC) $< $(BUILD_C_FLAGS) -c -o $@ -# ---------------------------------------------------------------------------------------------------------------------------- - -$(OBJDIR)/_data.cpp.o: _data.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/audio-file.cpp.o: audio-file.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/bigmeter.cpp.o: bigmeter.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/midi-file.cpp.o: midi-file.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/midi-pattern.cpp.o: midi-pattern.cpp +$(OBJDIR)/%.cpp.o: %.cpp -@mkdir -p $(OBJDIR) @echo "Compiling $<" @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ -$(OBJDIR)/notes.cpp.o: notes.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- - -$(OBJDIR)/distrho-3bandeq.cpp.o: distrho-3bandeq.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_3BandEQ -Idistrho-3bandeq -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -$(OBJDIR)/distrho-3bandsplitter.cpp.o: distrho-3bandsplitter.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_3BandSplitter -Idistrho-3bandsplitter -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -$(OBJDIR)/distrho-kars.cpp.o: distrho-kars.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_Kars -Idistrho-kars -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -$(OBJDIR)/distrho-nekobi.cpp.o: distrho-nekobi.cpp - -@mkdir -p $(OBJDIR) - # FIXME - fix nekobi strict warnings - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_Nekobi -Idistrho-nekobi -I$(CWD)/modules/dgl -w -c -o $@ - -$(OBJDIR)/distrho-pingpongpan.cpp.o: distrho-pingpongpan.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_PingPongPan -Idistrho-pingpongpan -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -$(OBJDIR)/distrho-prom.cpp.o: distrho-prom.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) $(PROJECTM_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_ProM -Idistrho-prom -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- - -$(OBJDIR)/distrho-vectorjuice.cpp.o: distrho-vectorjuice.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_VectorJuice -Idistrho-vectorjuice -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -$(OBJDIR)/distrho-wobblejuice.cpp.o: distrho-wobblejuice.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_NAMESPACE=DISTRHO_WobbleJuice -Idistrho-wobblejuice -I$(CWD)/modules/dgl -Wno-effc++ -c -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- - -$(OBJDIR)/zynaddsubfx-fx.cpp.o: zynaddsubfx-fx.cpp $(ZYN_UI_FILES_H) - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZYN_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/zynaddsubfx-synth.cpp.o: zynaddsubfx-synth.cpp $(ZYN_UI_FILES_H) - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZYN_CXX_FLAGS) -Wno-unused-parameter -c -o $@ - -$(OBJDIR)/zynaddsubfx-src.cpp.o: zynaddsubfx-src.cpp $(ZYN_UI_FILES_H) - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZYN_CXX_FLAGS) -Wno-unused-parameter -Wno-unused-variable -c -o $@ - -$(OBJDIR)/zynaddsubfx-ui.cpp.o: zynaddsubfx-ui.cpp $(ZYN_UI_FILES_H) $(ZYN_UI_FILES_CPP) - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZYN_CXX_FLAGS) -Wno-unused-parameter -Wno-unused-variable -c -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- - -$(OBJDIR)/zita-%-ui.cpp.o: zita-%-ui.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZITA_UI_CXX_FLAGS) -c -o $@ - -$(OBJDIR)/zita-%.cpp.o: zita-%.cpp - -@mkdir -p $(OBJDIR) - @echo "Compiling $<" - @$(CXX) $< $(ZITA_DSP_CXX_FLAGS) -c -o $@ - -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- -include $(OBJS:%.o=%.d) --include $(OBJDIR)/zita-at1-ui.cpp.d --include $(OBJDIR)/zita-bls1-ui.cpp.d --include $(OBJDIR)/zita-rev1-ui.cpp.d --include $(OBJDIR)/zynaddsubfx-ui.cpp.d -# ---------------------------------------------------------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/_all.c b/source/native-plugins/_all.c index ae9329cc2..fd3043c40 100644 --- a/source/native-plugins/_all.c +++ b/source/native-plugins/_all.c @@ -1,6 +1,6 @@ /* * Carla Native Plugins - * Copyright (C) 2012-2015 Filipe Coelho + * Copyright (C) 2012-2017 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -23,7 +23,7 @@ # undef HAVE_PYQT #endif -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Simple plugins extern void carla_register_native_plugin_bypass(void); @@ -45,32 +45,16 @@ extern void carla_register_native_plugin_midipattern(void); // Carla extern void carla_register_native_plugin_carla(void); -// DISTRHO plugins -extern void carla_register_native_plugin_distrho_3bandeq(void); -extern void carla_register_native_plugin_distrho_3bandsplitter(void); -extern void carla_register_native_plugin_distrho_kars(void); -extern void carla_register_native_plugin_distrho_nekobi(void); -extern void carla_register_native_plugin_distrho_pingpongpan(void); -extern void carla_register_native_plugin_distrho_prom(void); - -// DISTRHO plugins (Juice) -extern void carla_register_native_plugin_distrho_vectorjuice(void); -extern void carla_register_native_plugin_distrho_wobblejuice(void); - // External-UI plugins extern void carla_register_native_plugin_bigmeter(void); extern void carla_register_native_plugin_notes(void); -// ZynAddSubFX -extern void carla_register_native_plugin_zynaddsubfx_fx(void); -extern void carla_register_native_plugin_zynaddsubfx_synth(void); - -// Experimental plugins -extern void carla_register_native_plugin_zita_at1(void); -extern void carla_register_native_plugin_zita_bls1(void); -extern void carla_register_native_plugin_zita_rev1(void); +#ifdef HAVE_EXTERNAL_PLUGINS +# define CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY +# include "external/_all.c" +#endif -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- void carla_register_all_native_plugins(void) { @@ -98,42 +82,14 @@ void carla_register_all_native_plugins(void) carla_register_native_plugin_carla(); #endif - // DISTRHO Plugins - carla_register_native_plugin_distrho_3bandeq(); - carla_register_native_plugin_distrho_3bandsplitter(); - carla_register_native_plugin_distrho_kars(); - carla_register_native_plugin_distrho_nekobi(); - carla_register_native_plugin_distrho_pingpongpan(); -#ifdef HAVE_DGL -#ifdef HAVE_PROJECTM - carla_register_native_plugin_distrho_prom(); -#endif -#endif - - // DISTRHO plugins (Juice) - carla_register_native_plugin_distrho_vectorjuice(); - carla_register_native_plugin_distrho_wobblejuice(); - -#ifdef HAVE_PYQT // External-UI plugins carla_register_native_plugin_bigmeter(); carla_register_native_plugin_notes(); -#endif - -#ifdef HAVE_ZYN_DEPS - // ZynAddSubFX - carla_register_native_plugin_zynaddsubfx_fx(); -# ifndef DISABLE_PLUGINS_FOR_WINDOWS_BUILD - carla_register_native_plugin_zynaddsubfx_synth(); -# endif -#endif -#ifdef HAVE_EXPERIMENTAL_PLUGINS +#ifdef HAVE_EXTERNAL_PLUGINS // Experimental plugins - carla_register_native_plugin_zita_at1(); - carla_register_native_plugin_zita_bls1(); - carla_register_native_plugin_zita_rev1(); + carla_register_all_native_external_plugins(); #endif } -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/_data.cpp b/source/native-plugins/_data.cpp index a6fe09294..609c314da 100644 --- a/source/native-plugins/_data.cpp +++ b/source/native-plugins/_data.cpp @@ -1,6 +1,6 @@ /* * Carla Native Plugins - * Copyright (C) 2012-2015 Filipe Coelho + * Copyright (C) 2012-2017 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -33,7 +33,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Simple plugins { @@ -167,7 +167,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { #if 0 -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Audio file { @@ -189,7 +189,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { }, #endif -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // MIDI file and sequencer { @@ -234,7 +234,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { }, #endif -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Carla #ifdef HAVE_PYQT @@ -366,208 +366,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { }, #endif -// ----------------------------------------------------------------------- -// DISTRHO Plugins - -{ - /* category */ NATIVE_PLUGIN_CATEGORY_EQ, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "3 Band EQ", - /* label */ "3bandeq", - /* maker */ "falkTX, Michael Gruhn", - /* copyright */ "LGPL", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_EQ, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 6, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "3 Band Splitter", - /* label */ "3bandsplitter", - /* maker */ "falkTX, Michael Gruhn", - /* copyright */ "LGPL", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_IS_SYNTH - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_IS_SYNTH), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 0, - /* audioOuts */ 1, - /* midiIns */ 1, - /* midiOuts */ 0, - /* paramIns */ 1, - /* paramOuts */ 0, - /* name */ "Kars", - /* label */ "kars", - /* maker */ "falkTX, Chris Cannam", - /* copyright */ "ISC", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_IS_SYNTH - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_IS_SYNTH), -#endif - /* supports */ static_cast(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES - |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF), - /* audioIns */ 0, - /* audioOuts */ 1, - /* midiIns */ 1, - /* midiOuts */ 0, - /* paramIns */ 8, - /* paramOuts */ 0, - /* name */ "Nekobi", - /* label */ "nekobi", - /* maker */ "falkTX, Sean Bolton and others", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 2, - /* paramOuts */ 0, - /* name */ "Ping Pong Pan", - /* label */ "pingpongpan", - /* maker */ "falkTX, Michael Gruhn", - /* copyright */ "LGPL", - DESCFUNCS -}, -#ifdef HAVE_DGL -#ifdef HAVE_PROJECTM -{ - /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 1, - /* audioOuts */ 1, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 0, - /* paramOuts */ 0, - /* name */ "ProM", - /* label */ "prom", - /* maker */ "falkTX", - /* copyright */ "LGPL", - DESCFUNCS -}, -#endif // HAVE_PROJECTM -#endif // HAVE_DGL - -// ----------------------------------------------------------------------- -// DISTRHO plugins (Juice) - -{ - /* category */ NATIVE_PLUGIN_CATEGORY_DYNAMICS, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID - |NATIVE_PLUGIN_USES_TIME), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_USES_TIME), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "WobbleJuice", - /* label */ "wobblejuice", - /* maker */ "Andre Sklenar", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, -#ifdef HAVE_DGL - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD - |NATIVE_PLUGIN_USES_PARENT_ID - |NATIVE_PLUGIN_USES_TIME), -#else - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_USES_TIME), -#endif - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 8, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 13, - /* paramOuts */ 4, - /* name */ "VectorJuice", - /* label */ "vectorjuice", - /* maker */ "Andre Sklenar", - /* copyright */ "GPL v2+", - DESCFUNCS -}, - -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // External-UI plugins #ifdef HAVE_PYQT @@ -608,245 +407,16 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { }, #endif -// ----------------------------------------------------------------------- -// ZynAddSubFX - -#ifdef HAVE_ZYN_DEPS -{ - /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 11-2, - /* paramOuts */ 0, - /* name */ "ZynAlienWah", - /* label */ "zynalienwah", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 12-2, - /* paramOuts */ 0, - /* name */ "ZynChorus", - /* label */ "zynchorus", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, - /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 11-2, - /* paramOuts */ 0, - /* name */ "ZynDistortion", - /* label */ "zyndistortion", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_FILTER, - /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 10-2, - /* paramOuts */ 0, - /* name */ "ZynDynamicFilter", - /* label */ "zyndynamicfilter", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 7-2, - /* paramOuts */ 0, - /* name */ "ZynEcho", - /* label */ "zynecho", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, - /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 15-2, - /* paramOuts */ 0, - /* name */ "ZynPhaser", - /* label */ "zynphaser", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, - /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 13-2, - /* paramOuts */ 0, - /* name */ "ZynReverb", - /* label */ "zynreverb", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -# ifndef DISABLE_PLUGINS_FOR_WINDOWS_BUILD -{ - /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, - /* hints */ static_cast(NATIVE_PLUGIN_IS_SYNTH -# ifdef HAVE_ZYN_UI_DEPS - |NATIVE_PLUGIN_HAS_UI -# endif - |NATIVE_PLUGIN_USES_MULTI_PROGS - |NATIVE_PLUGIN_USES_STATE), - /* supports */ static_cast(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES - |NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH - |NATIVE_PLUGIN_SUPPORTS_PITCHBEND - |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF), - /* audioIns */ 0, - /* audioOuts */ 2, - /* midiIns */ 1, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "ZynAddSubFX", - /* label */ "zynaddsubfx", - /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", - /* copyright */ "GNU GPL v2+", - DESCFUNCS -}, -# endif // ! DISABLE_PLUGINS_FOR_WINDOWS_BUILD -#endif // HAVE_ZYN_DEPS - - -// ----------------------------------------------------------------------- -// Experimental plugins - -#ifdef HAVE_EXPERIMENTAL_PLUGINS -{ - /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS - |NATIVE_PLUGIN_USES_STATE), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 1, - /* audioOuts */ 1, - /* midiIns */ 1, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "AT1", - /* label */ "at1", - /* maker */ "falkTX, Fons Adriaensen", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_FILTER, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 6, - /* paramOuts */ 0, - /* name */ "BLS1", - /* label */ "bls1", - /* maker */ "falkTX, Fons Adriaensen", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 4, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 10, - /* paramOuts */ 0, - /* name */ "REV1 (Ambisonic)", - /* label */ "rev1-ambisonic", - /* maker */ "falkTX, Fons Adriaensen", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -{ - /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, - /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE - |NATIVE_PLUGIN_HAS_UI - |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), - /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, - /* audioIns */ 2, - /* audioOuts */ 2, - /* midiIns */ 0, - /* midiOuts */ 0, - /* paramIns */ 10, - /* paramOuts */ 0, - /* name */ "REV1 (Stereo)", - /* label */ "rev1-stereo", - /* maker */ "falkTX, Fons Adriaensen", - /* copyright */ "GPL v2+", - DESCFUNCS -}, -#endif // HAVE_EXPERIMENTAL_PLUGINS +#ifdef HAVE_EXTERNAL_PLUGINS +# define CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY +# include "external/_data.cpp" +#endif }; #undef DESCFUNCS -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count) { @@ -856,4 +426,4 @@ const NativePluginDescriptor* carla_get_native_plugins_data(uint32_t* count) return sNativePluginDescriptors; } -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/external/Makefile b/source/native-plugins/external/Makefile new file mode 100644 index 000000000..43b49d3f4 --- /dev/null +++ b/source/native-plugins/external/Makefile @@ -0,0 +1,202 @@ +#!/usr/bin/make -f +# Makefile for native-plugins # +# --------------------------- # +# Created by falkTX +# + +# NOTE: this file assumes Makefile.mk has been included before + +# --------------------------------------------------------------------------------------------------------------------- +# DPF plugins + +OBJS += \ + $(OBJDIR)/distrho-3bandeq.cpp.o \ + $(OBJDIR)/distrho-3bandsplitter.cpp.o \ + $(OBJDIR)/distrho-kars.cpp.o \ + $(OBJDIR)/distrho-nekobi.cpp.o \ + $(OBJDIR)/distrho-pingpongpan.cpp.o + +ifeq ($(HAVE_DGL),true) +ifeq ($(HAVE_PROJECTM),true) +OBJS += $(OBJDIR)/distrho-prom.cpp.o +endif +endif + +# --------------------------------------------------------------------------------------------------------------------- +# DPF plugins (Juice) + +OBJS += \ + $(OBJDIR)/distrho-vectorjuice.cpp.o \ + $(OBJDIR)/distrho-wobblejuice.cpp.o + +# --------------------------------------------------------------------------------------------------------------------- +# ZynAddSubFX + +ifeq ($(HAVE_ZYN_DEPS),true) +OBJS += \ + $(OBJDIR)/zynaddsubfx-fx.cpp.o \ + $(OBJDIR)/zynaddsubfx-src.cpp.o \ + $(OBJDIR)/zynaddsubfx-synth.cpp.o + +ifeq ($(HAVE_ZYN_UI_DEPS),true) +TARGETS += ../resources/zynaddsubfx-ui$(APP_EXT) + +ZYN_UI_FILES_CPP = \ + zynaddsubfx/UI/ADnoteUI.cpp \ + zynaddsubfx/UI/BankUI.cpp \ + zynaddsubfx/UI/ConfigUI.cpp \ + zynaddsubfx/UI/EffUI.cpp \ + zynaddsubfx/UI/EnvelopeUI.cpp \ + zynaddsubfx/UI/FilterUI.cpp \ + zynaddsubfx/UI/LFOUI.cpp \ + zynaddsubfx/UI/MasterUI.cpp \ + zynaddsubfx/UI/MicrotonalUI.cpp \ + zynaddsubfx/UI/OscilGenUI.cpp \ + zynaddsubfx/UI/PADnoteUI.cpp \ + zynaddsubfx/UI/PartUI.cpp \ + zynaddsubfx/UI/PresetsUI.cpp \ + zynaddsubfx/UI/ResonanceUI.cpp \ + zynaddsubfx/UI/SUBnoteUI.cpp \ + zynaddsubfx/UI/VirKeyboard.cpp + +ZYN_UI_FILES_H = \ + zynaddsubfx/UI/ADnoteUI.h \ + zynaddsubfx/UI/BankUI.h \ + zynaddsubfx/UI/ConfigUI.h \ + zynaddsubfx/UI/EffUI.h \ + zynaddsubfx/UI/EnvelopeUI.h \ + zynaddsubfx/UI/FilterUI.h \ + zynaddsubfx/UI/LFOUI.h \ + zynaddsubfx/UI/MasterUI.h \ + zynaddsubfx/UI/MicrotonalUI.h \ + zynaddsubfx/UI/OscilGenUI.h \ + zynaddsubfx/UI/PADnoteUI.h \ + zynaddsubfx/UI/PartUI.h \ + zynaddsubfx/UI/PresetsUI.h \ + zynaddsubfx/UI/ResonanceUI.h \ + zynaddsubfx/UI/SUBnoteUI.h \ + zynaddsubfx/UI/VirKeyboard.h +endif +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Experimental plugins + +ifeq ($(EXPERIMENTAL_PLUGINS),true) +OBJS += \ + $(OBJDIR)/zita-at1.cpp.o \ + $(OBJDIR)/zita-bls1.cpp.o \ + $(OBJDIR)/zita-rev1.cpp.o + +TARGETS += \ + ../resources/zita-at1-ui$(APP_EXT) \ + ../resources/zita-bls1-ui$(APP_EXT) \ + ../resources/zita-rev1-ui$(APP_EXT) +endif + +# --------------------------------------------------------------------------------------------------------------------- + +zynaddsubfx/UI/%.cpp: zynaddsubfx/UI/%.fl + @echo "Generating $@|h" + @$(FLUID) -c -o zynaddsubfx/UI/$*.cpp -h zynaddsubfx/UI/$*.h $< + +zynaddsubfx/UI/%.h: zynaddsubfx/UI/%.fl + @echo "Generating $@|cpp" + @$(FLUID) -c -o zynaddsubfx/UI/$*.cpp -h zynaddsubfx/UI/$*.h $< + +# --------------------------------------------------------------------------------------------------------------------- + +$(OBJDIR)/distrho-3bandeq.cpp.o: $(EXTERNAL_DIR)distrho-3bandeq.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=d3BandEQ -Idistrho-3bandeq -c -o $@ + +$(OBJDIR)/distrho-3bandsplitter.cpp.o: distrho-3bandsplitter.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=d3BandSplitter -Idistrho-3bandsplitter -c -o $@ + +$(OBJDIR)/distrho-kars.cpp.o: distrho-kars.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=dKars -Idistrho-kars -c -o $@ + +$(OBJDIR)/distrho-nekobi.cpp.o: distrho-nekobi.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=dNekobi -Idistrho-nekobi -w -c -o $@ + +$(OBJDIR)/distrho-pingpongpan.cpp.o: distrho-pingpongpan.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=dPingPongPan -Idistrho-pingpongpan -c -o $@ + +$(OBJDIR)/distrho-prom.cpp.o: distrho-prom.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) $(PROJECTM_FLAGS) -DDISTRHO_NAMESPACE=dProM -Idistrho-prom -c -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +$(OBJDIR)/distrho-vectorjuice.cpp.o: distrho-vectorjuice.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=dVectorJuice -Idistrho-vectorjuice -c -o $@ + +$(OBJDIR)/distrho-wobblejuice.cpp.o: distrho-wobblejuice.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(DPF_FLAGS) -DDISTRHO_NAMESPACE=dWobbleJuice -Idistrho-wobblejuice -c -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +$(OBJDIR)/zynaddsubfx-fx.cpp.o: zynaddsubfx-fx.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZYN_DSP_FLAGS) -c -o $@ + +$(OBJDIR)/zynaddsubfx-synth.cpp.o: zynaddsubfx-synth.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZYN_DSP_FLAGS) -Wno-unused-parameter -c -o $@ + +$(OBJDIR)/zynaddsubfx-src.cpp.o: zynaddsubfx-src.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZYN_DSP_FLAGS) -Wno-unused-parameter -Wno-unused-variable -c -o $@ + +$(OBJDIR)/zynaddsubfx-ui.cpp.o: zynaddsubfx-ui.cpp $(ZYN_UI_FILES_H) $(ZYN_UI_FILES_CPP) + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZYN_UI_FLAGS) -Wno-unused-parameter -Wno-unused-variable -c -o $@ + +../resources/zynaddsubfx-ui$(APP_EXT): $(OBJDIR)/zynaddsubfx-ui.cpp.o + -@mkdir -p ../resources + @echo "Linking zynaddsubfx-ui" + @$(CXX) $^ $(LINK_FLAGS) $(ZYN_UI_LIBS) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +$(OBJDIR)/zita-%-ui.cpp.o: zita-%-ui.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZITA_UI_FLAGS) -c -o $@ + +$(OBJDIR)/zita-%.cpp.o: zita-%.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling $<" + @$(CXX) $< $(BUILD_CXX_FLAGS) $(ZITA_DSP_FLAGS) -c -o $@ + +../resources/zita-%-ui$(APP_EXT): $(OBJDIR)/zita-%-ui.cpp.o + -@mkdir -p ../resources + @echo "Linking $<" + @$(CXX) $^ $(LINK_FLAGS) $(ZITA_UI_LIBS) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +-include $(OBJDIR)/zita-at1-ui.cpp.d +-include $(OBJDIR)/zita-bls1-ui.cpp.d +-include $(OBJDIR)/zita-rev1-ui.cpp.d +-include $(OBJDIR)/zynaddsubfx-ui.cpp.d + +# --------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/external/Makefile.mk b/source/native-plugins/external/Makefile.mk new file mode 100644 index 000000000..adfa1d9b1 --- /dev/null +++ b/source/native-plugins/external/Makefile.mk @@ -0,0 +1,223 @@ +#!/usr/bin/make -f +# Makefile for native-plugins # +# --------------------------- # +# Created by falkTX +# + +ifeq ($(TESTBUILD),true) +ifeq ($(LINUX),true) +CXXFLAGS += -isystem /opt/kxstudio/include/ntk +endif +endif + +ifeq ($(MACOS_OR_WIN32),true) +HAVE_DGL = true +else +HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true) +endif + +HAVE_NTK = $(shell pkg-config --exists ntk ntk_images && echo true) +HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) +HAVE_ZYN_DEPS = $(shell pkg-config --exists liblo fftw3 mxml zlib && echo true) + +# --------------------------------------------------------------------------------------------------------------------- +# Check for optional libs (special non-pkgconfig unix tests) + +ifeq ($(UNIX),true) + +# fltk doesn't have a pkg-config file but has fltk-config instead. +# Also, don't try looking for it if we already have NTK. +ifneq ($(HAVE_NTK),true) +ifeq ($(shell which fltk-config 1>/dev/null 2>/dev/null && echo true),true) +ifeq ($(shell which fluid 1>/dev/null 2>/dev/null && echo true),true) +HAVE_FLTK = true +endif +endif +endif + +endif + +# --------------------------------------------------------------------------------------------------------------------- + +ifeq ($(HAVE_FLTK),true) +HAVE_ZYN_UI_DEPS = true +endif +ifeq ($(HAVE_NTK),true) +HAVE_ZYN_UI_DEPS = true +endif + +# --------------------------------------------------------------------------------------------------------------------- + +ifeq ($(HAVE_DGL),true) +BASE_FLAGS += -DHAVE_DGL +endif + +ifeq ($(HAVE_PROJECTM),true) +BASE_FLAGS += -DHAVE_PROJECTM +endif + +ifeq ($(HAVE_ZYN_DEPS),true) +BASE_FLAGS += -DHAVE_ZYN_DEPS +ifeq ($(HAVE_ZYN_UI_DEPS),true) +BASE_FLAGS += -DHAVE_ZYN_UI_DEPS +endif +endif + +ifeq ($(EXPERIMENTAL_PLUGINS),true) +BASE_FLAGS += -DHAVE_EXPERIMENTAL_PLUGINS +endif + +# --------------------------------------------------------------------------------------------------------------------- + +ifeq ($(HAVE_DGL),true) + +ifeq ($(MACOS_OR_WIN32),true) +ifeq ($(MACOS),true) +DGL_LIBS = -framework OpenGL -framework Cocoa +endif +ifeq ($(WIN32),true) +DGL_LIBS = -lopengl32 -lgdi32 +endif +else + +DGL_FLAGS = $(shell pkg-config --cflags gl x11) +DGL_LIBS = $(shell pkg-config --libs gl x11) +endif +endif + +# --------------------------------------------------------------------------------------------------------------------- + +ifeq ($(HAVE_PROJECTM),true) +PROJECTM_FLAGS = $(shell pkg-config --cflags libprojectM) +PROJECTM_LIBS = $(shell pkg-config --libs libprojectM) +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Flags for DPF Plugins + +DPF_FLAGS = -I$(CWDE)/modules/distrho + +ifeq ($(HAVE_DGL),true) +DPF_FLAGS += -I$(CWDE)/modules/dgl +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Flags for ZynAddSubFX (DSP and UI separated) + +ifeq ($(HAVE_ZYN_DEPS),true) + +# Common flags +ZYN_BASE_FLAGS = $(shell pkg-config --cflags liblo mxml) +ZYN_BASE_FLAGS += -Izynaddsubfx -Izynaddsubfx/rtosc +ifneq ($(WIN32),true) +ZYN_BASE_FLAGS += -DHAVE_ASYNC +endif + +ZYN_BASE_LIBS = $(shell pkg-config --libs liblo mxml) -lpthread +ifneq ($(WIN32),true) +ZYN_BASE_LIBS += -ldl +endif + +# DSP flags +ZYN_DSP_FLAGS = $(ZYN_BASE_FLAGS) +ZYN_DSP_FLAGS += $(shell pkg-config --cflags fftw3 zlib) +ZYN_DSP_FLAGS += -Wno-misleading-indentation -Wno-shift-negative-value +ZYN_DSP_LIBS = $(ZYN_BASE_LIBS) +ZYN_DSP_LIBS += $(shell pkg-config --libs fftw3 zlib) + +# UI flags +ifeq ($(HAVE_ZYN_UI_DEPS),true) + +# Common UI flags +ZYN_UI_FLAGS = $(ZYN_BASE_FLAGS) +ZYN_UI_LIBS = $(ZYN_BASE_LIBS) + +# NTK or FLTK UI flags +ifeq ($(HAVE_NTK),true) +FLUID = ntk-fluid +ZYN_UI_FLAGS += $(shell pkg-config --cflags ntk_images ntk) -DNTK_GUI +ZYN_UI_LIBS += $(shell pkg-config --libs ntk_images ntk) +else # HAVE_NTK +FLUID = fluid +ZYN_UI_FLAGS += $(shell fltk-config --use-images --cxxflags) -DFLTK_GUI +ZYN_UI_LIBS += $(shell fltk-config --use-images --ldflags) +endif # HAVE_NTK + +# UI extra flags +ifeq ($(HAVE_X11),true) +ZYN_UI_FLAGS += $(shell pkg-config --cflags x11) +ZYN_UI_LIBS += $(shell pkg-config --libs x11) +endif +ifeq ($(LINUX),true) +ZYN_UI_LIBS += -lrt +endif + +else # HAVE_ZYN_UI_DEPS + +ZYN_DSP_FLAGS += -DNO_UI + +endif # HAVE_ZYN_UI_DEPS +endif # HAVE_ZYN_DEPS + + +# --------------------------------------------------------------------------------------------------------------------- +# Flags for Zita Plugins (DSP and UI separated) + +ifeq ($(EXPERIMENTAL_PLUGINS),true) +ZITA_DSP_FLAGS = $(shell pkg-config --cflags fftw3f) +ZITA_DSP_FLAGS += -Wno-unused-parameter +ZITA_DSP_LIBS = $(shell pkg-config --libs fftw3f) + +ZITA_UI_FLAGS = $(shell pkg-config --cflags cairo libpng12 freetype2 x11 xft zlib) +ZITA_UI_FLAGS += -Wno-ignored-qualifiers -Wno-unused-parameter -Wno-unused-result +ZITA_UI_LIBS = $(shell pkg-config --libs cairo libpng12 freetype2 x11 xft zlib) +ZITA_UI_LIBS += -lclxclient -lclthreads -ldl -lpthread -lrt +endif + +# --------------------------------------------------------------------------------------------------------------------- + +NATIVE_PLUGINS_LIBS += $(DGL_LIBS) +NATIVE_PLUGINS_LIBS += $(PROJECTM_LIBS) +NATIVE_PLUGINS_LIBS += $(ZYN_DSP_LIBS) +NATIVE_PLUGINS_LIBS += $(ZITA_DSP_LIBS) + +# --------------------------------------------------------------------------------------------------------------------- + +ifeq ($(HAVE_DGL),true) +ALL_LIBS += $(MODULEDIR)/dgl.a +endif + +# --------------------------------------------------------------------------------------------------------------------- + +all: +features_print_external_plugins: +ifeq ($(HAVE_DGL),true) + @echo "DPF Plugins: $(ANS_YES)(with UI)" +ifeq ($(HAVE_PROJECTM),true) + @echo "DPF ProM: $(ANS_YES)" +else + @echo "DPF ProM: $(ANS_NO) (missing libprojectM)" +endif +else + @echo "DPF Plugins: $(ANS_YES)(without UI)" +ifeq ($(HAVE_PROJECTM),true) + @echo "DPF ProM: $(ANS_NO) $(mS)missing OpenGL$(mE)" +else + @echo "DPF ProM: $(ANS_NO) $(mS)missing OpenGL and libprojectM$(mE)" +endif +endif +ifeq ($(HAVE_ZYN_DEPS),true) +ifeq ($(HAVE_ZYN_UI_DEPS),true) +ifeq ($(HAVE_NTK),true) + @echo "ZynAddSubFX: $(ANS_YES)(with NTK UI)" +else + @echo "ZynAddSubFX: $(ANS_YES)(with FLTK UI)" +endif +else + @echo "ZynAddSubFX: $(ANS_YES)(without UI) $(mS)FLTK or NTK missing$(mE)" +endif +else + @echo "ZynAddSubFX: $(ANS_NO) $(mS)liblo, fftw3, mxml or zlib missing$(mE)" +endif + +# --------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/external/_all.c b/source/native-plugins/external/_all.c new file mode 100644 index 000000000..2bd3e300f --- /dev/null +++ b/source/native-plugins/external/_all.c @@ -0,0 +1,78 @@ +/* + * Carla Native Plugins + * Copyright (C) 2012-2017 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the doc/GPL.txt file. + */ + +#include "CarlaDefines.h" +#include "CarlaNative.h" + +// -------------------------------------------------------------------------------------------------------------------- + +// DISTRHO plugins +extern void carla_register_native_plugin_distrho_3bandeq(void); +extern void carla_register_native_plugin_distrho_3bandsplitter(void); +extern void carla_register_native_plugin_distrho_kars(void); +extern void carla_register_native_plugin_distrho_nekobi(void); +extern void carla_register_native_plugin_distrho_pingpongpan(void); +extern void carla_register_native_plugin_distrho_prom(void); + +// DISTRHO plugins (Juice) +extern void carla_register_native_plugin_distrho_vectorjuice(void); +extern void carla_register_native_plugin_distrho_wobblejuice(void); + +// ZynAddSubFX +extern void carla_register_native_plugin_zynaddsubfx_fx(void); +extern void carla_register_native_plugin_zynaddsubfx_synth(void); + +// Experimental plugins +extern void carla_register_native_plugin_zita_at1(void); +extern void carla_register_native_plugin_zita_bls1(void); +extern void carla_register_native_plugin_zita_rev1(void); + +// -------------------------------------------------------------------------------------------------------------------- + +void carla_register_all_native_external_plugins(void) +{ + // DISTRHO Plugins + carla_register_native_plugin_distrho_3bandeq(); + carla_register_native_plugin_distrho_3bandsplitter(); + carla_register_native_plugin_distrho_kars(); + carla_register_native_plugin_distrho_nekobi(); + carla_register_native_plugin_distrho_pingpongpan(); +#if defined(HAVE_DGL) && defined(HAVE_PROJECTM) + carla_register_native_plugin_distrho_prom(); +#endif + + // DISTRHO plugins (Juice) + carla_register_native_plugin_distrho_vectorjuice(); + carla_register_native_plugin_distrho_wobblejuice(); + +#ifdef HAVE_ZYN_DEPS + // ZynAddSubFX + carla_register_native_plugin_zynaddsubfx_fx(); +# ifndef DISABLE_PLUGINS_FOR_WINDOWS_BUILD + carla_register_native_plugin_zynaddsubfx_synth(); +# endif +#endif + +#ifdef HAVE_EXPERIMENTAL_PLUGINS + // Experimental plugins + carla_register_native_plugin_zita_at1(); + carla_register_native_plugin_zita_bls1(); + carla_register_native_plugin_zita_rev1(); +#endif +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/source/native-plugins/external/_data.cpp b/source/native-plugins/external/_data.cpp new file mode 100644 index 000000000..6e71e7198 --- /dev/null +++ b/source/native-plugins/external/_data.cpp @@ -0,0 +1,470 @@ +/* + * Carla Native Plugins + * Copyright (C) 2012-2017 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the doc/GPL.txt file. + */ + +#include "CarlaNative.h" +#include "CarlaMIDI.h" +#include "CarlaUtils.hpp" + +#ifndef CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY +# define DESCFUNCS \ + nullptr, nullptr, nullptr, nullptr, nullptr, \ + nullptr, nullptr, nullptr, nullptr, nullptr, \ + nullptr, nullptr, nullptr, nullptr, nullptr, \ + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr + +static const NativePluginDescriptor sNativePluginDescriptors[] = { +#endif + +// -------------------------------------------------------------------------------------------------------------------- +// DISTRHO Plugins + +{ + /* category */ NATIVE_PLUGIN_CATEGORY_EQ, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "3 Band EQ", + /* label */ "3bandeq", + /* maker */ "falkTX, Michael Gruhn", + /* copyright */ "LGPL", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_EQ, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 6, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "3 Band Splitter", + /* label */ "3bandsplitter", + /* maker */ "falkTX, Michael Gruhn", + /* copyright */ "LGPL", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_IS_SYNTH + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_IS_SYNTH), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 0, + /* audioOuts */ 1, + /* midiIns */ 1, + /* midiOuts */ 0, + /* paramIns */ 1, + /* paramOuts */ 0, + /* name */ "Kars", + /* label */ "kars", + /* maker */ "falkTX, Chris Cannam", + /* copyright */ "ISC", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_IS_SYNTH + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_IS_SYNTH), +#endif + /* supports */ static_cast(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES + |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF), + /* audioIns */ 0, + /* audioOuts */ 1, + /* midiIns */ 1, + /* midiOuts */ 0, + /* paramIns */ 8, + /* paramOuts */ 0, + /* name */ "Nekobi", + /* label */ "nekobi", + /* maker */ "falkTX, Sean Bolton and others", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 2, + /* paramOuts */ 0, + /* name */ "Ping Pong Pan", + /* label */ "pingpongpan", + /* maker */ "falkTX, Michael Gruhn", + /* copyright */ "LGPL", + DESCFUNCS +}, +#ifdef HAVE_DGL +#ifdef HAVE_PROJECTM +{ + /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 1, + /* audioOuts */ 1, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 0, + /* paramOuts */ 0, + /* name */ "ProM", + /* label */ "prom", + /* maker */ "falkTX", + /* copyright */ "LGPL", + DESCFUNCS +}, +#endif // HAVE_PROJECTM +#endif // HAVE_DGL + +// -------------------------------------------------------------------------------------------------------------------- +// DISTRHO plugins (Juice) + +{ + /* category */ NATIVE_PLUGIN_CATEGORY_DYNAMICS, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID + |NATIVE_PLUGIN_USES_TIME), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_USES_TIME), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "WobbleJuice", + /* label */ "wobblejuice", + /* maker */ "Andre Sklenar", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, +#ifdef HAVE_DGL + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_UI_MAIN_THREAD + |NATIVE_PLUGIN_USES_PARENT_ID + |NATIVE_PLUGIN_USES_TIME), +#else + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_USES_TIME), +#endif + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 8, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 13, + /* paramOuts */ 4, + /* name */ "VectorJuice", + /* label */ "vectorjuice", + /* maker */ "Andre Sklenar", + /* copyright */ "GPL v2+", + DESCFUNCS +}, + +// -------------------------------------------------------------------------------------------------------------------- +// ZynAddSubFX + +#ifdef HAVE_ZYN_DEPS +{ + /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 11-2, + /* paramOuts */ 0, + /* name */ "ZynAlienWah", + /* label */ "zynalienwah", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 12-2, + /* paramOuts */ 0, + /* name */ "ZynChorus", + /* label */ "zynchorus", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, + /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 11-2, + /* paramOuts */ 0, + /* name */ "ZynDistortion", + /* label */ "zyndistortion", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_FILTER, + /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 10-2, + /* paramOuts */ 0, + /* name */ "ZynDynamicFilter", + /* label */ "zyndynamicfilter", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 7-2, + /* paramOuts */ 0, + /* name */ "ZynEcho", + /* label */ "zynecho", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, + /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 15-2, + /* paramOuts */ 0, + /* name */ "ZynPhaser", + /* label */ "zynphaser", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, + /* hints */ static_cast(NATIVE_PLUGIN_USES_PANNING + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 13-2, + /* paramOuts */ 0, + /* name */ "ZynReverb", + /* label */ "zynreverb", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +# ifndef DISABLE_PLUGINS_FOR_WINDOWS_BUILD +{ + /* category */ NATIVE_PLUGIN_CATEGORY_SYNTH, + /* hints */ static_cast(NATIVE_PLUGIN_IS_SYNTH +# ifdef HAVE_ZYN_UI_DEPS + |NATIVE_PLUGIN_HAS_UI +# endif + |NATIVE_PLUGIN_USES_MULTI_PROGS + |NATIVE_PLUGIN_USES_STATE), + /* supports */ static_cast(NATIVE_PLUGIN_SUPPORTS_CONTROL_CHANGES + |NATIVE_PLUGIN_SUPPORTS_NOTE_AFTERTOUCH + |NATIVE_PLUGIN_SUPPORTS_PITCHBEND + |NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF), + /* audioIns */ 0, + /* audioOuts */ 2, + /* midiIns */ 1, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "ZynAddSubFX", + /* label */ "zynaddsubfx", + /* maker */ "falkTX, Mark McCurry, Nasca Octavian Paul", + /* copyright */ "GNU GPL v2+", + DESCFUNCS +}, +# endif // ! DISABLE_PLUGINS_FOR_WINDOWS_BUILD +#endif // HAVE_ZYN_DEPS + +// -------------------------------------------------------------------------------------------------------------------- +// Experimental plugins + +#ifdef HAVE_EXPERIMENTAL_PLUGINS +{ + /* category */ NATIVE_PLUGIN_CATEGORY_MODULATOR, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS + |NATIVE_PLUGIN_USES_STATE), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 1, + /* audioOuts */ 1, + /* midiIns */ 1, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "AT1", + /* label */ "at1", + /* maker */ "falkTX, Fons Adriaensen", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_FILTER, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 6, + /* paramOuts */ 0, + /* name */ "BLS1", + /* label */ "bls1", + /* maker */ "falkTX, Fons Adriaensen", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 4, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 10, + /* paramOuts */ 0, + /* name */ "REV1 (Ambisonic)", + /* label */ "rev1-ambisonic", + /* maker */ "falkTX, Fons Adriaensen", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +{ + /* category */ NATIVE_PLUGIN_CATEGORY_DELAY, + /* hints */ static_cast(NATIVE_PLUGIN_IS_RTSAFE + |NATIVE_PLUGIN_HAS_UI + |NATIVE_PLUGIN_NEEDS_FIXED_BUFFERS), + /* supports */ NATIVE_PLUGIN_SUPPORTS_NOTHING, + /* audioIns */ 2, + /* audioOuts */ 2, + /* midiIns */ 0, + /* midiOuts */ 0, + /* paramIns */ 10, + /* paramOuts */ 0, + /* name */ "REV1 (Stereo)", + /* label */ "rev1-stereo", + /* maker */ "falkTX, Fons Adriaensen", + /* copyright */ "GPL v2+", + DESCFUNCS +}, +#endif // HAVE_EXPERIMENTAL_PLUGINS + +// -------------------------------------------------------------------------------------------------------------------- + +#ifndef CARLA_EXTERNAL_PLUGINS_INCLUDED_DIRECTLY +} +#endif