@@ -36,6 +36,113 @@ endif | |||
all: BIN RES UI WIDGETS | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
# Config | |||
config: source/carla_config.py source/includes/config.h | |||
source/carla_config.py: | |||
@echo "#!/usr/bin/env python3" > $@ | |||
@echo "# -*- coding: utf-8 -*-" >> $@ | |||
ifeq ($(DEFAULT_QT),4) | |||
@echo "config_UseQt5 = False" >> $@ | |||
else | |||
@echo "config_UseQt5 = True" >> $@ | |||
endif | |||
source/includes/config.h: | |||
@echo "/* Carla config, auto-generated file */" > $@ | |||
@echo "" >> $@ | |||
@echo "/* additional audio drivers, Linux only */" >> $@ | |||
ifeq ($(HAVE_ALSA),true) | |||
@echo "#define HAVE_ALSA" >> $@ | |||
else | |||
@echo "// #define HAVE_ALSA" >> $@ | |||
endif | |||
ifeq ($(HAVE_PULSEAUDIO),true) | |||
@echo "#define HAVE_PULSEAUDIO" >> $@ | |||
else | |||
@echo "// #define HAVE_PULSEAUDIO" >> $@ | |||
endif | |||
@echo "" >> $@ | |||
@echo "/* optional libs for extra backend features */" >> $@ | |||
ifeq ($(HAVE_LIBLO),true) | |||
@echo "#define HAVE_LIBLO" >> $@ | |||
else | |||
@echo "// #define HAVE_LIBLO" >> $@ | |||
endif | |||
ifeq ($(HAVE_LIBMAGIC),true) | |||
@echo "#define HAVE_LIBMAGIC" >> $@ | |||
else | |||
@echo "// #define HAVE_LIBMAGIC" >> $@ | |||
endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
@echo "#define HAVE_FLUIDSYNTH" >> $@ | |||
else | |||
@echo "// #define HAVE_FLUIDSYNTH" >> $@ | |||
endif | |||
ifeq ($(HAVE_LINUXSAMPLER),true) | |||
@echo "#define HAVE_LINUXSAMPLER" >> $@ | |||
else | |||
@echo "// #define HAVE_LINUXSAMPLER" >> $@ | |||
endif | |||
@echo "" >> $@ | |||
@echo "/* optional libs for extra plugins and UIs */" >> $@ | |||
ifeq ($(HAVE_DGL),true) | |||
@echo "#define HAVE_DGL" >> $@ | |||
else | |||
@echo "// #define HAVE_DGL" >> $@ | |||
endif | |||
ifeq ($(HAVE_PROJECTM),true) | |||
@echo "#define HAVE_PROJECTM" >> $@ | |||
else | |||
@echo "// #define HAVE_PROJECTM" >> $@ | |||
endif | |||
ifeq ($(HAVE_ZYN_DEPS),true) | |||
@echo "#define HAVE_ZYN_DEPS" >> $@ | |||
else | |||
@echo "// #define HAVE_ZYN_DEPS" >> $@ | |||
endif | |||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
@echo "#define HAVE_ZYN_UI_DEPS" >> $@ | |||
else | |||
@echo "// #define HAVE_ZYN_UI_DEPS" >> $@ | |||
endif | |||
@echo "" >> $@ | |||
@echo "/* extra toolkits/frameworks for plugin UIs (native) */" >> $@ | |||
ifeq ($(HAVE_X11),true) | |||
@echo "#define HAVE_X11" >> $@ | |||
else | |||
@echo "// #define HAVE_X11" >> $@ | |||
endif | |||
@echo "" >> $@ | |||
@echo "/* extra toolkits/frameworks for plugin UIs (bridges, Linux only) */" >> $@ | |||
ifeq ($(HAVE_GTK2),true) | |||
@echo "#define HAVE_GTK2" >> $@ | |||
else | |||
@echo "// #define HAVE_GTK2" >> $@ | |||
endif | |||
ifeq ($(HAVE_GTK3),true) | |||
@echo "#define HAVE_GTK3" >> $@ | |||
else | |||
@echo "// #define HAVE_GTK3" >> $@ | |||
endif | |||
ifeq ($(HAVE_QT4),true) | |||
@echo "#define HAVE_QT4" >> $@ | |||
else | |||
@echo "// #define HAVE_QT4" >> $@ | |||
endif | |||
ifeq ($(HAVE_QT5),true) | |||
@echo "#define HAVE_QT5" >> $@ | |||
else | |||
@echo "// #define HAVE_QT5" >> $@ | |||
endif | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
# Binaries (native) | |||
@@ -81,7 +188,7 @@ ifeq ($(HAVE_QT5),true) | |||
ALL_LIBS += $(MODULEDIR)/theme.qt5.a | |||
endif | |||
libs: $(ALL_LIBS) | |||
libs: config $(ALL_LIBS) | |||
$(MODULEDIR)/carla_engine.a: .FORCE | |||
@$(MAKE) -C source/backend/engine | |||
@@ -140,7 +247,7 @@ discovery: libs | |||
@$(MAKE) -C source/discovery | |||
ifeq ($(LINUX),true) | |||
interposer: | |||
interposer: config | |||
@$(MAKE) -C source/interposer | |||
else | |||
interposer: | |||
@@ -150,7 +257,7 @@ plugin: backend bridges-plugin bridges-ui discovery | |||
@$(MAKE) -C source/plugin | |||
ifeq ($(HAVE_QT),true) | |||
theme: | |||
theme: config | |||
@$(MAKE) -C source/theme | |||
else | |||
theme: | |||
@@ -174,7 +281,7 @@ LIBS_POSIX32 += $(MODULEDIR)/juce_gui_basics.posix32.a | |||
LIBS_POSIX32 += $(MODULEDIR)/juce_gui_extra.posix32.a | |||
endif | |||
posix32: $(LIBS_POSIX32) | |||
posix32: config $(LIBS_POSIX32) | |||
$(MAKE) -C source/bridges-plugin posix32 | |||
$(MAKE) -C source/discovery posix32 | |||
@@ -196,7 +303,7 @@ LIBS_POSIX64 += $(MODULEDIR)/juce_gui_basics.posix64.a | |||
LIBS_POSIX64 += $(MODULEDIR)/juce_gui_extra.posix64.a | |||
endif | |||
posix64: $(LIBS_POSIX64) | |||
posix64: config $(LIBS_POSIX64) | |||
$(MAKE) -C source/bridges-plugin posix64 | |||
$(MAKE) -C source/discovery posix64 | |||
@@ -214,7 +321,7 @@ LIBS_WIN32 += $(MODULEDIR)/juce_gui_basics.win32.a | |||
LIBS_WIN32 += $(MODULEDIR)/lilv.win32.a | |||
LIBS_WIN32 += $(MODULEDIR)/rtmempool.win32.a | |||
win32: $(LIBS_WIN32) | |||
win32: config $(LIBS_WIN32) | |||
$(MAKE) -C source/bridges-plugin win32 | |||
$(MAKE) -C source/discovery win32 | |||
@@ -232,18 +339,18 @@ LIBS_WIN64 += $(MODULEDIR)/juce_gui_basics.win64.a | |||
LIBS_WIN64 += $(MODULEDIR)/lilv.win64.a | |||
LIBS_WIN64 += $(MODULEDIR)/rtmempool.win64.a | |||
win64: $(LIBS_WIN64) | |||
win64: config $(LIBS_WIN64) | |||
$(MAKE) -C source/bridges-plugin win64 | |||
$(MAKE) -C source/discovery win64 | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
# Binaries (wine) | |||
wine32: | |||
wine32: config | |||
$(MAKE) -C source/jackbridge wine32 | |||
cp -f $(MODULEDIR)/jackbridge-wine32.dll.so $(BINDIR)/jackbridge-wine32.dll | |||
wine64: | |||
wine64: config | |||
$(MAKE) -C source/jackbridge wine64 | |||
cp -f $(MODULEDIR)/jackbridge-wine64.dll.so $(BINDIR)/jackbridge-wine64.dll | |||
@@ -293,18 +400,9 @@ RES = \ | |||
bin/resources/ui_carla_settings.py \ | |||
bin/resources/ui_carla_settings_driver.py \ | |||
bin/resources/ui_inputdialog_value.py \ | |||
source/carla_config.py \ | |||
source/resources_rc.py | |||
RES: $(RES) | |||
source/carla_config.py: | |||
@echo "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n" > $@ | |||
ifeq ($(DEFAULT_QT),4) | |||
@echo "config_UseQt5 = False" >> $@ | |||
else | |||
@echo "config_UseQt5 = True" >> $@ | |||
endif | |||
RES: config $(RES) | |||
source/resources_rc.py: resources/resources.qrc resources/*/*.png resources/*/*.svg | |||
$(PYRCC) $< -o $@ | |||
@@ -339,7 +437,7 @@ UIs = \ | |||
source/ui_carla_settings_driver.py \ | |||
source/ui_inputdialog_value.py | |||
UI: $(UIs) | |||
UI: config $(UIs) | |||
source/ui_%.py: resources/ui/%.ui | |||
$(PYUIC) $< -o $@ | |||
@@ -360,7 +458,7 @@ WIDGETS = \ | |||
source/pixmapkeyboard.py \ | |||
source/racklistwidget.py | |||
WIDGETS: $(WIDGETS) | |||
WIDGETS: config $(WIDGETS) | |||
source/%.py: source/widgets/%.py | |||
$(LINK) widgets/$*.py $@ | |||
@@ -378,6 +476,7 @@ clean: | |||
rm -f $(UIs) | |||
rm -f $(WIDGETS) | |||
rm -f *~ source/*~ source/*.pyc source/*_rc.py source/ui_*.py | |||
rm -f source/carla_config.py source/includes/config.h | |||
distclean: clean | |||
rm -f bin/*.dll bin/*.so | |||
@@ -756,21 +855,21 @@ ifeq ($(HAVE_QT5),true) | |||
else | |||
@echo "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)" | |||
endif | |||
ifeq ($(MACOS),true) | |||
@echo "Cocoa: $(ANS_YES) (direct+bridge)" | |||
else | |||
@echo "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)" | |||
endif | |||
ifeq ($(WIN32),true) | |||
@echo "Windows: $(ANS_YES) (direct+bridge)" | |||
else | |||
@echo "Windows: $(ANS_NO) $(mZ)Windows only$(mE)" | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
@echo "X11: $(ANS_YES) (direct+bridge)" | |||
else | |||
@echo "X11: $(ANS_NO) $(mS)X11 missing$(mE)" | |||
endif | |||
# ifeq ($(MACOS),true) | |||
# @echo "Cocoa: $(ANS_YES) (direct+bridge)" | |||
# else | |||
# @echo "Cocoa: $(ANS_NO) $(mZ)MacOS only$(mE)" | |||
# endif | |||
# ifeq ($(WIN32),true) | |||
# @echo "Windows: $(ANS_YES) (direct+bridge)" | |||
# else | |||
# @echo "Windows: $(ANS_NO) $(mZ)Windows only$(mE)" | |||
# endif | |||
@echo "" | |||
@echo "$(tS)---> File formats: $(tE)" | |||
@@ -804,6 +903,11 @@ ifeq ($(HAVE_DGL),true) | |||
else | |||
@echo "DISTRHO Plugins:$(ANS_YES) (without UI)" | |||
endif | |||
ifeq ($(HAVE_PROJECTM),true) | |||
@echo "DISTRHO ProM: $(ANS_YES)" | |||
else | |||
@echo "DISTRHO ProM: $(ANS_NO) (missing libprojectM)" | |||
endif | |||
ifeq ($(HAVE_ZYN_DEPS),true) | |||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
@echo "ZynAddSubFX: $(ANS_YES) (with UI)" | |||
@@ -142,15 +142,6 @@ endif | |||
endif | |||
endif | |||
# -------------------------------------------------------------- | |||
# Check for required libs | |||
ifeq ($(LINUX),true) | |||
ifeq (,$(wildcard /usr/include/magic.h)) | |||
$(error libmagic missing, cannot continue) | |||
endif | |||
endif | |||
# -------------------------------------------------------------- | |||
# Check for optional libs (required by backend or bridges) | |||
@@ -173,6 +164,13 @@ HAVE_QT5 = $(shell pkg-config --exists Qt5Core Qt5Gui Qt5Widgets && ech | |||
HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) | |||
HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) | |||
HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true) | |||
HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) | |||
HAVE_ZYN_DEPS = $(shell pkg-config --exists fftw3 mxml zlib && echo true) | |||
HAVE_ZYN_UI_DEPS = $(shell pkg-config --exists ntk_images ntk && echo true) | |||
# libmagic doesn't have a pkg-config file, so we need to call the compiler to test it | |||
HAVE_LIBMAGIC = $(shell echo '\#include <magic.h>' | $(CC) $(CFLAGS) -x c -w -c - -o .libmagic-tmp 2>/dev/null && echo true) | |||
# -------------------------------------------------------------- | |||
# Set Qt tools | |||
@@ -247,35 +245,9 @@ else | |||
DEFAULT_QT ?= 5 | |||
endif | |||
# -------------------------------------------------------------- | |||
# Check for optional libs (required by internal plugins) | |||
HAVE_ZYN_DEPS = $(shell pkg-config --exists fftw3 mxml zlib && echo true) | |||
HAVE_ZYN_UI_DEPS = $(shell pkg-config --exists ntk_images ntk && echo true) | |||
# -------------------------------------------------------------- | |||
# Set base defines | |||
ifeq ($(HAVE_DGL),true) | |||
BASE_FLAGS += -DHAVE_DGL | |||
endif | |||
ifeq ($(HAVE_LIBLO),true) | |||
BASE_FLAGS += -DHAVE_LIBLO | |||
endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
BASE_FLAGS += -DHAVE_FLUIDSYNTH | |||
endif | |||
ifeq ($(HAVE_LINUXSAMPLER),true) | |||
BASE_FLAGS += -DHAVE_LINUXSAMPLER | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
BASE_FLAGS += -DHAVE_X11 | |||
endif | |||
ifeq ($(CARLA_VESTIGE_HEADER),true) | |||
BASE_FLAGS += -DVESTIGE_HEADER | |||
endif | |||
@@ -298,6 +270,11 @@ LINUXSAMPLER_FLAGS = $(shell pkg-config --cflags linuxsampler) -DIS_CPP11=1 -Wno | |||
LINUXSAMPLER_LIBS = $(shell pkg-config --libs linuxsampler) | |||
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) | |||
@@ -367,10 +344,8 @@ endif | |||
# Set libs stuff (part 3) | |||
ifeq ($(HAVE_ZYN_DEPS),true) | |||
NATIVE_PLUGINS_FLAGS += -DWANT_ZYNADDSUBFX | |||
NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs fftw3 mxml zlib) | |||
ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
NATIVE_PLUGINS_FLAGS += -DWANT_ZYNADDSUBFX_UI | |||
NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs ntk_images ntk) | |||
endif | |||
endif | |||
@@ -65,7 +65,6 @@ STANDALONE_LINK_FLAGS = $(JACKBRIDGE_LIBS) | |||
STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
STANDALONE_LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | |||
STANDALONE_LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
STANDALONE_LINK_FLAGS += $(LIBLO_LIBS) | |||
STANDALONE_LINK_FLAGS += $(LILV_LIBS) | |||
STANDALONE_LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | |||
STANDALONE_LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
@@ -85,8 +84,12 @@ STANDALONE_LINK_FLAGS += $(RTAUDIO_LIBS) | |||
STANDALONE_LINK_FLAGS += $(RTMIDI_LIBS) | |||
endif | |||
ifeq ($(HAVE_DGL),true) | |||
STANDALONE_LINK_FLAGS += $(DGL_LIBS) | |||
ifeq ($(HAVE_LIBLO),true) | |||
STANDALONE_LINK_FLAGS += $(LIBLO_LIBS) | |||
endif | |||
ifeq ($(HAVE_LIBMAGIC),true) | |||
STANDALONE_LINK_FLAGS += -lmagic | |||
endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
@@ -97,12 +100,12 @@ ifeq ($(HAVE_LINUXSAMPLER),true) | |||
STANDALONE_LINK_FLAGS += $(LINUXSAMPLER_LIBS) | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
STANDALONE_LINK_FLAGS += $(X11_LIBS) | |||
ifeq ($(HAVE_DGL),true) | |||
STANDALONE_LINK_FLAGS += $(DGL_LIBS) | |||
endif | |||
ifeq ($(UNIX),true) | |||
STANDALONE_LINK_FLAGS += -lmagic | |||
ifeq ($(HAVE_X11),true) | |||
STANDALONE_LINK_FLAGS += $(X11_LIBS) | |||
endif | |||
UTILS_LINK_FLAGS = $(JUCE_AUDIO_BASICS_LIBS) | |||
@@ -1448,7 +1448,7 @@ protected: | |||
event.ctrl.convertToMidiData(event.channel, size, data); | |||
CARLA_SAFE_ASSERT_CONTINUE(size > 0 && size <= 3); | |||
if (curMidiDataPos + 1 /* size*/ + 4 /* time */ + size >= kBridgeRtClientDataMidiOutSize) | |||
if (curMidiDataPos + 1U /* size*/ + 4U /* time */ + size >= kBridgeRtClientDataMidiOutSize) | |||
break; | |||
// set size | |||
@@ -1462,7 +1462,7 @@ protected: | |||
for (uint8_t j=0; j<size; ++j) | |||
*midiData++ = data[j]; | |||
curMidiDataPos += 1 /* size*/ + 4 /* time */ + size; | |||
curMidiDataPos += 1U /* size*/ + 4U /* time */ + size; | |||
} | |||
else if (event.type == kEngineEventTypeMidi) | |||
{ | |||
@@ -1486,7 +1486,7 @@ protected: | |||
for (uint8_t j=1; j<_midiEvent.size; ++j) | |||
*midiData++ = _midiData[j]; | |||
curMidiDataPos += 1 /* size*/ + 4 /* time */ + _midiEvent.size; | |||
curMidiDataPos += 1U /* size*/ + 4U /* time */ + _midiEvent.size; | |||
} | |||
} | |||
@@ -15,6 +15,8 @@ | |||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
*/ | |||
#include "CarlaDefines.h" | |||
#ifdef HAVE_LIBLO | |||
#include "CarlaEngine.hpp" | |||
@@ -18,6 +18,8 @@ | |||
#ifndef CARLA_ENGINE_OSC_HPP_INCLUDED | |||
#define CARLA_ENGINE_OSC_HPP_INCLUDED | |||
#include "CarlaDefines.h" | |||
#ifdef HAVE_LIBLO | |||
#include "CarlaBackend.h" | |||
@@ -15,6 +15,8 @@ | |||
* For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
*/ | |||
#include "CarlaDefines.h" | |||
#ifdef HAVE_LIBLO | |||
#include "CarlaBackendUtils.hpp" | |||
@@ -1676,7 +1676,7 @@ public: | |||
midiData = midiData + 1; | |||
// get time as 32bit | |||
time = *(uint32_t*)midiData; | |||
time = *(const uint32_t*)midiData; | |||
// advance 32 bits (4 bytes) | |||
midiData = midiData + 4; | |||
@@ -1689,7 +1689,7 @@ public: | |||
pData->event.portOut->writeMidiEvent(time, size, data); | |||
read += 1 /* size*/ + 4 /* time */ + size; | |||
read += 1U /* size*/ + 4U /* time */ + size; | |||
} | |||
} // End of Control and MIDI Output | |||
@@ -411,7 +411,7 @@ public: | |||
void setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept override | |||
{ | |||
if (channel >= 0 && channel < MAX_MIDI_CHANNELS) | |||
pData->prog.current = fCurProgs[channel]; | |||
pData->prog.current = static_cast<int32_t>(fCurProgs[channel]); | |||
CarlaPlugin::setCtrlChannel(channel, sendOsc, sendCallback); | |||
} | |||
@@ -438,7 +438,7 @@ public: | |||
if (programList.size() == MAX_MIDI_CHANNELS) | |||
{ | |||
int8_t channel = 0; | |||
uint8_t channel = 0; | |||
for (juce::String *it=programList.begin(), *end=programList.end(); it != end; ++it) | |||
{ | |||
const int index(it->getIntValue()); | |||
@@ -464,15 +464,15 @@ public: | |||
const int8_t channel(kIsGIG ? pData->ctrlChannel : int8_t(0)); | |||
if (index >= 0 && channel >= 0) | |||
setProgramInternal(static_cast<uint>(index), channel, sendCallback, false); | |||
setProgramInternal(static_cast<uint>(index), static_cast<uint8_t>(channel), sendCallback, false); | |||
CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback); | |||
} | |||
void setProgramInternal(const uint32_t index, const int8_t channel, const bool sendCallback, const bool inRtContent) noexcept | |||
void setProgramInternal(const uint32_t index, const uint8_t channel, const bool sendCallback, const bool inRtContent) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(index < pData->prog.count,); | |||
CARLA_SAFE_ASSERT_RETURN(channel >= 0 && channel < MAX_MIDI_CHANNELS,); | |||
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,); | |||
if (fCurProgs[channel] == index) | |||
return; | |||
@@ -500,12 +500,14 @@ public: | |||
if (pData->ctrlChannel == channel) | |||
{ | |||
pData->prog.current = index; | |||
const int32_t iindex(static_cast<int32_t>(index)); | |||
pData->prog.current = iindex; | |||
if (inRtContent) | |||
pData->postponeRtEvent(kPluginPostRtEventProgramChange, static_cast<int32_t>(index), 0, 0.0f); | |||
pData->postponeRtEvent(kPluginPostRtEventProgramChange, iindex, 0, 0.0f); | |||
else if (sendCallback) | |||
pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); | |||
pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, iindex, 0, 0.0f, nullptr); | |||
} | |||
} | |||
@@ -1042,8 +1044,19 @@ public: | |||
// -------------------------------------------------------------------------------------------------------- | |||
// Parameter outputs | |||
fParamBuffers[LinuxSamplerDiskStreamCount] = fEngineChannels[0]->GetDiskStreamCount(); | |||
fParamBuffers[LinuxSamplerVoiceCount] = fEngineChannels[0]->GetVoiceCount(); | |||
uint diskStreamCount=0, voiceCount=0; | |||
for (uint i=0; i<kMaxChannels; ++i) | |||
{ | |||
LinuxSampler::EngineChannel* const engineChannel(fEngineChannels[i]); | |||
CARLA_SAFE_ASSERT_CONTINUE(engineChannel != nullptr); | |||
diskStreamCount += engineChannel->GetDiskStreamCount(); | |||
/**/ voiceCount += engineChannel->GetVoiceCount(); | |||
} | |||
fParamBuffers[LinuxSamplerDiskStreamCount] = static_cast<float>(diskStreamCount); | |||
fParamBuffers[LinuxSamplerVoiceCount] = static_cast<float>(voiceCount); | |||
} | |||
bool processSingle(float** const outBuffer, const uint32_t frames, const uint32_t timeOffset) | |||
@@ -1198,7 +1211,7 @@ public: | |||
samplerChannel->SetEngineType(kIsGIG ? "GIG" : "SFZ"); | |||
samplerChannel->SetAudioOutputDevice(&fAudioOutputDevice); | |||
samplerChannel->SetMidiInputDevice(&fMidiInputDevice); | |||
//samplerChannel->SetMidiInputDevice(&fMidiInputDevice); | |||
samplerChannel->SetMidiInputChannel(kUses16Outs ? static_cast<LinuxSampler::midi_chan_t>(i) : LinuxSampler::midi_chan_all); | |||
//samplerChannel->Connect(fMidiInputPort); | |||
@@ -1208,6 +1221,7 @@ public: | |||
engineChannel->Pan(0.0f); | |||
engineChannel->Volume(kIsGIG ? LinuxSampler::kVolumeMax/10.0f : LinuxSampler::kVolumeMax); // FIXME | |||
engineChannel->SetMidiInstrumentMapToDefault(); | |||
engineChannel->Connect(fMidiInputPort); | |||
if (kUses16Outs) | |||
{ | |||
@@ -19,7 +19,8 @@ | |||
#include <gtk/gtk.h> | |||
#ifdef CARLA_OS_LINUX | |||
#if defined(CARLA_OS_LINUX) && defined(HAVE_X11) | |||
# define USE_CUSTOM_X11_METHODS | |||
# include <gdk/gdkx.h> | |||
#endif | |||
@@ -225,10 +226,11 @@ protected: | |||
CARLA_SAFE_ASSERT_RETURN(fWindow != nullptr,); | |||
carla_debug("CarlaBridgeToolkitGtk::setTransient(0x" P_UINTPTR ")", winId); | |||
#ifdef USE_CUSTOM_X11_METHODS | |||
GdkWindow* const gdkWindow(gtk_widget_get_window(fWindow)); | |||
CARLA_SAFE_ASSERT_RETURN(gdkWindow != nullptr,); | |||
#ifdef BRIDGE_GTK3 | |||
# ifdef BRIDGE_GTK3 | |||
GdkDisplay* const gdkDisplay(gdk_window_get_display(gdkWindow)); | |||
CARLA_SAFE_ASSERT_RETURN(gdkDisplay != nullptr,); | |||
@@ -237,15 +239,16 @@ protected: | |||
const ::XID xid(gdk_x11_window_get_xid(gdkWindow)); | |||
CARLA_SAFE_ASSERT_RETURN(xid != 0,); | |||
#else | |||
# else | |||
::Display* const display(gdk_x11_drawable_get_xdisplay(gdkWindow)); | |||
CARLA_SAFE_ASSERT_RETURN(display != nullptr,); | |||
const ::XID xid(gdk_x11_drawable_get_xid(gdkWindow)); | |||
CARLA_SAFE_ASSERT_RETURN(xid != 0,); | |||
#endif | |||
# endif | |||
XSetTransientForHint(display, xid, static_cast< ::Window>(winId)); | |||
#endif | |||
} | |||
// --------------------------------------------------------------------- | |||
@@ -30,7 +30,8 @@ | |||
# include <QtGui/QMainWindow> | |||
#endif | |||
#if defined(CARLA_OS_LINUX) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||
#if defined(CARLA_OS_LINUX) && defined(HAVE_X11) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||
# define USE_CUSTOM_X11_METHODS | |||
# include <QtGui/QX11Info> | |||
# include <X11/Xlib.h> | |||
#endif | |||
@@ -116,7 +117,7 @@ public: | |||
if (options.transientWindowId != 0) | |||
{ | |||
#if defined(CARLA_OS_LINUX) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) | |||
#ifdef USE_CUSTOM_X11_METHODS | |||
XSetTransientForHint(QX11Info::display(), static_cast< ::Window>(fWindow->winId()), static_cast< ::Window>(options.transientWindowId)); | |||
#endif | |||
} | |||
@@ -26,9 +26,6 @@ | |||
#include "lv2/atom.h" | |||
#include "lv2/urid.h" | |||
//#include "CarlaBridgeToolkit.hpp" | |||
//#include "CarlaLibUtils.hpp" | |||
CARLA_BRIDGE_START_NAMESPACE | |||
/*! | |||
@@ -53,10 +53,12 @@ BUILD_WINDOWS_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_HWND | |||
LINK_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows | |||
ifeq ($(LINUX),true) | |||
ifeq ($(HAVE_X11),true) | |||
LINK_GTK2_FLAGS += -lX11 | |||
LINK_GTK3_FLAGS += -lX11 | |||
LINK_QT4_FLAGS += -lX11 | |||
endif | |||
endif | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
@@ -18,10 +18,8 @@ | |||
#ifndef CARLA_DEFINES_H_INCLUDED | |||
#define CARLA_DEFINES_H_INCLUDED | |||
/* IDE Helper */ | |||
#ifndef REAL_BUILD | |||
# include "config.h" | |||
#endif | |||
/* Configuration */ | |||
#include "config.h" | |||
/* Compatibility with non-clang compilers */ | |||
#ifndef __has_feature | |||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------- | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_3bandeq(); | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_3bandeq() | |||
{ | |||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------- | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_3bandsplitter(); | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_3bandsplitter() | |||
{ | |||
@@ -67,6 +67,9 @@ END_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------- | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_mverb(); | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_mverb() | |||
{ | |||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------- | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_nekobi(); | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_nekobi() | |||
{ | |||
@@ -66,6 +66,9 @@ END_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------- | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_pingpongpan(); | |||
CARLA_EXPORT | |||
void carla_register_native_plugin_distrho_pingpongpan() | |||
{ | |||
@@ -60,7 +60,6 @@ LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
LINK_FLAGS += $(JUCE_AUDIO_FORMATS_LIBS) | |||
LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
LINK_FLAGS += $(LIBLO_LIBS) | |||
LINK_FLAGS += $(LILV_LIBS) | |||
LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) | |||
LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
@@ -77,8 +76,12 @@ ifeq ($(MACOS),true) | |||
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) | |||
endif | |||
ifeq ($(HAVE_DGL),true) | |||
LINK_FLAGS += $(DGL_LIBS) | |||
ifeq ($(HAVE_LIBLO),true) | |||
LINK_FLAGS += $(LIBLO_LIBS) | |||
endif | |||
ifeq ($(HAVE_LIBMAGIC),true) | |||
LINK_FLAGS += -lmagic | |||
endif | |||
ifeq ($(HAVE_FLUIDSYNTH),true) | |||
@@ -89,12 +92,12 @@ ifeq ($(HAVE_LINUXSAMPLER),true) | |||
LINK_FLAGS += $(LINUXSAMPLER_LIBS) | |||
endif | |||
ifeq ($(HAVE_X11),true) | |||
LINK_FLAGS += $(X11_LIBS) | |||
ifeq ($(HAVE_DGL),true) | |||
LINK_FLAGS += $(DGL_LIBS) | |||
endif | |||
ifeq ($(UNIX),true) | |||
LINK_FLAGS += -lmagic | |||
ifeq ($(HAVE_X11),true) | |||
LINK_FLAGS += $(X11_LIBS) | |||
endif | |||
# ---------------------------------------------------------------------------------------------------------------------------- | |||
@@ -21,13 +21,13 @@ | |||
#include "CarlaBackend.h" | |||
#include "CarlaUtils.hpp" | |||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||
# include "magic.h" | |||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||
# include <magic.h> | |||
#endif | |||
CARLA_BACKEND_START_NAMESPACE | |||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||
// ----------------------------------------------------------------------- | |||
class CarlaMagic | |||
@@ -72,7 +72,7 @@ BinaryType getBinaryTypeFromFile(const char* const filename) | |||
if (filename == nullptr || filename[0] == '\0') | |||
return BINARY_NATIVE; | |||
#if defined(CARLA_OS_UNIX) && ! defined(BUILD_BRIDGE) | |||
#if defined(HAVE_LIBMAGIC) && ! defined(BUILD_BRIDGE) | |||
static const CarlaMagic magic; | |||
const char* const output(magic.getFileDescription(filename)); | |||