@@ -6,6 +6,7 @@ | |||||
*.a | *.a | ||||
*.o | *.o | ||||
*.dll | *.dll | ||||
*.dll.def | |||||
*.exe | *.exe | ||||
*.so | *.so | ||||
@@ -179,13 +179,21 @@ posix64: | |||||
$(MAKE) -C c++/carla-bridge posix64 | $(MAKE) -C c++/carla-bridge posix64 | ||||
$(MAKE) -C c++/carla-discovery posix64 | $(MAKE) -C c++/carla-discovery posix64 | ||||
win32: | |||||
$(MAKE) -C c++/carla-bridge win32 | |||||
$(MAKE) -C c++/carla-discovery win32 | |||||
win64: | |||||
$(MAKE) -C c++/carla-bridge win64 | |||||
$(MAKE) -C c++/carla-discovery win64 | |||||
wine32: | wine32: | ||||
$(MAKE) -C c++/carla-bridge wine32 | |||||
$(MAKE) -C c++/carla-discovery wine32 | |||||
$(MAKE) -C c++/carla-jackbridge wine32 | |||||
cp c++/carla-jackbridge/libcarla-jackbridge-win32.dll.so c++/carla-bridge/libcarla-jackbridge-win32.dll | |||||
wine64: | wine64: | ||||
$(MAKE) -C c++/carla-bridge wine64 | |||||
$(MAKE) -C c++/carla-discovery wine64 | |||||
$(MAKE) -C c++/carla-jackbridge wine64 | |||||
cp c++/carla-jackbridge/libcarla-jackbridge-win64.dll.so c++/carla-bridge/libcarla-jackbridge-win64.dll | |||||
# ------------------------------------------------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------------------------------------------------ | ||||
@@ -194,6 +202,7 @@ clean: | |||||
$(MAKE) clean -C c++/carla-bridge | $(MAKE) clean -C c++/carla-bridge | ||||
$(MAKE) clean -C c++/carla-discovery | $(MAKE) clean -C c++/carla-discovery | ||||
$(MAKE) clean -C c++/carla-lilv | $(MAKE) clean -C c++/carla-lilv | ||||
$(MAKE) clean -C c++/carla-jackbridge | |||||
$(MAKE) clean -C c++/jackmeter | $(MAKE) clean -C c++/jackmeter | ||||
$(MAKE) clean -C c++/xycontroller | $(MAKE) clean -C c++/xycontroller | ||||
rm -f *~ src/*~ src/*.pyc src/ui_*.py src/resources_rc.py | rm -f *~ src/*~ src/*.pyc src/ui_*.py src/resources_rc.py | ||||
@@ -13,7 +13,7 @@ HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) | |||||
HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true) | HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true) | ||||
HAVE_SUIL = $(shell pkg-config --exists suil-0 && echo true) | HAVE_SUIL = $(shell pkg-config --exists suil-0 && echo true) | ||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall -I. -I../carla-includes | |||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall -I. -I../carla-includes -I../carla-jackbridge | |||||
CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | ||||
@@ -65,10 +65,11 @@ OBJS = \ | |||||
carla_shared.o \ | carla_shared.o \ | ||||
carla_threads.o \ | carla_threads.o \ | ||||
ladspa.o dssi.o lv2.o vst.o fluidsynth.o linuxsampler.o \ | ladspa.o dssi.o lv2.o vst.o fluidsynth.o linuxsampler.o \ | ||||
../carla-jackbridge/carla_jackbridge.o \ | |||||
../carla-lilv/carla_lilv.a | ../carla-lilv/carla_lilv.a | ||||
ifeq ($(WANT_RTAUDIO),true) | ifeq ($(WANT_RTAUDIO),true) | ||||
CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -D_FORTIFY_SOURCE=2 -DHAVE_GETTIMEOFDAY | |||||
CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY -D_FORTIFY_SOURCE=2 | |||||
OBJS += rtaudio-4.0.11/RtAudio.o | OBJS += rtaudio-4.0.11/RtAudio.o | ||||
OBJS += rtmidi-2.0.0/RtMidi.o | OBJS += rtmidi-2.0.0/RtMidi.o | ||||
endif | endif | ||||
@@ -68,8 +68,7 @@ OBJS = \ | |||||
../carla-lilv/carla_lilv.a | ../carla-lilv/carla_lilv.a | ||||
ifeq ($(WANT_RTAUDIO),true) | ifeq ($(WANT_RTAUDIO),true) | ||||
CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY | |||||
CARLA_CXX_FLAGS += -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | |||||
CARLA_CXX_FLAGS += -Irtaudio-4.0.11 -Irtmidi-2.0.0 -DCARLA_ENGINE_RTAUDIO -DHAVE_GETTIMEOFDAY -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | |||||
OBJS += rtaudio-4.0.11/RtAudio.o | OBJS += rtaudio-4.0.11/RtAudio.o | ||||
OBJS += rtmidi-2.0.0/RtMidi.o | OBJS += rtmidi-2.0.0/RtMidi.o | ||||
endif | endif | ||||
@@ -42,7 +42,8 @@ public: | |||||
m_type = ptype; | m_type = ptype; | ||||
m_hints = PLUGIN_IS_BRIDGE; | m_hints = PLUGIN_IS_BRIDGE; | ||||
initiated = saved = false; | |||||
m_initiated = false; | |||||
m_saved = false; | |||||
info.ains = 0; | info.ains = 0; | ||||
info.aouts = 0; | info.aouts = 0; | ||||
@@ -59,7 +60,7 @@ public: | |||||
params = nullptr; | params = nullptr; | ||||
m_thread = new CarlaPluginThread(engine, this, CarlaPluginThread::PLUGIN_THREAD_BRIDGE); | |||||
osc.thread = new CarlaPluginThread(engine, this, CarlaPluginThread::PLUGIN_THREAD_BRIDGE); | |||||
} | } | ||||
~BridgePlugin() | ~BridgePlugin() | ||||
@@ -70,24 +71,20 @@ public: | |||||
{ | { | ||||
osc_send_hide(&osc.data); | osc_send_hide(&osc.data); | ||||
osc_send_quit(&osc.data); | osc_send_quit(&osc.data); | ||||
osc_clear_data(&osc.data); | |||||
} | } | ||||
// Wait a bit first, try safe quit else force kill | |||||
if (m_thread->isRunning()) | |||||
if (osc.thread) | |||||
{ | { | ||||
if (m_thread->wait(2000) == false) | |||||
m_thread->quit(); | |||||
if (m_thread->isRunning() && m_thread->wait(1000) == false) | |||||
// Wait a bit first, try safe quit, then force kill | |||||
if (osc.thread->isRunning() && ! osc.thread->wait(3000)) | |||||
{ | { | ||||
qWarning("Failed to properly stop Bridge thread"); | |||||
m_thread->terminate(); | |||||
qWarning("Failed to properly stop Plugin Bridge thread"); | |||||
osc.thread->terminate(); | |||||
} | } | ||||
} | |||||
delete m_thread; | |||||
osc_clear_data(&osc.data); | |||||
delete osc.thread; | |||||
} | |||||
if (info.name) | if (info.name) | ||||
free((void*)info.name); | free((void*)info.name); | ||||
@@ -159,7 +156,7 @@ public: | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Information (per-plugin data) | // Information (per-plugin data) | ||||
double getParameterValue(uint32_t parameterId) | |||||
double getParameterValue(const uint32_t parameterId) | |||||
{ | { | ||||
Q_ASSERT(parameterId < param.count); | Q_ASSERT(parameterId < param.count); | ||||
@@ -515,11 +512,11 @@ public: | |||||
// } | // } | ||||
case PluginBridgeUpdateNow: | case PluginBridgeUpdateNow: | ||||
initiated = true; | |||||
m_initiated = true; | |||||
break; | break; | ||||
case PluginBridgeSaved: | case PluginBridgeSaved: | ||||
saved = true; | |||||
m_saved = true; | |||||
break; | break; | ||||
} | } | ||||
@@ -535,9 +532,6 @@ public: | |||||
params[parameterId].value = fixParameterValue(value, param.ranges[parameterId]); | params[parameterId].value = fixParameterValue(value, param.ranges[parameterId]); | ||||
if (sendGui) | |||||
osc_send_control(&osc.data, param.data[parameterId].rindex, value); | |||||
CarlaPlugin::setParameterValue(parameterId, value, sendGui, sendOsc, sendCallback); | CarlaPlugin::setParameterValue(parameterId, value, sendGui, sendOsc, sendCallback); | ||||
} | } | ||||
@@ -580,30 +574,10 @@ public: | |||||
} | } | ||||
} | } | ||||
void setProgram(int32_t index, bool sendGui, bool sendOsc, bool sendCallback, bool block) | |||||
{ | |||||
Q_ASSERT(index < (int32_t)prog.count); | |||||
if (sendGui) | |||||
osc_send_program(&osc.data, index); | |||||
CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback, block); | |||||
} | |||||
void setMidiProgram(int32_t index, bool sendGui, bool sendOsc, bool sendCallback, bool block) | |||||
{ | |||||
Q_ASSERT(index < (int32_t)midiprog.count); | |||||
if (sendGui) | |||||
osc_send_midi_program(&osc.data, index); | |||||
CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback, block); | |||||
} | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Set gui stuff | // Set gui stuff | ||||
void showGui(bool yesNo) | |||||
void showGui(const bool yesNo) | |||||
{ | { | ||||
if (yesNo) | if (yesNo) | ||||
osc_send_show(&osc.data); | osc_send_show(&osc.data); | ||||
@@ -614,26 +588,68 @@ public: | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
// Plugin state | // Plugin state | ||||
void reload() | |||||
{ | |||||
} | |||||
void prepareForSave() | void prepareForSave() | ||||
{ | { | ||||
saved = false; | |||||
m_saved = false; | |||||
osc_send_configure(&osc.data, CARLA_BRIDGE_MSG_SAVE_NOW, ""); | osc_send_configure(&osc.data, CARLA_BRIDGE_MSG_SAVE_NOW, ""); | ||||
for (int i=0; i < 100; i++) | for (int i=0; i < 100; i++) | ||||
{ | { | ||||
if (saved) | |||||
if (m_saved) | |||||
break; | break; | ||||
carla_msleep(100); | carla_msleep(100); | ||||
} | } | ||||
if (! saved) | |||||
if (! m_saved) | |||||
qWarning("BridgePlugin::prepareForSave() - Timeout while requesting save state"); | qWarning("BridgePlugin::prepareForSave() - Timeout while requesting save state"); | ||||
else | else | ||||
qWarning("BridgePlugin::prepareForSave() - success!"); | |||||
qDebug("BridgePlugin::prepareForSave() - success!"); | |||||
} | |||||
// ------------------------------------------------------------------- | |||||
// Post-poned events | |||||
void uiParameterChange(const uint32_t index, const double value) | |||||
{ | |||||
Q_ASSERT(index < param.count); | |||||
osc_send_control(&osc.data, param.data[index].rindex, value); | |||||
} | |||||
void uiProgramChange(const uint32_t index) | |||||
{ | |||||
Q_ASSERT(index < prog.count); | |||||
osc_send_program(&osc.data, index); | |||||
} | |||||
void uiMidiProgramChange(const uint32_t index) | |||||
{ | |||||
Q_ASSERT(index < midiprog.count); | |||||
osc_send_midi_program(&osc.data, index); | |||||
} | |||||
void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) | |||||
{ | |||||
Q_ASSERT(channel < 16); | |||||
Q_ASSERT(note < 128); | |||||
Q_ASSERT(velo > 0 && velo < 128); | |||||
// TODO | |||||
Q_UNUSED(channel); | |||||
Q_UNUSED(note); | |||||
Q_UNUSED(velo); | |||||
} | |||||
void uiNoteOff(const uint8_t channel, const uint8_t note) | |||||
{ | |||||
Q_ASSERT(channel < 16); | |||||
Q_ASSERT(note < 128); | |||||
// TODO | |||||
Q_UNUSED(channel); | |||||
Q_UNUSED(note); | |||||
} | } | ||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
@@ -653,9 +669,9 @@ public: | |||||
// ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
bool init(const char* filename, const char* const name, const char* label) | |||||
bool init(const char* const filename, const char* const name, const char* const label) | |||||
{ | { | ||||
const char* bridgeBinary = getBinaryBidgePath(m_binary); | |||||
const char* const bridgeBinary = getBinaryBidgePath(m_binary); | |||||
if (! bridgeBinary) | if (! bridgeBinary) | ||||
{ | { | ||||
@@ -671,22 +687,22 @@ public: | |||||
// register plugin now so we can receive OSC (and wait for it) | // register plugin now so we can receive OSC (and wait for it) | ||||
x_engine->__bridgePluginRegister(m_id, this); | x_engine->__bridgePluginRegister(m_id, this); | ||||
m_thread->setOscData(bridgeBinary, label, getPluginTypeString(m_type)); | |||||
m_thread->start(); | |||||
osc.thread->setOscData(bridgeBinary, label, getPluginTypeString(m_type)); | |||||
osc.thread->start(); | |||||
for (int i=0; i < 100; i++) | |||||
for (int i=0; i < 200; i++) | |||||
{ | { | ||||
if (initiated) | |||||
if (m_initiated) | |||||
break; | break; | ||||
carla_msleep(50); | carla_msleep(50); | ||||
} | } | ||||
if (! initiated) | |||||
if (! m_initiated) | |||||
{ | { | ||||
// unregister so it gets handled properly | // unregister so it gets handled properly | ||||
x_engine->__bridgePluginRegister(m_id, nullptr); | x_engine->__bridgePluginRegister(m_id, nullptr); | ||||
m_thread->terminate(); | |||||
osc.thread->terminate(); | |||||
setLastError("Timeout while waiting for a response from plugin-bridge"); | setLastError("Timeout while waiting for a response from plugin-bridge"); | ||||
return false; | return false; | ||||
} | } | ||||
@@ -695,11 +711,10 @@ public: | |||||
} | } | ||||
private: | private: | ||||
bool initiated; | |||||
bool saved; | |||||
const BinaryType m_binary; | const BinaryType m_binary; | ||||
CarlaPluginThread* m_thread; | |||||
bool m_initiated; | |||||
bool m_saved; | |||||
struct { | struct { | ||||
uint32_t ains, aouts; | uint32_t ains, aouts; | ||||
@@ -736,19 +751,7 @@ CarlaPlugin* CarlaPlugin::newBridge(const initializer& init, BinaryType btype, P | |||||
return nullptr; | return nullptr; | ||||
} | } | ||||
plugin->reload(); | |||||
if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | |||||
{ | |||||
if (/* inputs */ ((plugin->audioInCount() != 0 && plugin->audioInCount() != 2)) || /* outputs */ ((plugin->audioOutCount() != 0 && plugin->audioOutCount() != 2))) | |||||
{ | |||||
setLastError("Carla Rack Mode can only work with Stereo bridged plugins, sorry!"); | |||||
delete plugin; | |||||
return nullptr; | |||||
} | |||||
} | |||||
//plugin->reload(); | |||||
plugin->registerToOsc(); | plugin->registerToOsc(); | ||||
return plugin; | return plugin; | ||||
@@ -79,7 +79,7 @@ int CarlaEngine::maxClientNameSize() | |||||
# ifndef BUILD_BRIDGE | # ifndef BUILD_BRIDGE | ||||
if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | ||||
# endif | # endif | ||||
return jack_client_name_size(); | |||||
return jackbridge_client_name_size(); | |||||
#endif | #endif | ||||
return STR_MAX/2; | return STR_MAX/2; | ||||
} | } | ||||
@@ -90,7 +90,7 @@ int CarlaEngine::maxPortNameSize() | |||||
# ifndef BUILD_BRIDGE | # ifndef BUILD_BRIDGE | ||||
if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | if (carlaOptions.processMode != PROCESS_MODE_CONTINUOUS_RACK) | ||||
# endif | # endif | ||||
return jack_port_name_size(); | |||||
return jackbridge_port_name_size(); | |||||
#endif | #endif | ||||
return STR_MAX; | return STR_MAX; | ||||
} | } | ||||
@@ -572,7 +572,7 @@ CarlaEngineClient::~CarlaEngineClient() | |||||
{ | { | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
if (handle.jackClient) | if (handle.jackClient) | ||||
jack_client_close(handle.jackClient); | |||||
jackbridge_client_close(handle.jackClient); | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_RTAUDIO | #ifdef CARLA_ENGINE_RTAUDIO | ||||
if (handle.rtAudioPtr) | if (handle.rtAudioPtr) | ||||
@@ -594,7 +594,7 @@ void CarlaEngineClient::activate() | |||||
{ | { | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
if (handle.jackClient) | if (handle.jackClient) | ||||
jack_activate(handle.jackClient); | |||||
jackbridge_activate(handle.jackClient); | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_RTAUDIO | #ifdef CARLA_ENGINE_RTAUDIO | ||||
if (handle.rtAudioPtr) | if (handle.rtAudioPtr) | ||||
@@ -619,7 +619,7 @@ void CarlaEngineClient::deactivate() | |||||
{ | { | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
if (handle.jackClient) | if (handle.jackClient) | ||||
jack_deactivate(handle.jackClient); | |||||
jackbridge_deactivate(handle.jackClient); | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_RTAUDIO | #ifdef CARLA_ENGINE_RTAUDIO | ||||
if (handle.rtAudioPtr) | if (handle.rtAudioPtr) | ||||
@@ -672,11 +672,11 @@ const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType | |||||
switch (type) | switch (type) | ||||
{ | { | ||||
case CarlaEnginePortTypeAudio: | case CarlaEnginePortTypeAudio: | ||||
portHandle.jackPort = jack_port_register(handle.jackClient, name, JACK_DEFAULT_AUDIO_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||||
portHandle.jackPort = jackbridge_port_register(handle.jackClient, name, JACK_DEFAULT_AUDIO_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||||
break; | break; | ||||
case CarlaEnginePortTypeControl: | case CarlaEnginePortTypeControl: | ||||
case CarlaEnginePortTypeMIDI: | case CarlaEnginePortTypeMIDI: | ||||
portHandle.jackPort = jack_port_register(handle.jackClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||||
portHandle.jackPort = jackbridge_port_register(handle.jackClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
@@ -720,7 +720,7 @@ CarlaEngineBasePort::~CarlaEngineBasePort() | |||||
# endif | # endif | ||||
{ | { | ||||
if (handle.jackClient && handle.jackPort) | if (handle.jackClient && handle.jackPort) | ||||
jack_port_unregister(handle.jackClient, handle.jackPort); | |||||
jackbridge_port_unregister(handle.jackClient, handle.jackPort); | |||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
@@ -746,7 +746,7 @@ float* CarlaEngineAudioPort::getJackAudioBuffer(uint32_t nframes) | |||||
return nullptr; | return nullptr; | ||||
# endif | # endif | ||||
Q_ASSERT(handle.jackPort); | Q_ASSERT(handle.jackPort); | ||||
return (float*)jack_port_get_buffer(handle.jackPort, nframes); | |||||
return (float*)jackbridge_port_get_buffer(handle.jackPort, nframes); | |||||
} | } | ||||
#endif | #endif | ||||
@@ -774,10 +774,10 @@ void CarlaEngineControlPort::initBuffer(CarlaEngine* const engine) | |||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
if (handle.jackPort) | if (handle.jackPort) | ||||
{ | { | ||||
buffer = jack_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||||
buffer = jackbridge_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||||
if (! isInput) | if (! isInput) | ||||
jack_midi_clear_buffer(buffer); | |||||
jackbridge_midi_clear_buffer(buffer); | |||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
@@ -808,7 +808,7 @@ uint32_t CarlaEngineControlPort::getEventCount() | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
return jack_midi_get_event_count(buffer); | |||||
return jackbridge_midi_get_event_count(buffer); | |||||
#else | #else | ||||
return 0; | return 0; | ||||
#endif | #endif | ||||
@@ -835,10 +835,10 @@ const CarlaEngineControlEvent* CarlaEngineControlPort::getEvent(uint32_t index) | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
static jack_midi_event_t jackEvent; | |||||
static jackbridge_midi_event_t jackEvent; | |||||
static CarlaEngineControlEvent carlaEvent; | static CarlaEngineControlEvent carlaEvent; | ||||
if (jack_midi_event_get(&jackEvent, buffer, index) != 0) | |||||
if (jackbridge_midi_event_get(&jackEvent, buffer, index) != 0) | |||||
return nullptr; | return nullptr; | ||||
memset(&carlaEvent, 0, sizeof(CarlaEngineControlEvent)); | memset(&carlaEvent, 0, sizeof(CarlaEngineControlEvent)); | ||||
@@ -934,28 +934,28 @@ void CarlaEngineControlPort::writeEvent(CarlaEngineControlEventType type, uint32 | |||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | ||||
data[1] = controller; | data[1] = controller; | ||||
data[2] = value * 127; | data[2] = value * 127; | ||||
jack_midi_event_write(buffer, time, data, 3); | |||||
jackbridge_midi_event_write(buffer, time, data, 3); | |||||
break; | break; | ||||
case CarlaEngineEventMidiBankChange: | case CarlaEngineEventMidiBankChange: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | ||||
data[1] = MIDI_CONTROL_BANK_SELECT; | data[1] = MIDI_CONTROL_BANK_SELECT; | ||||
data[2] = value; | data[2] = value; | ||||
jack_midi_event_write(buffer, time, data, 3); | |||||
jackbridge_midi_event_write(buffer, time, data, 3); | |||||
break; | break; | ||||
case CarlaEngineEventMidiProgramChange: | case CarlaEngineEventMidiProgramChange: | ||||
data[0] = MIDI_STATUS_PROGRAM_CHANGE + channel; | data[0] = MIDI_STATUS_PROGRAM_CHANGE + channel; | ||||
data[1] = value; | data[1] = value; | ||||
jack_midi_event_write(buffer, time, data, 2); | |||||
jackbridge_midi_event_write(buffer, time, data, 2); | |||||
break; | break; | ||||
case CarlaEngineEventAllSoundOff: | case CarlaEngineEventAllSoundOff: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | ||||
data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | ||||
jack_midi_event_write(buffer, time, data, 2); | |||||
jackbridge_midi_event_write(buffer, time, data, 2); | |||||
break; | break; | ||||
case CarlaEngineEventAllNotesOff: | case CarlaEngineEventAllNotesOff: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + channel; | ||||
data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | ||||
jack_midi_event_write(buffer, time, data, 2); | |||||
jackbridge_midi_event_write(buffer, time, data, 2); | |||||
break; | break; | ||||
} | } | ||||
#endif | #endif | ||||
@@ -985,10 +985,10 @@ void CarlaEngineMidiPort::initBuffer(CarlaEngine* const engine) | |||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
if (handle.jackPort) | if (handle.jackPort) | ||||
{ | { | ||||
buffer = jack_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||||
buffer = jackbridge_port_get_buffer(handle.jackPort, engine->getBufferSize()); | |||||
if (! isInput) | if (! isInput) | ||||
jack_midi_clear_buffer(buffer); | |||||
jackbridge_midi_clear_buffer(buffer); | |||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
@@ -1019,7 +1019,7 @@ uint32_t CarlaEngineMidiPort::getEventCount() | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
return jack_midi_get_event_count(buffer); | |||||
return jackbridge_midi_get_event_count(buffer); | |||||
#else | #else | ||||
return 0; | return 0; | ||||
#endif | #endif | ||||
@@ -1047,10 +1047,10 @@ const CarlaEngineMidiEvent* CarlaEngineMidiPort::getEvent(uint32_t index) | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
static jack_midi_event_t jackEvent; | |||||
static jackbridge_midi_event_t jackEvent; | |||||
static CarlaEngineMidiEvent carlaEvent; | static CarlaEngineMidiEvent carlaEvent; | ||||
if (jack_midi_event_get(&jackEvent, buffer, index) == 0 && jackEvent.size <= 4) | |||||
if (jackbridge_midi_event_get(&jackEvent, buffer, index) == 0 && jackEvent.size <= 4) | |||||
{ | { | ||||
carlaEvent.time = jackEvent.time; | carlaEvent.time = jackEvent.time; | ||||
carlaEvent.size = jackEvent.size; | carlaEvent.size = jackEvent.size; | ||||
@@ -1095,7 +1095,7 @@ void CarlaEngineMidiPort::writeEvent(uint32_t time, const uint8_t* data, uint8_t | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
jack_midi_event_write(buffer, time, data, size); | |||||
jackbridge_midi_event_write(buffer, time, data, size); | |||||
#endif | #endif | ||||
} | } | ||||
@@ -23,8 +23,7 @@ | |||||
#include "carla_threads.h" | #include "carla_threads.h" | ||||
#ifdef CARLA_ENGINE_JACK | #ifdef CARLA_ENGINE_JACK | ||||
#include <jack/jack.h> | |||||
#include <jack/midiport.h> | |||||
#include "carla_jackbridge.h" | |||||
#endif | #endif | ||||
#ifdef CARLA_ENGINE_RTAUDIO | #ifdef CARLA_ENGINE_RTAUDIO | ||||
@@ -110,41 +110,41 @@ bool CarlaEngineJack::init(const char* const clientName) | |||||
{ | { | ||||
qDebug("CarlaEngineJack::init(\"%s\")", clientName); | qDebug("CarlaEngineJack::init(\"%s\")", clientName); | ||||
client = jack_client_open(clientName, JackNullOption, nullptr); | |||||
client = jackbridge_client_open(clientName, JackNullOption, nullptr); | |||||
state = JackTransportStopped; | state = JackTransportStopped; | ||||
freewheel = false; | freewheel = false; | ||||
procThread = nullptr; | procThread = nullptr; | ||||
if (client) | if (client) | ||||
{ | { | ||||
sampleRate = jack_get_sample_rate(client); | |||||
bufferSize = jack_get_buffer_size(client); | |||||
sampleRate = jackbridge_get_sample_rate(client); | |||||
bufferSize = jackbridge_get_buffer_size(client); | |||||
jack_set_sample_rate_callback(client, carla_jack_srate_callback, this); | |||||
jack_set_buffer_size_callback(client, carla_jack_bufsize_callback, this); | |||||
jack_set_freewheel_callback(client, carla_jack_freewheel_callback, this); | |||||
jack_set_process_callback(client, carla_jack_process_callback, this); | |||||
jack_on_shutdown(client, carla_jack_shutdown_callback, this); | |||||
jackbridge_set_sample_rate_callback(client, carla_jack_srate_callback, this); | |||||
jackbridge_set_buffer_size_callback(client, carla_jack_bufsize_callback, this); | |||||
jackbridge_set_freewheel_callback(client, carla_jack_freewheel_callback, this); | |||||
jackbridge_set_process_callback(client, carla_jack_process_callback, this); | |||||
jackbridge_on_shutdown(client, carla_jack_shutdown_callback, this); | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | ||||
{ | { | ||||
rackJackPorts[rackPortAudioIn1] = jack_port_register(client, "in1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortAudioIn2] = jack_port_register(client, "in2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortAudioOut1] = jack_port_register(client, "out1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortAudioOut2] = jack_port_register(client, "out2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortControlIn] = jack_port_register(client, "control-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortControlOut] = jack_port_register(client, "control-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortMidiIn] = jack_port_register(client, "midi-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortMidiOut] = jack_port_register(client, "midi-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortAudioIn1] = jackbridge_port_register(client, "in1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortAudioIn2] = jackbridge_port_register(client, "in2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortAudioOut1] = jackbridge_port_register(client, "out1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortAudioOut2] = jackbridge_port_register(client, "out2", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortControlIn] = jackbridge_port_register(client, "control-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortControlOut] = jackbridge_port_register(client, "control-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||||
rackJackPorts[rackPortMidiIn] = jackbridge_port_register(client, "midi-in", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0); | |||||
rackJackPorts[rackPortMidiOut] = jackbridge_port_register(client, "midi-out", JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0); | |||||
} | } | ||||
#endif | #endif | ||||
if (jack_activate(client) == 0) | |||||
if (jackbridge_activate(client) == 0) | |||||
{ | { | ||||
// set client name, fixed for OSC usage | // set client name, fixed for OSC usage | ||||
// FIXME - put this in shared? | // FIXME - put this in shared? | ||||
char* fixedName = strdup(jack_get_client_name(client)); | |||||
char* fixedName = strdup(jackbridge_get_client_name(client)); | |||||
for (size_t i=0; i < strlen(fixedName); i++) | for (size_t i=0; i < strlen(fixedName); i++) | ||||
{ | { | ||||
if (! (std::isalpha(fixedName[i]) || std::isdigit(fixedName[i]))) | if (! (std::isalpha(fixedName[i]) || std::isdigit(fixedName[i]))) | ||||
@@ -181,23 +181,23 @@ bool CarlaEngineJack::close() | |||||
name = nullptr; | name = nullptr; | ||||
} | } | ||||
if (jack_deactivate(client) == 0) | |||||
if (jackbridge_deactivate(client) == 0) | |||||
{ | { | ||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | ||||
{ | { | ||||
jack_port_unregister(client, rackJackPorts[rackPortAudioIn1]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortAudioIn2]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortAudioOut1]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortAudioOut2]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortControlIn]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortControlOut]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortMidiIn]); | |||||
jack_port_unregister(client, rackJackPorts[rackPortMidiOut]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortAudioIn1]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortAudioIn2]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortAudioOut1]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortAudioOut2]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortControlIn]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortControlOut]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortMidiIn]); | |||||
jackbridge_port_unregister(client, rackJackPorts[rackPortMidiOut]); | |||||
} | } | ||||
#endif | #endif | ||||
if (jack_client_close(client) == 0) | |||||
if (jackbridge_client_close(client) == 0) | |||||
{ | { | ||||
client = nullptr; | client = nullptr; | ||||
return true; | return true; | ||||
@@ -239,8 +239,8 @@ CarlaEngineClient* CarlaEngineJack::addClient(CarlaPlugin* const plugin) | |||||
else if (carlaOptions.processMode == PROCESS_MODE_MULTIPLE_CLIENTS) | else if (carlaOptions.processMode == PROCESS_MODE_MULTIPLE_CLIENTS) | ||||
#endif | #endif | ||||
{ | { | ||||
handle.jackClient = jack_client_open(plugin->name(), JackNullOption, nullptr); | |||||
jack_set_process_callback(handle.jackClient, carla_jack_process_callback_plugin, plugin); | |||||
handle.jackClient = jackbridge_client_open(plugin->name(), JackNullOption, nullptr); | |||||
jackbridge_set_process_callback(handle.jackClient, carla_jack_process_callback_plugin, plugin); | |||||
} | } | ||||
//else if (carla_options.process_mode == PROCESS_MODE_CONTINUOUS_RACK) | //else if (carla_options.process_mode == PROCESS_MODE_CONTINUOUS_RACK) | ||||
//{ | //{ | ||||
@@ -279,7 +279,7 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
if (maxPluginNumber == 0) | if (maxPluginNumber == 0) | ||||
return; | return; | ||||
state = jack_transport_query(client, &pos); | |||||
state = jackbridge_transport_query(client, &pos); | |||||
timeInfo.playing = (state != JackTransportStopped); | timeInfo.playing = (state != JackTransportStopped); | ||||
@@ -328,14 +328,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
else if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | else if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) | ||||
{ | { | ||||
// get buffers from jack | // get buffers from jack | ||||
float* audioIn1 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioIn1], nframes); | |||||
float* audioIn2 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioIn2], nframes); | |||||
float* audioOut1 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioOut1], nframes); | |||||
float* audioOut2 = (float*)jack_port_get_buffer(rackJackPorts[rackPortAudioOut2], nframes); | |||||
void* controlIn = jack_port_get_buffer(rackJackPorts[rackPortControlIn], nframes); | |||||
void* controlOut = jack_port_get_buffer(rackJackPorts[rackPortControlOut], nframes); | |||||
void* midiIn = jack_port_get_buffer(rackJackPorts[rackPortMidiIn], nframes); | |||||
void* midiOut = jack_port_get_buffer(rackJackPorts[rackPortMidiOut], nframes); | |||||
float* audioIn1 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioIn1], nframes); | |||||
float* audioIn2 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioIn2], nframes); | |||||
float* audioOut1 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioOut1], nframes); | |||||
float* audioOut2 = (float*)jackbridge_port_get_buffer(rackJackPorts[rackPortAudioOut2], nframes); | |||||
void* controlIn = jackbridge_port_get_buffer(rackJackPorts[rackPortControlIn], nframes); | |||||
void* controlOut = jackbridge_port_get_buffer(rackJackPorts[rackPortControlOut], nframes); | |||||
void* midiIn = jackbridge_port_get_buffer(rackJackPorts[rackPortMidiIn], nframes); | |||||
void* midiOut = jackbridge_port_get_buffer(rackJackPorts[rackPortMidiOut], nframes); | |||||
// assert buffers | // assert buffers | ||||
Q_ASSERT(audioIn1); | Q_ASSERT(audioIn1); | ||||
@@ -363,14 +363,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
// initialize control input | // initialize control input | ||||
memset(rackControlEventsIn, 0, sizeof(CarlaEngineControlEvent)*MAX_ENGINE_CONTROL_EVENTS); | memset(rackControlEventsIn, 0, sizeof(CarlaEngineControlEvent)*MAX_ENGINE_CONTROL_EVENTS); | ||||
{ | { | ||||
jack_midi_event_t jackEvent; | |||||
const uint32_t jackEventCount = jack_midi_get_event_count(controlIn); | |||||
jackbridge_midi_event_t jackEvent; | |||||
const uint32_t jackEventCount = jackbridge_midi_get_event_count(controlIn); | |||||
uint32_t carlaEventIndex = 0; | uint32_t carlaEventIndex = 0; | ||||
for (uint32_t jackEventIndex=0; jackEventIndex < jackEventCount; jackEventIndex++) | for (uint32_t jackEventIndex=0; jackEventIndex < jackEventCount; jackEventIndex++) | ||||
{ | { | ||||
if (jack_midi_event_get(&jackEvent, controlIn, jackEventIndex) != 0) | |||||
if (jackbridge_midi_event_get(&jackEvent, controlIn, jackEventIndex) != 0) | |||||
continue; | continue; | ||||
CarlaEngineControlEvent* const carlaEvent = &rackControlEventsIn[carlaEventIndex++]; | CarlaEngineControlEvent* const carlaEvent = &rackControlEventsIn[carlaEventIndex++]; | ||||
@@ -420,9 +420,9 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
memset(rackMidiEventsIn, 0, sizeof(CarlaEngineMidiEvent)*MAX_ENGINE_MIDI_EVENTS); | memset(rackMidiEventsIn, 0, sizeof(CarlaEngineMidiEvent)*MAX_ENGINE_MIDI_EVENTS); | ||||
{ | { | ||||
uint32_t i = 0, j = 0; | uint32_t i = 0, j = 0; | ||||
jack_midi_event_t jackEvent; | |||||
jackbridge_midi_event_t jackEvent; | |||||
while (jack_midi_event_get(&jackEvent, midiIn, j++) == 0) | |||||
while (jackbridge_midi_event_get(&jackEvent, midiIn, j++) == 0) | |||||
{ | { | ||||
if (i == MAX_ENGINE_MIDI_EVENTS) | if (i == MAX_ENGINE_MIDI_EVENTS) | ||||
break; | break; | ||||
@@ -525,7 +525,7 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
// output control | // output control | ||||
{ | { | ||||
jack_midi_clear_buffer(controlOut); | |||||
jackbridge_midi_clear_buffer(controlOut); | |||||
for (unsigned short i=0; i < MAX_ENGINE_CONTROL_EVENTS; i++) | for (unsigned short i=0; i < MAX_ENGINE_CONTROL_EVENTS; i++) | ||||
{ | { | ||||
@@ -544,28 +544,28 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | ||||
data[1] = event->controller; | data[1] = event->controller; | ||||
data[2] = event->value * 127; | data[2] = event->value * 127; | ||||
jack_midi_event_write(controlOut, event->time, data, 3); | |||||
jackbridge_midi_event_write(controlOut, event->time, data, 3); | |||||
break; | break; | ||||
case CarlaEngineEventMidiBankChange: | case CarlaEngineEventMidiBankChange: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | ||||
data[1] = MIDI_CONTROL_BANK_SELECT; | data[1] = MIDI_CONTROL_BANK_SELECT; | ||||
data[2] = event->value; | data[2] = event->value; | ||||
jack_midi_event_write(controlOut, event->time, data, 3); | |||||
jackbridge_midi_event_write(controlOut, event->time, data, 3); | |||||
break; | break; | ||||
case CarlaEngineEventMidiProgramChange: | case CarlaEngineEventMidiProgramChange: | ||||
data[0] = MIDI_STATUS_PROGRAM_CHANGE + event->channel; | data[0] = MIDI_STATUS_PROGRAM_CHANGE + event->channel; | ||||
data[1] = event->value; | data[1] = event->value; | ||||
jack_midi_event_write(controlOut, event->time, data, 2); | |||||
jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||||
break; | break; | ||||
case CarlaEngineEventAllSoundOff: | case CarlaEngineEventAllSoundOff: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | ||||
data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | data[1] = MIDI_CONTROL_ALL_SOUND_OFF; | ||||
jack_midi_event_write(controlOut, event->time, data, 2); | |||||
jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||||
break; | break; | ||||
case CarlaEngineEventAllNotesOff: | case CarlaEngineEventAllNotesOff: | ||||
data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | data[0] = MIDI_STATUS_CONTROL_CHANGE + event->channel; | ||||
data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | data[1] = MIDI_CONTROL_ALL_NOTES_OFF; | ||||
jack_midi_event_write(controlOut, event->time, data, 2); | |||||
jackbridge_midi_event_write(controlOut, event->time, data, 2); | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
@@ -573,14 +573,14 @@ void CarlaEngineJack::handleProcessCallback(uint32_t nframes) | |||||
// output midi | // output midi | ||||
{ | { | ||||
jack_midi_clear_buffer(midiOut); | |||||
jackbridge_midi_clear_buffer(midiOut); | |||||
for (unsigned short i=0; i < MAX_ENGINE_MIDI_EVENTS; i++) | for (unsigned short i=0; i < MAX_ENGINE_MIDI_EVENTS; i++) | ||||
{ | { | ||||
if (rackMidiEventsOut[i].size == 0) | if (rackMidiEventsOut[i].size == 0) | ||||
break; | break; | ||||
jack_midi_event_write(midiOut, rackMidiEventsOut[i].time, rackMidiEventsOut[i].data, rackMidiEventsOut[i].size); | |||||
jackbridge_midi_event_write(midiOut, rackMidiEventsOut[i].time, rackMidiEventsOut[i].data, rackMidiEventsOut[i].size); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -1654,7 +1654,7 @@ public: | |||||
if (sendGui) | if (sendGui) | ||||
{ | { | ||||
if (note) | |||||
if (note > 0) | |||||
uiNoteOn(channel, note, velo); | uiNoteOn(channel, note, velo); | ||||
else | else | ||||
uiNoteOff(channel, note); | uiNoteOff(channel, note); | ||||
@@ -1061,8 +1061,7 @@ public: | |||||
fluid_synth_noteoff(f_synth, channel, note); | fluid_synth_noteoff(f_synth, channel, note); | ||||
if (channel == m_ctrlInChannel) | |||||
postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||||
postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||||
} | } | ||||
else if (MIDI_IS_STATUS_NOTE_ON(status)) | else if (MIDI_IS_STATUS_NOTE_ON(status)) | ||||
{ | { | ||||
@@ -1071,8 +1070,7 @@ public: | |||||
fluid_synth_noteon(f_synth, channel, note, velo); | fluid_synth_noteon(f_synth, channel, note, velo); | ||||
if (channel == m_ctrlInChannel) | |||||
postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||||
postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||||
} | } | ||||
else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | ||||
{ | { | ||||
@@ -341,8 +341,7 @@ public: | |||||
midiInputPort->DispatchNoteOff(note, 0, channel, time); | midiInputPort->DispatchNoteOff(note, 0, channel, time); | ||||
if (channel == m_ctrlInChannel) | |||||
postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||||
postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); | |||||
} | } | ||||
else if (MIDI_IS_STATUS_NOTE_ON(status)) | else if (MIDI_IS_STATUS_NOTE_ON(status)) | ||||
{ | { | ||||
@@ -351,8 +350,7 @@ public: | |||||
midiInputPort->DispatchNoteOn(note, velo, channel, time); | midiInputPort->DispatchNoteOn(note, velo, channel, time); | ||||
if (channel == m_ctrlInChannel) | |||||
postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||||
postponeEvent(PluginPostEventNoteOn, channel, note, velo); | |||||
} | } | ||||
else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | else if (MIDI_IS_STATUS_AFTERTOUCH(status)) | ||||
{ | { | ||||
@@ -29,6 +29,7 @@ SOURCES = \ | |||||
../vst.cpp \ | ../vst.cpp \ | ||||
../fluidsynth.cpp \ | ../fluidsynth.cpp \ | ||||
../linuxsampler.cpp | ../linuxsampler.cpp | ||||
# ../../carla-jackbridge/carla_jackbridge.cpp | |||||
HEADERS = \ | HEADERS = \ | ||||
../carla_backend.h \ | ../carla_backend.h \ | ||||
@@ -38,6 +39,7 @@ HEADERS = \ | |||||
../carla_plugin.h \ | ../carla_plugin.h \ | ||||
../carla_shared.h \ | ../carla_shared.h \ | ||||
../carla_threads.h \ | ../carla_threads.h \ | ||||
../../carla-jackbridge/carla_jackbridge.h \ | |||||
../../carla-includes/carla_includes.h \ | ../../carla-includes/carla_includes.h \ | ||||
../../carla-includes/carla_lib_includes.h \ | ../../carla-includes/carla_lib_includes.h \ | ||||
../../carla-includes/carla_osc_includes.h \ | ../../carla-includes/carla_osc_includes.h \ | ||||
@@ -52,6 +54,7 @@ HEADERS = \ | |||||
../../carla-includes/lv2_rdf.h | ../../carla-includes/lv2_rdf.h | ||||
INCLUDEPATH = .. \ | INCLUDEPATH = .. \ | ||||
../../carla-jackbridge \ | |||||
../../carla-includes | ../../carla-includes | ||||
DEFINES = QTCREATOR_TEST | DEFINES = QTCREATOR_TEST | ||||
@@ -62,6 +65,7 @@ DEFINES += CARLA_ENGINE_LV2 | |||||
DEFINES += HAVE_SUIL | DEFINES += HAVE_SUIL | ||||
DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER | DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER | ||||
LIBS = ../../carla-lilv/carla_lilv.a -ldl | LIBS = ../../carla-lilv/carla_lilv.a -ldl | ||||
LIBS += -L../../carla-jackbridge -lcarla-jackbridge-native | |||||
INCLUDEPATH += ../rtaudio-4.0.11 | INCLUDEPATH += ../rtaudio-4.0.11 | ||||
INCLUDEPATH += ../rtmidi-2.0.0 | INCLUDEPATH += ../rtmidi-2.0.0 | ||||
@@ -5,15 +5,13 @@ | |||||
# | # | ||||
CXX ?= g++ | CXX ?= g++ | ||||
WINECXX ?= wineg++ | |||||
STRIP ?= strip | STRIP ?= strip | ||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse -Wall | BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse -Wall | ||||
BASE_FLAGS = -O0 -g | |||||
BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
BUILD_FLAGS += -I. -I../carla-includes $(shell pkg-config --cflags liblo QtCore) | BUILD_FLAGS += -I. -I../carla-includes $(shell pkg-config --cflags liblo QtCore) | ||||
BUILD_FLAGS += -DBUILD_BRIDGE -DDEBUG #-DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT | |||||
BUILD_FLAGS += -DBUILD_BRIDGE -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||||
BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header | BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header | ||||
32BIT_FLAGS = -m32 | 32BIT_FLAGS = -m32 | ||||
@@ -22,23 +20,18 @@ LINK_FLAGS = $(shell pkg-config --libs liblo QtCore) $(LDFLAGS) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
BUILD_PLUGIN_FLAGS = $(BUILD_FLAGS) -DBUILD_BRIDGE_PLUGIN -DCARLA_ENGINE_JACK -I../carla-backend $(shell pkg-config --cflags jack) | |||||
LINK_PLUGIN_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs jack) | |||||
BUILD_PLUGIN_FLAGS = $(BUILD_FLAGS) -DBUILD_BRIDGE_PLUGIN -DCARLA_ENGINE_JACK -I../carla-backend -I../carla-jackbridge $(shell pkg-config --cflags jack QtGui) | |||||
LINK_PLUGIN_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtGui) | |||||
POSIX_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) $(shell pkg-config --cflags QtGui) | |||||
POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu | |||||
POSIX_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu | |||||
POSIX_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -ldl | |||||
POSIX_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) | |||||
POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu | |||||
POSIX_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu | |||||
POSIX_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs jack) -ldl | |||||
WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) $(shell pkg-config --cflags QtGui) | |||||
WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||||
WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||||
WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -static -mwindows | |||||
WINE_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DQTCREATOR_TEST # -fpermissive | |||||
WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||||
WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||||
WINE_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) -ldl | |||||
WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) | |||||
WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||||
WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||||
WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) -mwindows -L../carla-jackbridge | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -92,8 +85,6 @@ posix32: carla-bridge-posix32 | |||||
posix64: carla-bridge-posix64 | posix64: carla-bridge-posix64 | ||||
win32: carla-bridge-win32.exe | win32: carla-bridge-win32.exe | ||||
win64: carla-bridge-win64.exe | win64: carla-bridge-win64.exe | ||||
wine32: carla-bridge-win32.exe.so | |||||
wine64: carla-bridge-win64.exe.so | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# ui_lv2-gtk2 | # ui_lv2-gtk2 | ||||
@@ -201,9 +192,9 @@ carla_bridge_osc__vst-x11.o: carla_bridge_osc.cpp | |||||
# posix32 | # posix32 | ||||
OBJS_POSIX32 = \ | OBJS_POSIX32 = \ | ||||
carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o \ | |||||
carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o carla_jackbridge__posix32.o \ | |||||
carla_engine__posix32.o carla_engine_jack__posix32.o carla_shared__posix32.o carla_threads__posix32.o \ | carla_engine__posix32.o carla_engine_jack__posix32.o carla_shared__posix32.o carla_threads__posix32.o \ | ||||
ladspa__posix32.o dssi__posix32.o lv2__posix32.o vst__posix32.o ../carla-lilv/carla_lilv_32bit.a | |||||
ladspa__posix32.o dssi__posix32.o lv2__posix32.o vst__posix32.o ../carla-lilv/carla_lilv_posix32.a | |||||
carla-bridge-posix32: $(OBJS_POSIX32) | carla-bridge-posix32: $(OBJS_POSIX32) | ||||
$(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ && $(STRIP) $@ | ||||
@@ -214,6 +205,9 @@ carla_bridge_plugin__posix32.o: carla_bridge_plugin.cpp | |||||
carla_bridge_osc__posix32.o: carla_bridge_osc.cpp | carla_bridge_osc__posix32.o: carla_bridge_osc.cpp | ||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | ||||
carla_jackbridge__posix32.o: ../carla-jackbridge/carla_jackbridge.cpp | |||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||||
carla_engine__posix32.o: ../carla-backend/carla_engine.cpp | carla_engine__posix32.o: ../carla-backend/carla_engine.cpp | ||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | ||||
@@ -242,9 +236,9 @@ vst__posix32.o: ../carla-backend/vst.cpp | |||||
# posix64 | # posix64 | ||||
OBJS_POSIX64 = \ | OBJS_POSIX64 = \ | ||||
carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o \ | |||||
carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o carla_jackbridge__posix64.o \ | |||||
carla_engine__posix64.o carla_engine_jack__posix64.o carla_shared__posix64.o carla_threads__posix64.o \ | carla_engine__posix64.o carla_engine_jack__posix64.o carla_shared__posix64.o carla_threads__posix64.o \ | ||||
ladspa__posix64.o dssi__posix64.o lv2__posix64.o vst__posix64.o ../carla-lilv/carla_lilv_64bit.a | |||||
ladspa__posix64.o dssi__posix64.o lv2__posix64.o vst__posix64.o ../carla-lilv/carla_lilv_posix64.a | |||||
carla-bridge-posix64: $(OBJS_POSIX64) | carla-bridge-posix64: $(OBJS_POSIX64) | ||||
$(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ && $(STRIP) $@ | ||||
@@ -255,6 +249,9 @@ carla_bridge_plugin__posix64.o: carla_bridge_plugin.cpp | |||||
carla_bridge_osc__posix64.o: carla_bridge_osc.cpp | carla_bridge_osc__posix64.o: carla_bridge_osc.cpp | ||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | ||||
carla_jackbridge__posix64.o: ../carla-jackbridge/carla_jackbridge.cpp | |||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||||
carla_engine__posix64.o: ../carla-backend/carla_engine.cpp | carla_engine__posix64.o: ../carla-backend/carla_engine.cpp | ||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | ||||
@@ -280,94 +277,106 @@ vst__posix64.o: ../carla-backend/vst.cpp | |||||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | $(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# wine32 | |||||
# win32 | |||||
OBJS_WINE32 = \ | |||||
carla_bridge_plugin__wine32.o carla_bridge_osc__wine32.o \ | |||||
carla_engine__wine32.o carla_engine_jack__wine32.o carla_shared__wine32.o carla_threads__wine32.o \ | |||||
ladspa__wine32.o dssi__wine32.o lv2__wine32.o vst__wine32.o ../carla-lilv/carla_lilv_32bit.a | |||||
OBJS_WIN32 = \ | |||||
carla_bridge_plugin__win32.o carla_bridge_osc__win32.o \ | |||||
carla_engine__win32.o carla_engine_jack__win32.o carla_shared__win32.o carla_threads__win32.o \ | |||||
ladspa__win32.o dssi__win32.o lv2__win32.o vst__win32.o ../carla-lilv/carla_lilv_win32.a | |||||
carla-bridge-win32.exe.so: $(OBJS_WINE32) | |||||
$(WINECXX) $^ $(WINE_LINK_FLAGS) $(WINE_32BIT_FLAGS) -o carla-bridge-win32 && $(STRIP) $@ | |||||
carla-bridge-win32.exe: $(OBJS_WIN32) ../carla-jackbridge/libcarla-jackbridge-win32.dll | |||||
$(CXX) $(OBJS_WIN32) $(WIN_LINK_FLAGS) $(WIN_32BIT_FLAGS) -lcarla-jackbridge-win32 -o $@ && $(STRIP) $@ | |||||
carla_bridge_plugin__wine32.o: carla_bridge_plugin.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_bridge_plugin__win32.o: carla_bridge_plugin.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
carla_bridge_osc__wine32.o: carla_bridge_osc.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_bridge_osc__win32.o: carla_bridge_osc.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
carla_engine__wine32.o: ../carla-backend/carla_engine.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_engine__win32.o: ../carla-backend/carla_engine.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
carla_engine_jack__wine32.o: ../carla-backend/carla_engine_jack.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_engine_jack__win32.o: ../carla-backend/carla_engine_jack.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
carla_shared__wine32.o: ../carla-backend/carla_shared.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_shared__win32.o: ../carla-backend/carla_shared.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
carla_threads__wine32.o: ../carla-backend/carla_threads.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
carla_threads__win32.o: ../carla-backend/carla_threads.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
ladspa__wine32.o: ../carla-backend/ladspa.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
ladspa__win32.o: ../carla-backend/ladspa.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
dssi__wine32.o: ../carla-backend/dssi.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
dssi__win32.o: ../carla-backend/dssi.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
lv2__wine32.o: ../carla-backend/lv2.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
lv2__win32.o: ../carla-backend/lv2.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
vst__wine32.o: ../carla-backend/vst.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) -c -o $@ | |||||
vst__win32.o: ../carla-backend/vst.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# wine64 | |||||
# win64 | |||||
OBJS_WINE64 = \ | |||||
carla_bridge_plugin__wine64.o carla_bridge_osc__wine64.o \ | |||||
carla_engine__wine64.o carla_engine_jack__wine64.o carla_shared__wine64.o carla_threads__wine64.o \ | |||||
ladspa__wine64.o dssi__wine64.o lv2__wine64.o vst__wine64.o ../carla-lilv/carla_lilv_64bit.a | |||||
OBJS_WIN64 = \ | |||||
carla_bridge_plugin__win64.o carla_bridge_osc__win64.o \ | |||||
carla_engine__win64.o carla_engine_jack__win64.o carla_shared__win64.o carla_threads__win64.o \ | |||||
ladspa__win64.o dssi__win64.o lv2__win64.o vst__win64.o ../carla-lilv/carla_lilv_win64.a | |||||
carla-bridge-win64.exe.so: $(OBJS_WINE64) | |||||
$(WINECXX) $^ $(WINE_LINK_FLAGS) $(WINE_64BIT_FLAGS) -o carla-bridge-win64 && $(STRIP) $@ | |||||
carla-bridge-win64.exe: $(OBJS_WIN64) ../carla-jackbridge/libcarla-jackbridge-win64.dll | |||||
$(CXX) $(OBJS_WIN64) $(WIN_LINK_FLAGS) $(WIN_64BIT_FLAGS) -lcarla-jackbridge-win64 -o $@ && $(STRIP) $@ | |||||
carla_bridge_plugin__wine64.o: carla_bridge_plugin.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_bridge_plugin__win64.o: carla_bridge_plugin.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
carla_bridge_osc__wine64.o: carla_bridge_osc.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_bridge_osc__win64.o: carla_bridge_osc.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
carla_engine__wine64.o: ../carla-backend/carla_engine.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_engine__win64.o: ../carla-backend/carla_engine.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
carla_engine_jack__wine64.o: ../carla-backend/carla_engine_jack.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_engine_jack__win64.o: ../carla-backend/carla_engine_jack.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
carla_shared__wine64.o: ../carla-backend/carla_shared.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_shared__win64.o: ../carla-backend/carla_shared.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
carla_threads__wine64.o: ../carla-backend/carla_threads.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
carla_threads__win64.o: ../carla-backend/carla_threads.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
ladspa__wine64.o: ../carla-backend/ladspa.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
ladspa__win64.o: ../carla-backend/ladspa.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
dssi__wine64.o: ../carla-backend/dssi.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
dssi__win64.o: ../carla-backend/dssi.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
lv2__wine64.o: ../carla-backend/lv2.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
lv2__win64.o: ../carla-backend/lv2.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
vst__wine64.o: ../carla-backend/vst.cpp | |||||
$(WINECXX) $< $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) -c -o $@ | |||||
vst__win64.o: ../carla-backend/vst.cpp | |||||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
../carla-lilv/carla_lilv_32bit.a: | |||||
$(MAKE) -C ../carla-lilv 32bit | |||||
../carla-lilv/carla_lilv_posix32.a: | |||||
$(MAKE) -C ../carla-lilv posix32 | |||||
../carla-lilv/carla_lilv_posix64.a: | |||||
$(MAKE) -C ../carla-lilv posix64 | |||||
../carla-lilv/carla_lilv_win32.a: | |||||
$(MAKE) -C ../carla-lilv win32 | |||||
../carla-lilv/carla_lilv_win64.a: | |||||
$(MAKE) -C ../carla-lilv win64 | |||||
../carla-jackbridge/libcarla-jackbridge-win32.dll: | |||||
$(MAKE) -C ../carla-jackbridge win32 | |||||
../carla-lilv/carla_lilv_64bit.a: | |||||
$(MAKE) -C ../carla-lilv 64bit | |||||
../carla-jackbridge/libcarla-jackbridge-win64.dll: | |||||
$(MAKE) -C ../carla-jackbridge win64 | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -384,11 +384,16 @@ public: | |||||
Q_ASSERT(client); | Q_ASSERT(client); | ||||
m_client = client; | m_client = client; | ||||
m_client->sendOscUpdate(); | |||||
m_client->sendOscBridgeUpdate(); | |||||
if (showGui) | if (showGui) | ||||
{ | |||||
show(); | show(); | ||||
} | |||||
else | |||||
{ | |||||
m_client->sendOscUpdate(); | |||||
m_client->sendOscBridgeUpdate(); | |||||
} | |||||
#ifdef __WINE__ | #ifdef __WINE__ | ||||
Q_ASSERT(! closeNow); | Q_ASSERT(! closeNow); | ||||
@@ -710,6 +715,7 @@ int main(int argc, char* argv[]) | |||||
/// Init plugin | /// Init plugin | ||||
short id = engine.addPlugin(itype, filename, name, label); | short id = engine.addPlugin(itype, filename, name, label); | ||||
int ret; | |||||
if (id >= 0 && id < CarlaBackend::MAX_PLUGINS) | if (id >= 0 && id < CarlaBackend::MAX_PLUGINS) | ||||
{ | { | ||||
@@ -727,14 +733,17 @@ int main(int argc, char* argv[]) | |||||
plugin->setActive(true, false, false); | plugin->setActive(true, false, false); | ||||
plugin->showGui(true); | plugin->showGui(true); | ||||
} | } | ||||
ret = 0; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
qWarning("Plugin failed to load, error was:\n%s", CarlaBackend::getLastError()); | qWarning("Plugin failed to load, error was:\n%s", CarlaBackend::getLastError()); | ||||
return 1; | |||||
ret = 1; | |||||
} | } | ||||
toolkit.exec(&client, !useOsc); | |||||
if (ret == 0) | |||||
toolkit.exec(&client, !useOsc); | |||||
engine.removeAllPlugins(); | engine.removeAllPlugins(); | ||||
engine.close(); | engine.close(); | ||||
@@ -749,7 +758,7 @@ int main(int argc, char* argv[]) | |||||
// Close toolkit | // Close toolkit | ||||
toolkit.quit(); | toolkit.quit(); | ||||
return 0; | |||||
return ret; | |||||
} | } | ||||
#endif // BUILD_BRIDGE_PLUGIN | #endif // BUILD_BRIDGE_PLUGIN |
@@ -90,10 +90,10 @@ public: | |||||
g_timeout_add(50, gtk_ui_timeout, this); | g_timeout_add(50, gtk_ui_timeout, this); | ||||
g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | ||||
m_client->sendOscUpdate(); | |||||
if (showGui) | if (showGui) | ||||
show(); | show(); | ||||
else | |||||
m_client->sendOscUpdate(); | |||||
// Main loop | // Main loop | ||||
gtk_main(); | gtk_main(); | ||||
@@ -90,10 +90,10 @@ public: | |||||
g_timeout_add(50, gtk_ui_timeout, this); | g_timeout_add(50, gtk_ui_timeout, this); | ||||
g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | g_signal_connect(window, "destroy", G_CALLBACK(gtk_ui_destroy), this); | ||||
m_client->sendOscUpdate(); | |||||
if (showGui) | if (showGui) | ||||
show(); | show(); | ||||
else | |||||
m_client->sendOscUpdate(); | |||||
// Main loop | // Main loop | ||||
gtk_main(); | gtk_main(); | ||||
@@ -151,10 +151,10 @@ public: | |||||
app->connect(window, SIGNAL(finished(int)), app, SLOT(quit())); | app->connect(window, SIGNAL(finished(int)), app, SLOT(quit())); | ||||
m_client->sendOscUpdate(); | |||||
if (showGui) | if (showGui) | ||||
show(); | show(); | ||||
else | |||||
m_client->sendOscUpdate(); | |||||
// Main loop | // Main loop | ||||
app->exec(client); | app->exec(client); | ||||
@@ -5,21 +5,19 @@ | |||||
# | # | ||||
CXX ?= g++ | CXX ?= g++ | ||||
WINECXX ?= wineg++ | |||||
STRIP ?= strip | STRIP ?= strip | ||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse | |||||
BASE_FLAGS += -Wall -I../carla-backend -I../carla-includes | |||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -mfpmath=sse -Wall | |||||
BASE_FLAGS += -I../carla-backend -I../carla-includes | |||||
BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | ||||
BUILD_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT | |||||
BUILD_FLAGS += -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||||
BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | ||||
32BIT_FLAGS = -m32 | 32BIT_FLAGS = -m32 | ||||
64BIT_FLAGS = -m64 | 64BIT_FLAGS = -m64 | ||||
LINK_FLAGS = $(LDFLAGS) | |||||
LINK_FLAGS += $(shell pkg-config --libs QtCore) | |||||
LINK_FLAGS = $(shell pkg-config --libs QtCore) $(LDFLAGS) | |||||
ifneq ($(NATIVE),) | ifneq ($(NATIVE),) | ||||
BUILD_FLAGS += -DBUILD_NATIVE | BUILD_FLAGS += -DBUILD_NATIVE | ||||
@@ -45,11 +43,6 @@ WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||||
WIN_64BIT_FLAGS = $(64BIT_FLAGS) | WIN_64BIT_FLAGS = $(64BIT_FLAGS) | ||||
WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | ||||
WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive | |||||
WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||||
WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||||
WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
all: carla-discovery-native | all: carla-discovery-native | ||||
@@ -58,43 +51,40 @@ posix32: carla-discovery-posix32 | |||||
posix64: carla-discovery-posix64 | posix64: carla-discovery-posix64 | ||||
win32: carla-discovery-win32.exe | win32: carla-discovery-win32.exe | ||||
win64: carla-discovery-win64.exe | win64: carla-discovery-win64.exe | ||||
wine32: carla-discovery-win32.exe.so | |||||
wine64: carla-discovery-win64.exe.so | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
32BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_32bit.a | |||||
64BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_64bit.a | |||||
OBJS = carla-discovery.cpp | |||||
carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | ||||
$(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
carla-discovery-posix32: $(32BIT_OBJS) | |||||
carla-discovery-posix32: $(OBJS) ../carla-lilv/carla_lilv_posix32.a | |||||
$(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
carla-discovery-posix64: $(64BIT_OBJS) | |||||
carla-discovery-posix64: $(OBJS) ../carla-lilv/carla_lilv_posix64.a | |||||
$(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
carla-discovery-win32.exe: $(32BIT_OBJS) | |||||
carla-discovery-win32.exe: $(OBJS) ../carla-lilv/carla_lilv_win32.a | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
carla-discovery-win64.exe: $(64BIT_OBJS) | |||||
carla-discovery-win64.exe: $(OBJS) ../carla-lilv/carla_lilv_win64.a | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
carla-discovery-win32.exe.so: $(32BIT_OBJS) | |||||
$(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win32.exe && $(STRIP) $@ | |||||
carla-discovery-win64.exe.so: $(64BIT_OBJS) | |||||
$(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win64.exe && $(STRIP) $@ | |||||
../carla-lilv/carla_lilv.a: | ../carla-lilv/carla_lilv.a: | ||||
$(MAKE) -C ../carla-lilv | $(MAKE) -C ../carla-lilv | ||||
../carla-lilv/carla_lilv_32bit.a: | |||||
$(MAKE) -C ../carla-lilv 32bit | |||||
../carla-lilv/carla_lilv_posix32.a: | |||||
$(MAKE) -C ../carla-lilv posix32 | |||||
../carla-lilv/carla_lilv_posix64.a: | |||||
$(MAKE) -C ../carla-lilv posix64 | |||||
../carla-lilv/carla_lilv_win32.a: | |||||
$(MAKE) -C ../carla-lilv win32 | |||||
../carla-lilv/carla_lilv_64bit.a: | |||||
$(MAKE) -C ../carla-lilv 64bit | |||||
../carla-lilv/carla_lilv_win64.a: | |||||
$(MAKE) -C ../carla-lilv win64 | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -5,11 +5,9 @@ | |||||
# | # | ||||
CXX ?= g++ | CXX ?= g++ | ||||
WINECXX ?= wineg++ | |||||
BASE_FLAGS = -O0 -g | |||||
BASE_FLAGS += -Wall -I../carla-backend -I../carla-includes | |||||
BASE_FLAGS = -O0 -g -Wall | |||||
BASE_FLAGS += -I../carla-backend -I../carla-includes | |||||
BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | BUILD_FLAGS += $(shell pkg-config --cflags QtCore) | ||||
@@ -18,8 +16,7 @@ BUILD_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | |||||
32BIT_FLAGS = -m32 | 32BIT_FLAGS = -m32 | ||||
64BIT_FLAGS = -m64 | 64BIT_FLAGS = -m64 | ||||
LINK_FLAGS = $(LDFLAGS) | |||||
LINK_FLAGS += $(shell pkg-config --libs QtCore) | |||||
LINK_FLAGS = $(shell pkg-config --libs QtCore) $(LDFLAGS) | |||||
ifneq ($(NATIVE),) | ifneq ($(NATIVE),) | ||||
BUILD_FLAGS += -DBUILD_NATIVE | BUILD_FLAGS += -DBUILD_NATIVE | ||||
@@ -45,11 +42,6 @@ WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||||
WIN_64BIT_FLAGS = $(64BIT_FLAGS) | WIN_64BIT_FLAGS = $(64BIT_FLAGS) | ||||
WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows | ||||
WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive | |||||
WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||||
WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||||
WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
all: carla-discovery-native | all: carla-discovery-native | ||||
@@ -58,43 +50,40 @@ posix32: carla-discovery-posix32 | |||||
posix64: carla-discovery-posix64 | posix64: carla-discovery-posix64 | ||||
win32: carla-discovery-win32.exe | win32: carla-discovery-win32.exe | ||||
win64: carla-discovery-win64.exe | win64: carla-discovery-win64.exe | ||||
wine32: carla-discovery-win32.exe.so | |||||
wine64: carla-discovery-win64.exe.so | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
32BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_32bit.a | |||||
64BIT_OBJS = carla-discovery.cpp ../carla-lilv/carla_lilv_64bit.a | |||||
OBJS = carla-discovery.cpp | |||||
carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a | ||||
$(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ | |||||
$(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ && $(STRIP) $@ | |||||
carla-discovery-posix32: $(32BIT_OBJS) | |||||
carla-discovery-posix32: $(OBJS) ../carla-lilv/carla_lilv_posix32.a | |||||
$(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | ||||
carla-discovery-posix64: $(64BIT_OBJS) | |||||
carla-discovery-posix64: $(OBJS) ../carla-lilv/carla_lilv_posix64.a | |||||
$(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ | ||||
carla-discovery-win32.exe: $(32BIT_OBJS) | |||||
carla-discovery-win32.exe: $(OBJS) ../carla-lilv/carla_lilv_win32.a | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | ||||
carla-discovery-win64.exe: $(64BIT_OBJS) | |||||
carla-discovery-win64.exe: $(OBJS) ../carla-lilv/carla_lilv_win64.a | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ | ||||
carla-discovery-win32.exe.so: $(32BIT_OBJS) | |||||
$(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win32.exe | |||||
carla-discovery-win64.exe.so: $(64BIT_OBJS) | |||||
$(WINECXX) $^ $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -o carla-discovery-win64.exe | |||||
../carla-lilv/carla_lilv.a: | ../carla-lilv/carla_lilv.a: | ||||
$(MAKE) -C ../carla-lilv | $(MAKE) -C ../carla-lilv | ||||
../carla-lilv/carla_lilv_32bit.a: | |||||
$(MAKE) -C ../carla-lilv 32bit | |||||
../carla-lilv/carla_lilv_posix32.a: | |||||
$(MAKE) -C ../carla-lilv posix32 | |||||
../carla-lilv/carla_lilv_posix64.a: | |||||
$(MAKE) -C ../carla-lilv posix64 | |||||
../carla-lilv/carla_lilv_win32.a: | |||||
$(MAKE) -C ../carla-lilv win32 | |||||
../carla-lilv/carla_lilv_64bit.a: | |||||
$(MAKE) -C ../carla-lilv 64bit | |||||
../carla-lilv/carla_lilv_win64.a: | |||||
$(MAKE) -C ../carla-lilv win64 | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -93,7 +93,7 @@ | |||||
// export symbols if needed | // export symbols if needed | ||||
#ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
# define CARLA_EXPORT | |||||
# define CARLA_EXPORT extern "C" | |||||
#else | #else | ||||
# if defined(Q_OS_WIN) && ! defined(__WINE__) | # if defined(Q_OS_WIN) && ! defined(__WINE__) | ||||
# define CARLA_EXPORT extern "C" __declspec (dllexport) | # define CARLA_EXPORT extern "C" __declspec (dllexport) | ||||
@@ -0,0 +1,61 @@ | |||||
#!/usr/bin/make -f | |||||
# Makefile for carla-jackbridge # | |||||
# ----------------------------------------- # | |||||
# Created by falkTX | |||||
# | |||||
CXX ?= g++ | |||||
WINECXX ?= wineg++ | |||||
STRIP ?= strip | |||||
BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall | |||||
BASE_FLAGS += -I../carla-includes | |||||
BUILD_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | |||||
BUILD_FLAGS += $(shell pkg-config --cflags jack QtCore) | |||||
BUILD_FLAGS += -DBUILD_BRIDGE -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT # -DNDEBUG | |||||
32BIT_FLAGS = -m32 | |||||
64BIT_FLAGS = -m64 | |||||
LINK_FLAGS = -shared $(LDFLAGS) | |||||
WIN_BUILD_FLAGS = $(BUILD_FLAGS) -DJACKBRIDGE_DUMMY -I. | |||||
WIN_32BIT_FLAGS = $(32BIT_FLAGS) | |||||
WIN_64BIT_FLAGS = $(64BIT_FLAGS) | |||||
WIN_LINK_FLAGS = $(LINK_FLAGS) | |||||
WINE_BUILD_FLAGS = $(BUILD_FLAGS) | |||||
WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine | |||||
WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine | |||||
WINE_LINK_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs jack) -ldl | |||||
# -------------------------------------------------------------- | |||||
all: | |||||
win32: libcarla-jackbridge-win32.dll | |||||
win64: libcarla-jackbridge-win64.dll | |||||
wine32: libcarla-jackbridge-win32.dll.so | |||||
wine64: libcarla-jackbridge-win64.dll.so | |||||
# -------------------------------------------------------------- | |||||
OBJS = carla_jackbridge.cpp | |||||
libcarla-jackbridge-win32.dll: $(OBJS) | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -Wl,--output-def,$@.def,--out-implib,$@.a -o $@ && $(STRIP) $@ | |||||
libcarla-jackbridge-win64.dll: $(OBJS) | |||||
$(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -Wl,--output-def,$@.def,--out-implib,$@.a -o $@ && $(STRIP) $@ | |||||
libcarla-jackbridge-win32.dll.so: $(OBJS) | |||||
$(WINECXX) $^ libcarla-jackbridge-win32.dll.def $(WINE_BUILD_FLAGS) $(WINE_32BIT_FLAGS) $(WINE_LINK_FLAGS) -mno-cygwin -o $@ && $(STRIP) $@ | |||||
libcarla-jackbridge-win64.dll.so: $(OBJS) | |||||
$(WINECXX) $^ libcarla-jackbridge-win64.dll.def $(WINE_BUILD_FLAGS) $(WINE_64BIT_FLAGS) $(WINE_LINK_FLAGS) -mno-cygwin -o $@ && $(STRIP) $@ | |||||
# -------------------------------------------------------------- | |||||
clean: | |||||
rm -f libcarla-jackbridge-* |
@@ -0,0 +1,239 @@ | |||||
/* | |||||
* Carla JackBridge | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 COPYING file | |||||
*/ | |||||
#include "carla_jackbridge.h" | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
#include <jack/jack.h> | |||||
#include <jack/midiport.h> | |||||
#endif | |||||
jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_client_open(client_name, options, status); | |||||
#else | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
int jackbridge_client_close(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_client_close(client); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_client_name_size() | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_client_name_size(); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
char* jackbridge_get_client_name(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_get_client_name(client); | |||||
#else | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
int jackbridge_port_name_size() | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_port_name_size(); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_activate(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_activate(client); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_deactivate(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_deactivate(client); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_set_process_thread(client, thread_callback, arg); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
jack_on_shutdown(client, shutdown_callback, arg); | |||||
#endif | |||||
} | |||||
int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_set_process_callback(client, process_callback, arg); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_set_freewheel_callback(client, freewheel_callback, arg); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_set_buffer_size_callback(client, bufsize_callback, arg); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_set_sample_rate_callback(client, srate_callback, arg); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_get_sample_rate(client); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_get_buffer_size(client); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_port_register(client, port_name, port_type, flags, buffer_size); | |||||
#else | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_port_unregister(client, port); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_port_get_buffer(port, nframes); | |||||
#else | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
// ----------------------------------------------------------------------------- | |||||
uint32_t jackbridge_midi_get_event_count(void* port_buffer) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_midi_get_event_count(port_buffer); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_midi_event_get((jack_midi_event_t*)event, port_buffer, event_index); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
void jackbridge_midi_clear_buffer(void* port_buffer) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
jack_midi_clear_buffer(port_buffer); | |||||
#endif | |||||
} | |||||
jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_midi_event_reserve(port_buffer, time, data_size); | |||||
#else | |||||
return nullptr; | |||||
#endif | |||||
} | |||||
int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_midi_event_write(port_buffer, time, (jack_midi_data_t*)data, data_size); | |||||
#else | |||||
return 0; | |||||
#endif | |||||
} | |||||
// ----------------------------------------------------------------------------- | |||||
jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos) | |||||
{ | |||||
#ifndef JACKBRIDGE_DUMMY | |||||
return jack_transport_query(client, pos); | |||||
#else | |||||
return JackTransportStopped; | |||||
#endif | |||||
} |
@@ -0,0 +1,61 @@ | |||||
/* | |||||
* Carla JackBridge | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 COPYING file | |||||
*/ | |||||
#ifndef CARLA_JACKBRIDGE_H | |||||
#define CARLA_JACKBRIDGE_H | |||||
#include "carla_includes.h" | |||||
#include <jack/types.h> | |||||
typedef unsigned char jackbridge_midi_data_t; | |||||
typedef struct _jackbridge_midi_event | |||||
{ | |||||
jack_nframes_t time; | |||||
size_t size; | |||||
jackbridge_midi_data_t* buffer; | |||||
} jackbridge_midi_event_t; | |||||
CARLA_EXPORT jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status); | |||||
CARLA_EXPORT int jackbridge_client_close(jack_client_t* client); | |||||
CARLA_EXPORT int jackbridge_client_name_size(); | |||||
CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client); | |||||
CARLA_EXPORT int jackbridge_port_name_size(); | |||||
CARLA_EXPORT int jackbridge_activate(jack_client_t* client); | |||||
CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client); | |||||
CARLA_EXPORT int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg); | |||||
CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg); | |||||
CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg); | |||||
CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg); | |||||
CARLA_EXPORT int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg); | |||||
CARLA_EXPORT int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg); | |||||
CARLA_EXPORT jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client); | |||||
CARLA_EXPORT jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client); | |||||
CARLA_EXPORT jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size); | |||||
CARLA_EXPORT int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port); | |||||
CARLA_EXPORT void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes); | |||||
CARLA_EXPORT uint32_t jackbridge_midi_get_event_count(void* port_buffer); | |||||
CARLA_EXPORT int jackbridge_midi_event_get(jackbridge_midi_event_t* event, void* port_buffer, uint32_t event_index); | |||||
CARLA_EXPORT void jackbridge_midi_clear_buffer(void* port_buffer); | |||||
CARLA_EXPORT jackbridge_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size); | |||||
CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jackbridge_midi_data_t* data, size_t data_size); | |||||
CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos); | |||||
#endif // CARLA_JACKBRIDGE_H |
@@ -18,9 +18,11 @@ BUILD_FLAGS += -Iconfig -I../carla-includes | |||||
32BIT_FLAGS = -m32 | 32BIT_FLAGS = -m32 | ||||
64BIT_FLAGS = -m64 | 64BIT_FLAGS = -m64 | ||||
OBJS = serd.o sord.o sratom.o lilv.o | |||||
OBJS_32bit = serd_32bit.o sord_32bit.o sratom_32bit.o lilv_32bit.o | |||||
OBJS_64bit = serd_64bit.o sord_64bit.o sratom_64bit.o lilv_64bit.o | |||||
OBJS = serd.o sord.o sratom.o lilv.o | |||||
OBJS_posix32 = serd_posix32.o sord_posix32.o sratom_posix32.o lilv_posix32.o | |||||
OBJS_posix64 = serd_posix64.o sord_posix64.o sratom_posix64.o lilv_posix64.o | |||||
OBJS_win32 = serd_win32.o sord_win32.o sratom_win32.o lilv_win32.o | |||||
OBJS_win64 = serd_win64.o sord_win64.o sratom_win64.o lilv_win64.o | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -43,40 +45,78 @@ lilv.o: lilv.c | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
32bit: carla_lilv_32bit.a | |||||
posix32: carla_lilv_posix32.a | |||||
carla_lilv_32bit.a: $(OBJS_32bit) | |||||
carla_lilv_posix32.a: $(OBJS_posix32) | |||||
$(AR) rs $@ $^ | $(AR) rs $@ $^ | ||||
serd_32bit.o: serd.c | |||||
serd_posix32.o: serd.c | |||||
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | ||||
sord_32bit.o: sord.c | |||||
sord_posix32.o: sord.c | |||||
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@ | ||||
sratom_32bit.o: sratom.c | |||||
sratom_posix32.o: sratom.c | |||||
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | ||||
lilv_32bit.o: lilv.c | |||||
lilv_posix32.o: lilv.c | |||||
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@ | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
64bit: carla_lilv_64bit.a | |||||
posix64: carla_lilv_posix64.a | |||||
carla_lilv_64bit.a: $(OBJS_64bit) | |||||
carla_lilv_posix64.a: $(OBJS_posix64) | |||||
$(AR) rs $@ $^ | $(AR) rs $@ $^ | ||||
serd_64bit.o: serd.c | |||||
serd_posix64.o: serd.c | |||||
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | ||||
sord_64bit.o: sord.c | |||||
sord_posix64.o: sord.c | |||||
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@ | ||||
sratom_64bit.o: sratom.c | |||||
sratom_posix64.o: sratom.c | |||||
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | ||||
lilv_64bit.o: lilv.c | |||||
lilv_posix64.o: lilv.c | |||||
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||||
# -------------------------------------------------------------- | |||||
win32: carla_lilv_win32.a | |||||
carla_lilv_win32.a: $(OBJS_win32) | |||||
$(AR) rs $@ $^ | |||||
serd_win32.o: serd.c | |||||
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||||
sord_win32.o: sord.c | |||||
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||||
sratom_win32.o: sratom.c | |||||
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@ | |||||
lilv_win32.o: lilv.c | |||||
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@ | |||||
# -------------------------------------------------------------- | |||||
win64: carla_lilv_win64.a | |||||
carla_lilv_win64.a: $(OBJS_win64) | |||||
$(AR) rs $@ $^ | |||||
serd_win64.o: serd.c | |||||
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||||
sord_win64.o: sord.c | |||||
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@ | |||||
sratom_win64.o: sratom.c | |||||
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@ | |||||
lilv_win64.o: lilv.c | |||||
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@ | $(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@ | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||