Browse Source

More plugin bridge work

tags/1.9.4
falkTX 12 years ago
parent
commit
9acd29fa63
7 changed files with 148 additions and 160 deletions
  1. +40
    -7
      source/backend/engine/CarlaEngineBridge.cpp
  2. +84
    -96
      source/backend/plugin/BridgePlugin.cpp
  3. +15
    -10
      source/backend/plugin/CarlaPlugin.cpp
  4. +2
    -3
      source/bridges/CarlaBridgeClient.hpp
  5. +2
    -23
      source/bridges/CarlaBridgeOsc.cpp
  6. +1
    -1
      source/bridges/CarlaBridgeOsc.hpp
  7. +4
    -20
      source/bridges/CarlaBridgePlugin.cpp

+ 40
- 7
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -181,34 +181,67 @@ public:


case kPluginBridgeOpcodeReadyWait: case kPluginBridgeOpcodeReadyWait:
{ {
const int size = rdwr_readInt(&fShmControl.data->ringBuffer);
const int size(rdwr_readInt(&fShmControl.data->ringBuffer));
fShmAudioPool.data = (float*)carla_shm_map(fShmAudioPool.shm, size); fShmAudioPool.data = (float*)carla_shm_map(fShmAudioPool.shm, size);
break; break;
} }


case kPluginBridgeOpcodeSetBufferSize: case kPluginBridgeOpcodeSetBufferSize:
{ {
const int bufferSize = rdwr_readInt(&fShmControl.data->ringBuffer);
const int bufferSize(rdwr_readInt(&fShmControl.data->ringBuffer));
bufferSizeChanged(bufferSize); bufferSizeChanged(bufferSize);
break; break;
} }


case kPluginBridgeOpcodeSetSampleRate: case kPluginBridgeOpcodeSetSampleRate:
{ {
const float sampleRate = rdwr_readFloat(&fShmControl.data->ringBuffer);
const float sampleRate(rdwr_readFloat(&fShmControl.data->ringBuffer));
sampleRateChanged(sampleRate); sampleRateChanged(sampleRate);
break; break;
} }


case kPluginBridgeOpcodeSetParameter: case kPluginBridgeOpcodeSetParameter:
{ {
const int index = rdwr_readInt(&fShmControl.data->ringBuffer);
const float value = rdwr_readFloat(&fShmControl.data->ringBuffer);
const int index(rdwr_readInt(&fShmControl.data->ringBuffer));
const float value(rdwr_readFloat(&fShmControl.data->ringBuffer));


CarlaPlugin* const plugin(getPluginUnchecked(0)); CarlaPlugin* const plugin(getPluginUnchecked(0));


if (plugin != nullptr && plugin->enabled()) if (plugin != nullptr && plugin->enabled())
{
plugin->setParameterValueByRealIndex(index, value, false, false, false); plugin->setParameterValueByRealIndex(index, value, false, false, false);
plugin->postponeRtEvent(kPluginPostRtEventParameterChange, index, 0, value);
}

break;
}

case kPluginBridgeOpcodeSetProgram:
{
const int index(rdwr_readInt(&fShmControl.data->ringBuffer));

CarlaPlugin* const plugin(getPluginUnchecked(0));

if (plugin != nullptr && plugin->enabled())
{
plugin->setProgram(index, false, false, false);
plugin->postponeRtEvent(kPluginPostRtEventProgramChange, index, 0, 0.0f);
}

break;
}

case kPluginBridgeOpcodeSetMidiProgram:
{
const int index(rdwr_readInt(&fShmControl.data->ringBuffer));

CarlaPlugin* const plugin(getPluginUnchecked(0));

if (plugin != nullptr && plugin->enabled())
{
plugin->setMidiProgram(index, false, false, false);
plugin->postponeRtEvent(kPluginPostRtEventMidiProgramChange, index, 0, 0.0f);
}


break; break;
} }
@@ -220,8 +253,8 @@ public:


if (plugin != nullptr && plugin->enabled() && plugin->tryLock()) if (plugin != nullptr && plugin->enabled() && plugin->tryLock())
{ {
const uint32_t inCount = plugin->audioInCount();
const uint32_t outCount = plugin->audioOutCount();
const uint32_t inCount(plugin->audioInCount());
const uint32_t outCount(plugin->audioOutCount());


float* inBuffer[inCount]; float* inBuffer[inCount];
float* outBuffer[outCount]; float* outBuffer[outCount];


+ 84
- 96
source/backend/plugin/BridgePlugin.cpp View File

@@ -340,6 +340,54 @@ public:
CarlaPlugin::setParameterValue(parameterId, fixedValue, sendGui, sendOsc, sendCallback); CarlaPlugin::setParameterValue(parameterId, fixedValue, sendGui, sendOsc, sendCallback);
} }


void setProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override
{
CARLA_ASSERT(index >= -1 && index < static_cast<int32_t>(kData->prog.count));

if (index < -1)
index = -1;
else if (index > static_cast<int32_t>(kData->prog.count))
return;

const bool doLock(sendGui || sendOsc || sendCallback);

if (doLock)
kData->singleMutex.lock();

rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetProgram);
rdwr_writeInt(&fShmControl.data->ringBuffer, index);
rdwr_commitWrite(&fShmControl.data->ringBuffer);

if (doLock)
kData->singleMutex.unlock();

CarlaPlugin::setProgram(index, sendGui, sendOsc, sendCallback);
}

void setMidiProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override
{
CARLA_ASSERT(index >= -1 && index < static_cast<int32_t>(kData->midiprog.count));

if (index < -1)
index = -1;
else if (index > static_cast<int32_t>(kData->midiprog.count))
return;

const bool doLock(sendGui || sendOsc || sendCallback);

if (doLock)
kData->singleMutex.lock();

rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetMidiProgram);
rdwr_writeInt(&fShmControl.data->ringBuffer, index);
rdwr_commitWrite(&fShmControl.data->ringBuffer);

if (doLock)
kData->singleMutex.unlock();

CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback);
}

#if 0 #if 0
void setCustomData(const char* const type, const char* const key, const char* const value, const bool sendGui) override void setCustomData(const char* const type, const char* const key, const char* const value, const bool sendGui) override
{ {
@@ -533,6 +581,24 @@ public:
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Plugin processing // Plugin processing


void activate() override
{
rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetParameter);
rdwr_writeInt(&fShmControl.data->ringBuffer, PARAMETER_ACTIVE);
rdwr_writeFloat(&fShmControl.data->ringBuffer, 1.0f);
rdwr_commitWrite(&fShmControl.data->ringBuffer);
waitForServer();
}

void deactivate() override
{
rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetParameter);
rdwr_writeInt(&fShmControl.data->ringBuffer, PARAMETER_ACTIVE);
rdwr_writeFloat(&fShmControl.data->ringBuffer, 0.0f);
rdwr_commitWrite(&fShmControl.data->ringBuffer);
waitForServer();
}

void process(float** const inBuffer, float** const outBuffer, const uint32_t frames) override void process(float** const inBuffer, float** const outBuffer, const uint32_t frames) override
{ {
uint32_t i/*, k*/; uint32_t i/*, k*/;
@@ -693,6 +759,23 @@ public:
return true; return true;
} }


void bufferSizeChanged(const uint32_t newBufferSize) override
{
resizeAudioPool(newBufferSize);

rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetBufferSize);
rdwr_writeInt(&fShmControl.data->ringBuffer, newBufferSize);
rdwr_commitWrite(&fShmControl.data->ringBuffer);

}

void sampleRateChanged(const double newSampleRate) override
{
rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetSampleRate);
rdwr_writeFloat(&fShmControl.data->ringBuffer, newSampleRate);
rdwr_commitWrite(&fShmControl.data->ringBuffer);
}

// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Plugin buffers // Plugin buffers


@@ -710,102 +793,7 @@ public:
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Post-poned UI Stuff // Post-poned UI Stuff


void uiParameterChange(const uint32_t index, const float value) override
{
CARLA_ASSERT(index < kData->param.count);

if (index >= kData->param.count)
return;
if (kData->osc.data.target == nullptr)
return;

osc_send_control(&kData->osc.data, kData->param.data[index].rindex, value);
}

void uiProgramChange(const uint32_t index) override
{
CARLA_ASSERT(index < kData->prog.count);

if (index >= kData->prog.count)
return;
if (kData->osc.data.target == nullptr)
return;

osc_send_program(&kData->osc.data, index);
}

void uiMidiProgramChange(const uint32_t index) override
{
CARLA_ASSERT(index < kData->midiprog.count);

if (index >= kData->midiprog.count)
return;
if (kData->osc.data.target == nullptr)
return;

osc_send_midi_program(&kData->osc.data, index);
}

void uiNoteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) override
{
CARLA_ASSERT(channel < MAX_MIDI_CHANNELS);
CARLA_ASSERT(note < MAX_MIDI_NOTE);
CARLA_ASSERT(velo > 0 && velo < MAX_MIDI_VALUE);

if (channel >= MAX_MIDI_CHANNELS)
return;
if (note >= MAX_MIDI_NOTE)
return;
if (velo >= MAX_MIDI_VALUE)
return;
if (kData->osc.data.target == nullptr)
return;

uint8_t midiData[4] = { 0 };
midiData[1] = MIDI_STATUS_NOTE_ON + channel;
midiData[2] = note;
midiData[3] = velo;

osc_send_midi(&kData->osc.data, midiData);
}

void uiNoteOff(const uint8_t channel, const uint8_t note) override
{
CARLA_ASSERT(channel < MAX_MIDI_CHANNELS);
CARLA_ASSERT(note < MAX_MIDI_NOTE);

if (channel >= MAX_MIDI_CHANNELS)
return;
if (note >= MAX_MIDI_NOTE)
return;
if (kData->osc.data.target == nullptr)
return;

uint8_t midiData[4] = { 0 };
midiData[1] = MIDI_STATUS_NOTE_OFF + channel;
midiData[2] = note;

osc_send_midi(&kData->osc.data, midiData);
}

void bufferSizeChanged(const uint32_t newBufferSize) override
{
resizeAudioPool(newBufferSize);

rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetBufferSize);
rdwr_writeInt(&fShmControl.data->ringBuffer, newBufferSize);

rdwr_commitWrite(&fShmControl.data->ringBuffer);

}

void sampleRateChanged(const double newSampleRate) override
{
rdwr_writeOpcode(&fShmControl.data->ringBuffer, kPluginBridgeOpcodeSetSampleRate);
rdwr_writeFloat(&fShmControl.data->ringBuffer, newSampleRate);

rdwr_commitWrite(&fShmControl.data->ringBuffer);
}
// nothing


// ------------------------------------------------------------------- // -------------------------------------------------------------------




+ 15
- 10
source/backend/plugin/CarlaPlugin.cpp View File

@@ -1043,7 +1043,9 @@ void CarlaPlugin::setEnabled(const bool yesNo)


void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool sendCallback) void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool sendCallback)
{ {
#ifndef BUILD_BRIDGE
CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT
#endif


if (kData->active == active) if (kData->active == active)
return; return;
@@ -1067,9 +1069,6 @@ void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool se


if (sendCallback) if (sendCallback)
kData->engine->callback(CALLBACK_PARAMETER_VALUE_CHANGED, fId, PARAMETER_ACTIVE, 0, value, nullptr); kData->engine->callback(CALLBACK_PARAMETER_VALUE_CHANGED, fId, PARAMETER_ACTIVE, 0, value, nullptr);

if (fHints & PLUGIN_IS_BRIDGE)
osc_send_control(&kData->osc.data, PARAMETER_ACTIVE, value);
#else #else
return; return;


@@ -1173,7 +1172,9 @@ void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool s


void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback)
{ {
#ifndef BUILD_BRIDGE
CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT CARLA_ASSERT(sendOsc || sendCallback); // never call this from RT
#endif
CARLA_ASSERT_INT(channel >= -1 && channel < MAX_MIDI_CHANNELS, channel); CARLA_ASSERT_INT(channel >= -1 && channel < MAX_MIDI_CHANNELS, channel);


if (kData->ctrlChannel == channel) if (kData->ctrlChannel == channel)
@@ -1666,7 +1667,7 @@ void CarlaPlugin::registerToOscClient()
} }


// Plugin Parameters // Plugin Parameters
if (kData->param.count > 0 /*&& kData->param.count < kData->engine->getOptions().maxParameters*/)
if (kData->param.count > 0 && kData->param.count < kData->engine->getOptions().maxParameters)
{ {
char bufName[STR_MAX+1], bufUnit[STR_MAX+1]; char bufName[STR_MAX+1], bufUnit[STR_MAX+1];


@@ -1937,7 +1938,7 @@ void CarlaPlugin::postRtEventsRun()


while (! kData->postRtEvents.data.isEmpty()) while (! kData->postRtEvents.data.isEmpty())
{ {
const PluginPostRtEvent& event = kData->postRtEvents.data.getFirst(true);
const PluginPostRtEvent& event(kData->postRtEvents.data.getFirst(true));


switch (event.type) switch (event.type)
{ {
@@ -1945,7 +1946,9 @@ void CarlaPlugin::postRtEventsRun()
break; break;


case kPluginPostRtEventDebug: case kPluginPostRtEventDebug:
#ifndef BUILD_BRIDGE
kData->engine->callback(CALLBACK_DEBUG, fId, event.value1, event.value2, event.value3, nullptr); kData->engine->callback(CALLBACK_DEBUG, fId, event.value1, event.value2, event.value3, nullptr);
#endif
break; break;


case kPluginPostRtEventParameterChange: case kPluginPostRtEventParameterChange:
@@ -1957,10 +1960,10 @@ void CarlaPlugin::postRtEventsRun()
// Update OSC control client // Update OSC control client
if (kData->engine->isOscControlRegistered()) if (kData->engine->isOscControlRegistered())
kData->engine->osc_send_control_set_parameter_value(fId, event.value1, event.value3); kData->engine->osc_send_control_set_parameter_value(fId, event.value1, event.value3);
#endif


// Update Host // Update Host
kData->engine->callback(CALLBACK_PARAMETER_VALUE_CHANGED, fId, event.value1, 0, event.value3, nullptr); kData->engine->callback(CALLBACK_PARAMETER_VALUE_CHANGED, fId, event.value1, 0, event.value3, nullptr);
#endif
break; break;


case kPluginPostRtEventProgramChange: case kPluginPostRtEventProgramChange:
@@ -1977,10 +1980,10 @@ void CarlaPlugin::postRtEventsRun()
for (uint32_t j=0; j < kData->param.count; ++j) for (uint32_t j=0; j < kData->param.count; ++j)
kData->engine->osc_send_control_set_default_value(fId, j, kData->param.ranges[j].def); kData->engine->osc_send_control_set_default_value(fId, j, kData->param.ranges[j].def);
} }
#endif


// Update Host // Update Host
kData->engine->callback(CALLBACK_PROGRAM_CHANGED, fId, event.value1, 0, 0.0f, nullptr); kData->engine->callback(CALLBACK_PROGRAM_CHANGED, fId, event.value1, 0, 0.0f, nullptr);
#endif
break; break;


case kPluginPostRtEventMidiProgramChange: case kPluginPostRtEventMidiProgramChange:
@@ -1997,10 +2000,10 @@ void CarlaPlugin::postRtEventsRun()
for (uint32_t j=0; j < kData->param.count; ++j) for (uint32_t j=0; j < kData->param.count; ++j)
kData->engine->osc_send_control_set_default_value(fId, j, kData->param.ranges[j].def); kData->engine->osc_send_control_set_default_value(fId, j, kData->param.ranges[j].def);
} }
#endif


// Update Host // Update Host
kData->engine->callback(CALLBACK_MIDI_PROGRAM_CHANGED, fId, event.value1, 0, 0.0f, nullptr); kData->engine->callback(CALLBACK_MIDI_PROGRAM_CHANGED, fId, event.value1, 0, 0.0f, nullptr);
#endif
break; break;


case kPluginPostRtEventNoteOn: case kPluginPostRtEventNoteOn:
@@ -2011,10 +2014,10 @@ void CarlaPlugin::postRtEventsRun()
// Update OSC control client // Update OSC control client
if (kData->engine->isOscControlRegistered()) if (kData->engine->isOscControlRegistered())
kData->engine->osc_send_control_note_on(fId, event.value1, event.value2, int(event.value3)); kData->engine->osc_send_control_note_on(fId, event.value1, event.value2, int(event.value3));
#endif


// Update Host // Update Host
kData->engine->callback(CALLBACK_NOTE_ON, fId, event.value1, event.value2, int(event.value3), nullptr); kData->engine->callback(CALLBACK_NOTE_ON, fId, event.value1, event.value2, int(event.value3), nullptr);
#endif
break; break;


case kPluginPostRtEventNoteOff: case kPluginPostRtEventNoteOff:
@@ -2025,10 +2028,10 @@ void CarlaPlugin::postRtEventsRun()
// Update OSC control client // Update OSC control client
if (kData->engine->isOscControlRegistered()) if (kData->engine->isOscControlRegistered())
kData->engine->osc_send_control_note_off(fId, event.value1, event.value2); kData->engine->osc_send_control_note_off(fId, event.value1, event.value2);
#endif


// Update Host // Update Host
kData->engine->callback(CALLBACK_NOTE_OFF, fId, event.value1, event.value2, 0.0f, nullptr); kData->engine->callback(CALLBACK_NOTE_OFF, fId, event.value1, event.value2, 0.0f, nullptr);
#endif
break; break;
} }
} }
@@ -2166,8 +2169,10 @@ CarlaPlugin::ScopedSingleProcessLocker::~ScopedSingleProcessLocker()


if (kBlock) if (kBlock)
{ {
#ifndef BUILD_BRIDGE
if (kPlugin->kData->singleMutex.wasTryLockCalled()) if (kPlugin->kData->singleMutex.wasTryLockCalled())
kPlugin->kData->needsReset = true; kPlugin->kData->needsReset = true;
#endif


kPlugin->kData->singleMutex.unlock(); kPlugin->kData->singleMutex.unlock();
} }


+ 2
- 3
source/bridges/CarlaBridgeClient.hpp View File

@@ -67,10 +67,9 @@ public:
// processing // processing


virtual void setParameter(const int32_t rindex, const float value) = 0; virtual void setParameter(const int32_t rindex, const float value) = 0;

#ifndef BUILD_BRIDGE_PLUGIN
virtual void setProgram(const uint32_t index) = 0; virtual void setProgram(const uint32_t index) = 0;
#ifdef BUILD_BRIDGE_PLUGIN
virtual void setMidiProgram(const uint32_t index) = 0;
#else
virtual void setMidiProgram(const uint32_t bank, const uint32_t program) = 0; virtual void setMidiProgram(const uint32_t bank, const uint32_t program) = 0;
virtual void noteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) = 0; virtual void noteOn(const uint8_t channel, const uint8_t note, const uint8_t velo) = 0;
virtual void noteOff(const uint8_t channel, const uint8_t note) = 0; virtual void noteOff(const uint8_t channel, const uint8_t note) = 0;


+ 2
- 23
source/bridges/CarlaBridgeOsc.cpp View File

@@ -162,11 +162,11 @@ int CarlaBridgeOsc::handleMessage(const char* const path, const int argc, const
return handleMsgConfigure(argc, argv, types); return handleMsgConfigure(argc, argv, types);
if (std::strcmp(method, "control") == 0) if (std::strcmp(method, "control") == 0)
return handleMsgControl(argc, argv, types); return handleMsgControl(argc, argv, types);
#ifndef BUILD_BRIDGE_PLUGIN
if (std::strcmp(method, "program") == 0) if (std::strcmp(method, "program") == 0)
return handleMsgProgram(argc, argv, types); return handleMsgProgram(argc, argv, types);
if (std::strcmp(method, "midi-program") == 0) if (std::strcmp(method, "midi-program") == 0)
return handleMsgMidiProgram(argc, argv, types); return handleMsgMidiProgram(argc, argv, types);
#ifndef BUILD_BRIDGE_PLUGIN
if (std::strcmp(method, "midi") == 0) if (std::strcmp(method, "midi") == 0)
return handleMsgMidi(argc, argv, types); return handleMsgMidi(argc, argv, types);
#endif #endif
@@ -246,6 +246,7 @@ int CarlaBridgeOsc::handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS)
return 0; return 0;
} }


#ifndef BUILD_BRIDGE_PLUGIN
int CarlaBridgeOsc::handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaBridgeOsc::handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{ {
carla_debug("CarlaBridgeOsc::handleMsgProgram()"); carla_debug("CarlaBridgeOsc::handleMsgProgram()");
@@ -267,28 +268,6 @@ int CarlaBridgeOsc::handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
return 0; return 0;
} }


#ifdef BUILD_BRIDGE_PLUGIN
int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{
carla_debug("CarlaBridgeOsc::handleMsgMidiProgram()");
CARLA_ASSERT(kClient != nullptr);
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(1, "i");

if (kClient == nullptr)
return 1;

const int32_t index = argv[0]->i;

CARLA_SAFE_ASSERT_INT(index >= 0, index);

if (index < 0)
return 1;

kClient->setMidiProgram(static_cast<uint32_t>(index));

return 0;
}
#else
int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{ {
carla_debug("CarlaBridgeOsc::handleMsgMidiProgram()"); carla_debug("CarlaBridgeOsc::handleMsgMidiProgram()");


+ 1
- 1
source/bridges/CarlaBridgeOsc.hpp View File

@@ -99,9 +99,9 @@ private:


int handleMsgConfigure(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgConfigure(CARLA_BRIDGE_OSC_HANDLE_ARGS);
int handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgControl(CARLA_BRIDGE_OSC_HANDLE_ARGS);
#ifndef BUILD_BRIDGE_PLUGIN
int handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS);
int handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS);
#ifndef BUILD_BRIDGE_PLUGIN
int handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS); int handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS);
#endif #endif
int handleMsgShow(); int handleMsgShow();


+ 4
- 20
source/bridges/CarlaBridgePlugin.cpp View File

@@ -18,6 +18,7 @@
#include "CarlaBridgeClient.hpp" #include "CarlaBridgeClient.hpp"
#include "CarlaBridgeToolkit.hpp" #include "CarlaBridgeToolkit.hpp"


#include "CarlaBridgeUtils.hpp"
#include "CarlaStandalone.hpp" #include "CarlaStandalone.hpp"
#include "CarlaEngine.hpp" #include "CarlaEngine.hpp"
#include "CarlaPlugin.hpp" #include "CarlaPlugin.hpp"
@@ -212,7 +213,7 @@ public:


for (uint32_t i=0; i < fPlugin->customDataCount(); i++) for (uint32_t i=0; i < fPlugin->customDataCount(); i++)
{ {
const CarlaBackend::CustomData& cdata = fPlugin->customData(i);
const CarlaBackend::CustomData& cdata(fPlugin->customData(i));
fEngine->osc_send_bridge_set_custom_data(cdata.type, cdata.key, cdata.value); fEngine->osc_send_bridge_set_custom_data(cdata.type, cdata.key, cdata.value);
} }


@@ -244,7 +245,7 @@ public:
} }
} }


//engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_SAVED, "");
fEngine->osc_send_bridge_configure(CARLA_BRIDGE_MSG_SAVED, "");
} }


void setCustomData(const char* const type, const char* const key, const char* const value) void setCustomData(const char* const type, const char* const key, const char* const value)
@@ -299,24 +300,6 @@ public:
fPlugin->setParameterValueByRealIndex(rindex, value, true, true, false); fPlugin->setParameterValueByRealIndex(rindex, value, true, true, false);
} }


void setProgram(const uint32_t index)
{
carla_debug("CarlaPluginClient::setProgram(%i)", index);
CARLA_ASSERT(fPlugin != nullptr);

if (fPlugin != nullptr)
fPlugin->setProgram(index, true, true, false);
}

void setMidiProgram(const uint32_t index)
{
carla_debug("CarlaPluginClient::setMidiProgram(%i)", index);
CARLA_ASSERT(fPlugin != nullptr);

if (fPlugin != nullptr)
fPlugin->setMidiProgram(index, true, true, false);
}

protected: protected:
void handleCallback(const CarlaBackend::CallbackType action, const int value1, const int value2, const float value3, const char* const valueStr) void handleCallback(const CarlaBackend::CallbackType action, const int value1, const int value2, const float value3, const char* const valueStr)
{ {
@@ -340,6 +323,7 @@ protected:
{ {
// hide gui // hide gui
//sendOscConfigure(); //sendOscConfigure();
fEngine->osc_send_bridge_configure(CARLA_BRIDGE_MSG_HIDE_GUI, "");
} }
break; break;
default: default:


Loading…
Cancel
Save