@@ -925,13 +925,17 @@ void set_parameter_value(unsigned short plugin_id, quint32 parameter_id, double | |||||
qCritical("CarlaBackendStandalone::set_parameter_value(%i, %i, %g) - could not find plugin", plugin_id, parameter_id, value); | qCritical("CarlaBackendStandalone::set_parameter_value(%i, %i, %g) - could not find plugin", plugin_id, parameter_id, value); | ||||
} | } | ||||
void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, quint8 channel) | |||||
void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, int16_t midi_cc) | |||||
{ | { | ||||
qDebug("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i)", plugin_id, parameter_id, channel); | |||||
qDebug("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i)", plugin_id, parameter_id, midi_cc); | |||||
if (channel > 15) | |||||
if (midi_cc < -1) | |||||
{ | { | ||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - invalid channel number", plugin_id, parameter_id, channel); | |||||
midi_cc = -1; | |||||
} | |||||
else if (midi_cc > 0x5F) // 95 | |||||
{ | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - invalid midi_cc number", plugin_id, parameter_id, midi_cc); | |||||
return; | return; | ||||
} | } | ||||
@@ -940,26 +944,22 @@ void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, | |||||
if (plugin) | if (plugin) | ||||
{ | { | ||||
if (parameter_id < plugin->parameterCount()) | if (parameter_id < plugin->parameterCount()) | ||||
return plugin->setParameterMidiChannel(parameter_id, channel); | |||||
return plugin->setParameterMidiCC(parameter_id, midi_cc, true, false); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - parameter_id out of bounds", plugin_id, parameter_id, channel); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - parameter_id out of bounds", plugin_id, parameter_id, midi_cc); | |||||
return; | return; | ||||
} | } | ||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - could not find plugin", plugin_id, parameter_id, channel); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - could not find plugin", plugin_id, parameter_id, midi_cc); | |||||
} | } | ||||
void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, int16_t midi_cc) | |||||
void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, quint8 channel) | |||||
{ | { | ||||
qDebug("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i)", plugin_id, parameter_id, midi_cc); | |||||
qDebug("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i)", plugin_id, parameter_id, channel); | |||||
if (midi_cc < -1) | |||||
{ | |||||
midi_cc = -1; | |||||
} | |||||
else if (midi_cc > 0x5F) // 95 | |||||
if (channel > 15) | |||||
{ | { | ||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - invalid midi_cc number", plugin_id, parameter_id, midi_cc); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - invalid channel number", plugin_id, parameter_id, channel); | |||||
return; | return; | ||||
} | } | ||||
@@ -968,13 +968,13 @@ void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, int16 | |||||
if (plugin) | if (plugin) | ||||
{ | { | ||||
if (parameter_id < plugin->parameterCount()) | if (parameter_id < plugin->parameterCount()) | ||||
return plugin->setParameterMidiCC(parameter_id, midi_cc); | |||||
return plugin->setParameterMidiChannel(parameter_id, channel, true, false); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - parameter_id out of bounds", plugin_id, parameter_id, midi_cc); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - parameter_id out of bounds", plugin_id, parameter_id, channel); | |||||
return; | return; | ||||
} | } | ||||
qCritical("CarlaBackendStandalone::set_parameter_midi_cc(%i, %i, %i) - could not find plugin", plugin_id, parameter_id, midi_cc); | |||||
qCritical("CarlaBackendStandalone::set_parameter_midi_channel(%i, %i, %i) - could not find plugin", plugin_id, parameter_id, channel); | |||||
} | } | ||||
void set_program(unsigned short plugin_id, quint32 program_id) | void set_program(unsigned short plugin_id, quint32 program_id) | ||||
@@ -135,8 +135,8 @@ CARLA_EXPORT void set_balance_left(unsigned short plugin_id, double value); | |||||
CARLA_EXPORT void set_balance_right(unsigned short plugin_id, double value); | CARLA_EXPORT void set_balance_right(unsigned short plugin_id, double value); | ||||
CARLA_EXPORT void set_parameter_value(unsigned short plugin_id, quint32 parameter_id, double value); | CARLA_EXPORT void set_parameter_value(unsigned short plugin_id, quint32 parameter_id, double value); | ||||
CARLA_EXPORT void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, quint8 channel); | |||||
CARLA_EXPORT void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, qint16 midi_cc); | CARLA_EXPORT void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, qint16 midi_cc); | ||||
CARLA_EXPORT void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, quint8 channel); | |||||
CARLA_EXPORT void set_program(unsigned short plugin_id, quint32 program_id); | CARLA_EXPORT void set_program(unsigned short plugin_id, quint32 program_id); | ||||
CARLA_EXPORT void set_midi_program(unsigned short plugin_id, quint32 midi_program_id); | CARLA_EXPORT void set_midi_program(unsigned short plugin_id, quint32 midi_program_id); | ||||
@@ -843,6 +843,7 @@ void CarlaEngine::osc_send_add_plugin(const int32_t pluginId, const char* const | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(pluginName); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -868,13 +869,13 @@ void CarlaEngine::osc_send_remove_plugin(const int32_t pluginId) | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_plugin_data(const int32_t pluginId, const int32_t type, const int32_t category, const int32_t hints, | |||||
const char* const realName, const char* const label, const char* const maker, const char* const copyright, const int64_t uniqueId) | |||||
void CarlaEngine::osc_send_set_plugin_data(const int32_t pluginId, const int32_t type, const int32_t category, const int32_t hints, const char* const realName, const char* const label, const char* const maker, const char* const copyright, const int64_t uniqueId) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_plugin_data(%i, %i, %i, %i, \"%s\", \"%s\", \"%s\", \"%s\", %li)", pluginId, type, category, hints, realName, label, maker, copyright, uniqueId); | qDebug("CarlaEngine::osc_send_set_plugin_data(%i, %i, %i, %i, \"%s\", \"%s\", \"%s\", \"%s\", %li)", pluginId, type, category, hints, realName, label, maker, copyright, uniqueId); | ||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(type != PLUGIN_NONE); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -885,8 +886,7 @@ void CarlaEngine::osc_send_set_plugin_data(const int32_t pluginId, const int32_t | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_plugin_ports(const int32_t pluginId, const int32_t audioIns, const int32_t audioOuts, const int32_t midiIns, const int32_t midiOuts, | |||||
const int32_t cIns, const int32_t cOuts, const int32_t cTotals) | |||||
void CarlaEngine::osc_send_set_plugin_ports(const int32_t pluginId, const int32_t audioIns, const int32_t audioOuts, const int32_t midiIns, const int32_t midiOuts, const int32_t cIns, const int32_t cOuts, const int32_t cTotals) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_plugin_ports(%i, %i, %i, %i, %i, %i, %i, %i)", pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals); | qDebug("CarlaEngine::osc_send_set_plugin_ports(%i, %i, %i, %i, %i, %i, %i, %i)", pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals); | ||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
@@ -902,13 +902,14 @@ void CarlaEngine::osc_send_set_plugin_ports(const int32_t pluginId, const int32_ | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_parameter_data(const int32_t pluginId, const int32_t index, const int32_t type, const int32_t hints, | |||||
const char* const name, const char* const label, const double current) | |||||
void CarlaEngine::osc_send_set_parameter_data(const int32_t pluginId, const int32_t index, const int32_t type, const int32_t hints, const char* const name, const char* const label, const double current) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_parameter_data(%i, %i, %i, %i, \"%s\", \"%s\", %g)", pluginId, index, type, hints, name, label, current); | qDebug("CarlaEngine::osc_send_set_parameter_data(%i, %i, %i, %i, \"%s\", \"%s\", %g)", pluginId, index, type, hints, name, label, current); | ||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
Q_ASSERT(type != PARAMETER_UNKNOWN); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -919,13 +920,14 @@ void CarlaEngine::osc_send_set_parameter_data(const int32_t pluginId, const int3 | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_parameter_ranges(const int32_t pluginId, const int32_t index, const double min, const double max, const double def, | |||||
const double step, const double stepSmall, const double stepLarge) | |||||
void CarlaEngine::osc_send_set_parameter_ranges(const int32_t pluginId, const int32_t index, const double min, const double max, const double def, const double step, const double stepSmall, const double stepLarge) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_parameter_ranges(%i, %i, %g, %g, %g, %g, %g, %g)", pluginId, index, min, max, def, step, stepSmall, stepLarge); | qDebug("CarlaEngine::osc_send_set_parameter_ranges(%i, %i, %g, %g, %g, %g, %g, %g)", pluginId, index, min, max, def, step, stepSmall, stepLarge); | ||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
Q_ASSERT(min < max); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -942,6 +944,7 @@ void CarlaEngine::osc_send_set_parameter_midi_cc(const int32_t pluginId, const i | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -958,6 +961,8 @@ void CarlaEngine::osc_send_set_parameter_midi_channel(const int32_t pluginId, co | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
Q_ASSERT(channel >= 0 && channel < 16); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -995,6 +1000,7 @@ void CarlaEngine::osc_send_set_default_value(const int32_t pluginId, const int32 | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -1027,6 +1033,7 @@ void CarlaEngine::osc_send_set_program_count(const int32_t pluginId, const int32 | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(count >= 0); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -1043,6 +1050,8 @@ void CarlaEngine::osc_send_set_program_name(const int32_t pluginId, const int32_ | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
Q_ASSERT(name); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -1075,6 +1084,7 @@ void CarlaEngine::osc_send_set_midi_program_count(const int32_t pluginId, const | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(count >= 0); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -1091,6 +1101,10 @@ void CarlaEngine::osc_send_set_midi_program_data(const int32_t pluginId, const i | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | ||||
Q_ASSERT(index >= 0); | |||||
Q_ASSERT(bank >= 0); | |||||
Q_ASSERT(program >= 0); | |||||
Q_ASSERT(name); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
@@ -1101,67 +1115,74 @@ void CarlaEngine::osc_send_set_midi_program_data(const int32_t pluginId, const i | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_input_peak_value(const int32_t plugin_id, const int32_t port_id, const double value) | |||||
void CarlaEngine::osc_send_set_input_peak_value(const int32_t pluginId, const int32_t portId, const double value) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_input_peak_value(%i, %i, %f)", plugin_id, port_id, value); | |||||
qDebug("CarlaEngine::osc_send_set_input_peak_value(%i, %i, %g)", pluginId, portId, value); | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
//Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(portId == 1 || portId == 2); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
char target_path[strlen(oscData->path)+22]; | char target_path[strlen(oscData->path)+22]; | ||||
strcpy(target_path, oscData->path); | strcpy(target_path, oscData->path); | ||||
strcat(target_path, "/set_input_peak_value"); | strcat(target_path, "/set_input_peak_value"); | ||||
lo_send(oscData->target, target_path, "iid", plugin_id, port_id, value); | |||||
lo_send(oscData->target, target_path, "iid", pluginId, portId, value); | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_set_output_peak_value(const int32_t plugin_id, const int32_t port_id, const double value) | |||||
void CarlaEngine::osc_send_set_output_peak_value(const int32_t pluginId, const int32_t portId, const double value) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_set_output_peak_value(%i, %i, %f)", plugin_id, port_id, value); | |||||
qDebug("CarlaEngine::osc_send_set_output_peak_value(%i, %i, %g)", pluginId, portId, value); | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
//Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(portId == 1 || portId == 2); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
char target_path[strlen(oscData->path)+23]; | char target_path[strlen(oscData->path)+23]; | ||||
strcpy(target_path, oscData->path); | strcpy(target_path, oscData->path); | ||||
strcat(target_path, "/set_output_peak_value"); | strcat(target_path, "/set_output_peak_value"); | ||||
lo_send(oscData->target, target_path, "iid", plugin_id, port_id, value); | |||||
lo_send(oscData->target, target_path, "iid", pluginId, portId, value); | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_note_on(const int32_t plugin_id, const int32_t channel, const int32_t note, const int32_t velo) | |||||
void CarlaEngine::osc_send_note_on(const int32_t pluginId, const int32_t channel, const int32_t note, const int32_t velo) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_note_on(%i, %i, %i, %i)", plugin_id, channel, note, velo); | |||||
qDebug("CarlaEngine::osc_send_note_on(%i, %i, %i, %i)", pluginId, channel, note, velo); | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
//Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(channel >= 0 && channel < 16); | |||||
Q_ASSERT(note >= 0 && note < 128); | |||||
Q_ASSERT(velo >= 0 && velo < 128); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
char target_path[strlen(oscData->path)+9]; | char target_path[strlen(oscData->path)+9]; | ||||
strcpy(target_path, oscData->path); | strcpy(target_path, oscData->path); | ||||
strcat(target_path, "/note_on"); | strcat(target_path, "/note_on"); | ||||
lo_send(oscData->target, target_path, "iiii", plugin_id, channel, note, velo); | |||||
lo_send(oscData->target, target_path, "iiii", pluginId, channel, note, velo); | |||||
} | } | ||||
} | } | ||||
void CarlaEngine::osc_send_note_off(const int32_t plugin_id, const int32_t channel, const int32_t note) | |||||
void CarlaEngine::osc_send_note_off(const int32_t pluginId, const int32_t channel, const int32_t note) | |||||
{ | { | ||||
qDebug("CarlaEngine::osc_send_note_off(%i, %i, %i)", plugin_id, channel, note); | |||||
qDebug("CarlaEngine::osc_send_note_off(%i, %i, %i)", pluginId, channel, note); | |||||
const CarlaOscData* const oscData = m_osc.getControllerData(); | const CarlaOscData* const oscData = m_osc.getControllerData(); | ||||
Q_ASSERT(oscData); | Q_ASSERT(oscData); | ||||
//Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(pluginId >= 0 && pluginId < MAX_PLUGINS); | |||||
Q_ASSERT(channel >= 0 && channel < 16); | |||||
Q_ASSERT(note >= 0 && note < 128); | |||||
if (oscData->target) | if (oscData->target) | ||||
{ | { | ||||
char target_path[strlen(oscData->path)+10]; | char target_path[strlen(oscData->path)+10]; | ||||
strcpy(target_path, oscData->path); | strcpy(target_path, oscData->path); | ||||
strcat(target_path, "/note_off"); | strcat(target_path, "/note_off"); | ||||
lo_send(oscData->target, target_path, "iii", plugin_id, channel, note); | |||||
lo_send(oscData->target, target_path, "iii", pluginId, channel, note); | |||||
} | } | ||||
} | } | ||||
@@ -315,28 +315,24 @@ public: | |||||
void osc_send_add_plugin(const int32_t pluginId, const char* const pluginName); | void osc_send_add_plugin(const int32_t pluginId, const char* const pluginName); | ||||
void osc_send_remove_plugin(const int32_t pluginId); | void osc_send_remove_plugin(const int32_t pluginId); | ||||
void osc_send_set_plugin_data(const int32_t pluginId, const int32_t type, const int32_t category, const int32_t hints, | |||||
const char* const realName, const char* const label, const char* const maker, const char* const copyright, const int64_t uniqueId); | |||||
void osc_send_set_plugin_ports(const int32_t pluginId, const int32_t audioIns, const int32_t audioOuts, const int32_t midiIns, const int32_t midiOuts, | |||||
const int32_t cIns, const int32_t cOuts, const int32_t cTotals); | |||||
void osc_send_set_parameter_data(const int32_t pluginId, const int32_t index, const int32_t type, const int32_t hints, | |||||
const char* const name, const char* const label, const double current); | |||||
void osc_send_set_parameter_ranges(const int32_t pluginId, const int32_t index, const double min, const double max, const double def, | |||||
const double step, const double stepSmall, const double stepLarge); | |||||
void osc_send_set_plugin_data(const int32_t pluginId, const int32_t type, const int32_t category, const int32_t hints, const char* const realName, const char* const label, const char* const maker, const char* const copyright, const int64_t uniqueId); | |||||
void osc_send_set_plugin_ports(const int32_t pluginId, const int32_t audioIns, const int32_t audioOuts, const int32_t midiIns, const int32_t midiOuts, const int32_t cIns, const int32_t cOuts, const int32_t cTotals); | |||||
void osc_send_set_parameter_data(const int32_t pluginId, const int32_t index, const int32_t type, const int32_t hints, const char* const name, const char* const label, const double current); | |||||
void osc_send_set_parameter_ranges(const int32_t pluginId, const int32_t index, const double min, const double max, const double def, const double step, const double stepSmall, const double stepLarge); | |||||
void osc_send_set_parameter_midi_cc(const int32_t pluginId, const int32_t index, const int32_t cc); | void osc_send_set_parameter_midi_cc(const int32_t pluginId, const int32_t index, const int32_t cc); | ||||
void osc_send_set_parameter_midi_channel(const int32_t pluginId, const int32_t index, const int32_t channel); | void osc_send_set_parameter_midi_channel(const int32_t pluginId, const int32_t index, const int32_t channel); | ||||
void osc_send_set_parameter_value(const int32_t pluginId, const int32_t index, const double value); | void osc_send_set_parameter_value(const int32_t pluginId, const int32_t index, const double value); | ||||
void osc_send_set_default_value(const int32_t pluginId, const int32_t index, const double value); | void osc_send_set_default_value(const int32_t pluginId, const int32_t index, const double value); | ||||
void osc_send_set_program(const int32_t pluginId, const int32_t index); | void osc_send_set_program(const int32_t pluginId, const int32_t index); | ||||
void osc_send_set_program_count(int32_t pluginId, int program_count); | |||||
void osc_send_set_program_count(const int32_t pluginId, const int32_t count); | |||||
void osc_send_set_program_name(const int32_t pluginId, const int32_t index, const char* const name); | void osc_send_set_program_name(const int32_t pluginId, const int32_t index, const char* const name); | ||||
void osc_send_set_midi_program(const int32_t pluginId, const int32_t index); | void osc_send_set_midi_program(const int32_t pluginId, const int32_t index); | ||||
void osc_send_set_midi_program_count(const int32_t pluginId, const int32_t count); | void osc_send_set_midi_program_count(const int32_t pluginId, const int32_t count); | ||||
void osc_send_set_midi_program_data(const int32_t pluginId, const int32_t index, const int32_t bank, const int32_t program, const char* const name); | void osc_send_set_midi_program_data(const int32_t pluginId, const int32_t index, const int32_t bank, const int32_t program, const char* const name); | ||||
void osc_send_set_input_peak_value(int32_t pluginId, int port_id, double value); | |||||
void osc_send_set_output_peak_value(int32_t pluginId, int port_id, double value); | |||||
void osc_send_note_on(int32_t pluginId, int channel, int note, int velo); | |||||
void osc_send_note_off(int32_t pluginId, int channel, int note); | |||||
void osc_send_set_input_peak_value(const int32_t pluginId, const int32_t portId, const double value); | |||||
void osc_send_set_output_peak_value(const int32_t pluginId, const int32_t portId, const double value); | |||||
void osc_send_note_on(const int32_t pluginId, const int32_t channel, const int32_t note, const int32_t velo); | |||||
void osc_send_note_off(const int32_t pluginId, const int32_t channel, const int32_t note); | |||||
void osc_send_exit(); | void osc_send_exit(); | ||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
@@ -163,8 +163,12 @@ int CarlaOsc::handleMessage(const char* const path, const int argc, const lo_arg | |||||
return handle_set_balance_left(plugin, argc, argv, types); | return handle_set_balance_left(plugin, argc, argv, types); | ||||
if (strcmp(method, "/set_balance_right") == 0) | if (strcmp(method, "/set_balance_right") == 0) | ||||
return handle_set_balance_right(plugin, argc, argv, types); | return handle_set_balance_right(plugin, argc, argv, types); | ||||
if (strcmp(method, "/set_parameter") == 0) | |||||
return handle_set_parameter(plugin, argc, argv, types); | |||||
if (strcmp(method, "/set_parameter_value") == 0) | |||||
return handle_set_parameter_value(plugin, argc, argv, types); | |||||
if (strcmp(method, "/set_parameter_midi_cc") == 0) | |||||
return handle_set_parameter_midi_cc(plugin, argc, argv, types); | |||||
if (strcmp(method, "/set_parameter_midi_channel") == 0) | |||||
return handle_set_parameter_midi_channel(plugin, argc, argv, types); | |||||
if (strcmp(method, "/set_program") == 0) | if (strcmp(method, "/set_program") == 0) | ||||
return handle_set_program(plugin, argc, argv, types); | return handle_set_program(plugin, argc, argv, types); | ||||
if (strcmp(method, "/set_midi_program") == 0) | if (strcmp(method, "/set_midi_program") == 0) | ||||
@@ -413,8 +417,8 @@ int CarlaOsc::handle_set_active(CARLA_OSC_HANDLE_ARGS2) | |||||
qDebug("CarlaOsc::handle_set_active()"); | qDebug("CarlaOsc::handle_set_active()"); | ||||
CARLA_OSC_CHECK_OSC_TYPES(1, "i"); | CARLA_OSC_CHECK_OSC_TYPES(1, "i"); | ||||
bool value = (bool)argv[0]->i; | |||||
plugin->setActive(value, false, true); | |||||
bool active = (bool)argv[0]->i; | |||||
plugin->setActive(active, false, true); | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -463,14 +467,38 @@ int CarlaOsc::handle_set_balance_right(CARLA_OSC_HANDLE_ARGS2) | |||||
return 0; | return 0; | ||||
} | } | ||||
int CarlaOsc::handle_set_parameter(CARLA_OSC_HANDLE_ARGS2) | |||||
int CarlaOsc::handle_set_parameter_value(CARLA_OSC_HANDLE_ARGS2) | |||||
{ | { | ||||
qDebug("CarlaOsc::handle_set_parameter()"); | |||||
CARLA_OSC_CHECK_OSC_TYPES(1, "d"); | |||||
qDebug("CarlaOsc::handle_set_parameter_value()"); | |||||
CARLA_OSC_CHECK_OSC_TYPES(2, "id"); | |||||
const uint32_t index = argv[0]->i; | |||||
const double value = argv[1]->d; | |||||
plugin->setParameterValue(index, value, true, false, true); | |||||
return 0; | |||||
} | |||||
int CarlaOsc::handle_set_parameter_midi_cc(CARLA_OSC_HANDLE_ARGS2) | |||||
{ | |||||
qDebug("CarlaOsc::handle_set_parameter_midi_cc()"); | |||||
CARLA_OSC_CHECK_OSC_TYPES(2, "ii"); | |||||
const uint32_t index = argv[0]->i; | |||||
const int32_t cc = argv[1]->i; | |||||
plugin->setParameterMidiCC(index, cc, false, true); | |||||
return 0; | |||||
} | |||||
int CarlaOsc::handle_set_parameter_midi_channel(CARLA_OSC_HANDLE_ARGS2) | |||||
{ | |||||
qDebug("CarlaOsc::handle_set_parameter_midi_channel()"); | |||||
CARLA_OSC_CHECK_OSC_TYPES(2, "ii"); | |||||
const uint32_t parameter_id = argv[0]->i; | |||||
const double value = argv[1]->d; | |||||
plugin->setParameterValue(parameter_id, value, true, false, true); | |||||
const uint32_t index = argv[0]->i; | |||||
const uint32_t channel = argv[1]->i; | |||||
plugin->setParameterMidiChannel(index, channel, false, true); | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -113,7 +113,9 @@ private: | |||||
int handle_set_volume(CARLA_OSC_HANDLE_ARGS2); | int handle_set_volume(CARLA_OSC_HANDLE_ARGS2); | ||||
int handle_set_balance_left(CARLA_OSC_HANDLE_ARGS2); | int handle_set_balance_left(CARLA_OSC_HANDLE_ARGS2); | ||||
int handle_set_balance_right(CARLA_OSC_HANDLE_ARGS2); | int handle_set_balance_right(CARLA_OSC_HANDLE_ARGS2); | ||||
int handle_set_parameter(CARLA_OSC_HANDLE_ARGS2); | |||||
int handle_set_parameter_value(CARLA_OSC_HANDLE_ARGS2); | |||||
int handle_set_parameter_midi_cc(CARLA_OSC_HANDLE_ARGS2); | |||||
int handle_set_parameter_midi_channel(CARLA_OSC_HANDLE_ARGS2); | |||||
int handle_set_program(CARLA_OSC_HANDLE_ARGS2); | int handle_set_program(CARLA_OSC_HANDLE_ARGS2); | ||||
int handle_set_midi_program(CARLA_OSC_HANDLE_ARGS2); | int handle_set_midi_program(CARLA_OSC_HANDLE_ARGS2); | ||||
int handle_note_on(CARLA_OSC_HANDLE_ARGS2); | int handle_note_on(CARLA_OSC_HANDLE_ARGS2); | ||||
@@ -973,39 +973,43 @@ public: | |||||
} | } | ||||
/*! | /*! | ||||
* Set parameter's \a parameterId MIDI channel to \a channel.\n | |||||
* \a channel must be between 0 and 15. | |||||
* Set parameter's \a parameterId MIDI CC to \a cc.\n | |||||
* \a cc must be between 0 and 15. | |||||
*/ | */ | ||||
void setParameterMidiChannel(uint32_t parameterId, uint8_t channel) | |||||
void setParameterMidiCC(uint32_t parameterId, int16_t cc, bool sendOsc, bool sendCallback) | |||||
{ | { | ||||
assert(parameterId < param.count && channel < 16); | |||||
param.data[parameterId].midiChannel = channel; | |||||
assert(parameterId < param.count); | |||||
param.data[parameterId].midiCC = cc; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
x_engine->osc_send_set_parameter_midi_channel(m_id, parameterId, channel); | |||||
// FIXME: send to engine | |||||
//if (m_hints & PLUGIN_IS_BRIDGE) | |||||
// osc_send_set_parameter_midi_channel(&osc.data, m_id, parameterId, channel); | |||||
if (sendOsc) | |||||
x_engine->osc_send_set_parameter_midi_cc(m_id, parameterId, cc); | |||||
#else | |||||
Q_UNUSED(sendOsc); | |||||
#endif | #endif | ||||
//if (sendCallback) | |||||
//x_engine->callback(CALLBACK_PARAMETER_MIDI_CC_CHANGED, m_id, parameterId, cc, 0.0); | |||||
} | } | ||||
/*! | /*! | ||||
* Set parameter's \a parameterId MIDI CC to \a cc.\n | |||||
* \a cc must be between 0 and 15. | |||||
* Set parameter's \a parameterId MIDI channel to \a channel.\n | |||||
* \a channel must be between 0 and 15. | |||||
*/ | */ | ||||
void setParameterMidiCC(uint32_t parameterId, int16_t cc) | |||||
void setParameterMidiChannel(uint32_t parameterId, uint8_t channel, bool sendOsc, bool sendCallback) | |||||
{ | { | ||||
assert(parameterId < param.count); | |||||
param.data[parameterId].midiCC = cc; | |||||
assert(parameterId < param.count && channel < 16); | |||||
param.data[parameterId].midiChannel = channel; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
x_engine->osc_send_set_parameter_midi_cc(m_id, parameterId, cc); | |||||
// FIXME: send to engine | |||||
//if (m_hints & PLUGIN_IS_BRIDGE) | |||||
// osc_send_set_parameter_midi_cc(&osc.data, m_id, parameterId, midi_cc); | |||||
if (sendOsc) | |||||
x_engine->osc_send_set_parameter_midi_channel(m_id, parameterId, channel); | |||||
#else | |||||
Q_UNUSED(sendOsc); | |||||
#endif | #endif | ||||
//if (sendCallback) | |||||
//x_engine->callback(CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED, m_id, parameterId, channel, 0.0); | |||||
} | } | ||||
/*! | /*! | ||||
@@ -23,9 +23,9 @@ | |||||
#include <stdint.h> | #include <stdint.h> | ||||
#include "lv2/lv2plug.in/ns/ext/urid/urid.h" | |||||
#include "lv2/lv2plug.in/ns/ext/atom/atom.h" | |||||
#include "lv2/lv2plug.in/ns/ext/atom/forge.h" | |||||
#include "lv2/urid.h" | |||||
#include "lv2/atom.h" | |||||
#include "lv2/atom-forge.h" | |||||
#include "serd/serd.h" | #include "serd/serd.h" | ||||
#include "sord/sord.h" | #include "sord/sord.h" | ||||
@@ -773,12 +773,12 @@ class Host(object): | |||||
self.lib.set_parameter_value.argtypes = [c_ushort, c_uint32, c_double] | self.lib.set_parameter_value.argtypes = [c_ushort, c_uint32, c_double] | ||||
self.lib.set_parameter_value.restype = None | self.lib.set_parameter_value.restype = None | ||||
self.lib.set_parameter_midi_channel.argtypes = [c_ushort, c_uint32, c_uint8] | |||||
self.lib.set_parameter_midi_channel.restype = None | |||||
self.lib.set_parameter_midi_cc.argtypes = [c_ushort, c_uint32, c_int16] | self.lib.set_parameter_midi_cc.argtypes = [c_ushort, c_uint32, c_int16] | ||||
self.lib.set_parameter_midi_cc.restype = None | self.lib.set_parameter_midi_cc.restype = None | ||||
self.lib.set_parameter_midi_channel.argtypes = [c_ushort, c_uint32, c_uint8] | |||||
self.lib.set_parameter_midi_channel.restype = None | |||||
self.lib.set_program.argtypes = [c_ushort, c_uint32] | self.lib.set_program.argtypes = [c_ushort, c_uint32] | ||||
self.lib.set_program.restype = None | self.lib.set_program.restype = None | ||||
@@ -941,12 +941,12 @@ class Host(object): | |||||
def set_parameter_value(self, plugin_id, parameter_id, value): | def set_parameter_value(self, plugin_id, parameter_id, value): | ||||
self.lib.set_parameter_value(plugin_id, parameter_id, value) | self.lib.set_parameter_value(plugin_id, parameter_id, value) | ||||
def set_parameter_midi_channel(self, plugin_id, parameter_id, channel): | |||||
self.lib.set_parameter_midi_channel(plugin_id, parameter_id, channel) | |||||
def set_parameter_midi_cc(self, plugin_id, parameter_id, midi_cc): | def set_parameter_midi_cc(self, plugin_id, parameter_id, midi_cc): | ||||
self.lib.set_parameter_midi_cc(plugin_id, parameter_id, midi_cc) | self.lib.set_parameter_midi_cc(plugin_id, parameter_id, midi_cc) | ||||
def set_parameter_midi_channel(self, plugin_id, parameter_id, channel): | |||||
self.lib.set_parameter_midi_channel(plugin_id, parameter_id, channel) | |||||
def set_program(self, plugin_id, program_id): | def set_program(self, plugin_id, program_id): | ||||
self.lib.set_program(plugin_id, program_id) | self.lib.set_program(plugin_id, program_id) | ||||
@@ -27,7 +27,7 @@ from shared_carla import * | |||||
global carla_name, lo_target | global carla_name, lo_target | ||||
carla_name = "" | carla_name = "" | ||||
lo_target = None | |||||
lo_target = None | |||||
Carla.isControl = True | Carla.isControl = True | ||||
@@ -53,27 +53,23 @@ class ControlServer(ServerThread): | |||||
@make_method('/carla-control/set_plugin_data', 'iiiissssh') | @make_method('/carla-control/set_plugin_data', 'iiiissssh') | ||||
def set_plugin_data_callback(self, path, args): | def set_plugin_data_callback(self, path, args): | ||||
pluginId, ptype, category, hints, realName, label, maker, copyright, uniqueId = args | |||||
self.parent.emit(SIGNAL("SetPluginData(int, int, int, int, QString, QString, QString, QString, long)"), | |||||
pluginId, ptype, category, hints, realName, label, maker, copyright, uniqueId) | |||||
pluginId, ptype, category, hints, realName, label, maker, copyright_, uniqueId = args | |||||
self.parent.emit(SIGNAL("SetPluginData(int, int, int, int, QString, QString, QString, QString, long)"), pluginId, ptype, category, hints, realName, label, maker, copyright_, uniqueId) | |||||
@make_method('/carla-control/set_plugin_ports', 'iiiiiiii') | @make_method('/carla-control/set_plugin_ports', 'iiiiiiii') | ||||
def set_plugin_ports_callback(self, path, args): | def set_plugin_ports_callback(self, path, args): | ||||
pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals = args | pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals = args | ||||
self.parent.emit(SIGNAL("SetPluginPorts(int, int, int, int, int, int, int, int)"), | |||||
pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals) | |||||
self.parent.emit(SIGNAL("SetPluginPorts(int, int, int, int, int, int, int, int)"), pluginId, audioIns, audioOuts, midiIns, midiOuts, cIns, cOuts, cTotals) | |||||
@make_method('/carla-control/set_parameter_data', 'iiiissd') | @make_method('/carla-control/set_parameter_data', 'iiiissd') | ||||
def set_parameter_data_callback(self, path, args): | def set_parameter_data_callback(self, path, args): | ||||
pluginId, index, type, hints, name, label, current = args | |||||
self.parent.emit(SIGNAL("SetParameterData(int, int, int, int, QString, QString, double)"), | |||||
pluginId, index, type, hints, name, label, current) | |||||
pluginId, index, type_, hints, name, label, current = args | |||||
self.parent.emit(SIGNAL("SetParameterData(int, int, int, int, QString, QString, double)"), pluginId, index, type_, hints, name, label, current) | |||||
@make_method('/carla-control/set_parameter_ranges', 'iidddddd') | @make_method('/carla-control/set_parameter_ranges', 'iidddddd') | ||||
def set_parameter_ranges_callback(self, path, args): | def set_parameter_ranges_callback(self, path, args): | ||||
pluginId, index, min, max, def, step, stepSmall, stepLarge = args | |||||
self.parent.emit(SIGNAL("SetParameterRanges(int, int, double, double, double, double, double, double, double)"), | |||||
pluginId, index, min, max, def, step, stepSmall, stepLarge) | |||||
pluginId, index, min_, max_, def_, step, stepSmall, stepLarge = args | |||||
self.parent.emit(SIGNAL("SetParameterRanges(int, int, double, double, double, double, double, double, double)"), pluginId, index, min_, max_, def_, step, stepSmall, stepLarge) | |||||
@make_method('/carla-control/set_parameter_midi_cc', 'iii') | @make_method('/carla-control/set_parameter_midi_cc', 'iii') | ||||
def set_parameter_midi_cc_callback(self, path, args): | def set_parameter_midi_cc_callback(self, path, args): | ||||
@@ -105,11 +101,6 @@ class ControlServer(ServerThread): | |||||
pluginId, count = args | pluginId, count = args | ||||
self.parent.emit(SIGNAL("SetProgramCount(int, int)"), pluginId, count) | self.parent.emit(SIGNAL("SetProgramCount(int, int)"), pluginId, count) | ||||
#void osc_send_set_program_name(int plugin_id, int program_id, const char* program_name); | |||||
#void osc_send_set_midi_program(int plugin_id, int midi_program_id); | |||||
#void osc_send_set_midi_program_count(int plugin_id, int midi_program_count); | |||||
#void osc_send_set_midi_program_data(int plugin_id, int midi_program_id, int bank_id, int program_id, const char* midi_program_name); | |||||
@make_method('/carla-control/set_program_name', 'iis') | @make_method('/carla-control/set_program_name', 'iis') | ||||
def set_program_name_callback(self, path, args): | def set_program_name_callback(self, path, args): | ||||
pluginId, index, name = args | pluginId, index, name = args | ||||
@@ -126,99 +117,101 @@ class ControlServer(ServerThread): | |||||
self.parent.emit(SIGNAL("SetMidiProgram(int, int)"), pluginId, count) | self.parent.emit(SIGNAL("SetMidiProgram(int, int)"), pluginId, count) | ||||
@make_method('/carla-control/set_midi_program_data', 'iiiiis') | @make_method('/carla-control/set_midi_program_data', 'iiiiis') | ||||
def set_program_name_callback(self, path, args): | |||||
def set_midi_program_data_callback(self, path, args): | |||||
pluginId, index, bank, program, name = args | pluginId, index, bank, program, name = args | ||||
self.parent.emit(SIGNAL("SetMidiProgramName(int, int, int, int, int, QString)"), pluginId, index, bank, program, name) | self.parent.emit(SIGNAL("SetMidiProgramName(int, int, int, int, int, QString)"), pluginId, index, bank, program, name) | ||||
@make_method('/carla-control/set_input_peak_value', 'iif') | |||||
@make_method('/carla-control/set_input_peak_value', 'iid') | |||||
def set_input_peak_value_callback(self, path, args): | def set_input_peak_value_callback(self, path, args): | ||||
plugin_id, port_id, value = args | |||||
self.parent.emit(SIGNAL("SetInputPeakValue(int, int, double)"), plugin_id, port_id, value) | |||||
pluginId, portId, value = args | |||||
self.parent.emit(SIGNAL("SetInputPeakValue(int, int, double)"), pluginId, portId, value) | |||||
@make_method('/carla-control/set_output_peak_value', 'iif') | |||||
@make_method('/carla-control/set_output_peak_value', 'iid') | |||||
def set_output_peak_value_callback(self, path, args): | def set_output_peak_value_callback(self, path, args): | ||||
plugin_id, port_id, value = args | |||||
self.parent.emit(SIGNAL("SetOutputPeakValue(int, int, double)"), plugin_id, port_id, value) | |||||
pluginId, portId, value = args | |||||
self.parent.emit(SIGNAL("SetOutputPeakValue(int, int, double)"), pluginId, portId, value) | |||||
@make_method('/carla-control/note_on', 'iii') | |||||
@make_method('/carla-control/note_on', 'iiii') | |||||
def note_on_callback(self, path, args): | def note_on_callback(self, path, args): | ||||
plugin_id, note, velo = args | |||||
self.parent.emit(SIGNAL("NoteOn(int, int, int)"), plugin_id, note, velo) | |||||
pluginId, channel, note, velo = args | |||||
self.parent.emit(SIGNAL("NoteOn(int, int, int, int)"), pluginId, channel, note, velo) | |||||
@make_method('/carla-control/note_off', 'iii') | @make_method('/carla-control/note_off', 'iii') | ||||
def note_off_callback(self, path, args): | def note_off_callback(self, path, args): | ||||
plugin_id, note, velo = args | |||||
self.parent.emit(SIGNAL("NoteOff(int, int, int)"), plugin_id, note, velo) | |||||
pluginId, channel, note = args | |||||
self.parent.emit(SIGNAL("NoteOff(int, int, int)"), pluginId, channel, note) | |||||
@make_method('/carla-control/exit', '') | @make_method('/carla-control/exit', '') | ||||
def exit_callback(self, path, args): | def exit_callback(self, path, args): | ||||
self.parent.emit(SIGNAL("Exit()")) | self.parent.emit(SIGNAL("Exit()")) | ||||
#void osc_send_set_input_peak_value(int plugin_id, int port_id, double value); | |||||
#void osc_send_set_output_peak_value(int plugin_id, int port_id, double value); | |||||
#void osc_send_note_on(int plugin_id, int channel, int note, int velo); | |||||
#void osc_send_note_off(int plugin_id, int channel, int note); | |||||
#void osc_send_exit(); | |||||
@make_method(None, None) | @make_method(None, None) | ||||
def fallback(self, path, args): | def fallback(self, path, args): | ||||
pass | |||||
#print "received unknown message '%s'" % path, ":", len(args), ":", args | |||||
print("ControlServer::fallback(\"%s\") - unknown message, args =" % path, args) | |||||
# Python Object class compatible to 'Host' on the Carla Backend code | # Python Object class compatible to 'Host' on the Carla Backend code | ||||
class Host(object): | class Host(object): | ||||
def __init__(self): | def __init__(self): | ||||
super(Host, self).__init__() | super(Host, self).__init__() | ||||
def set_active(self, plugin_id, active): | |||||
def set_active(self, plugin_id, onoff): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_active" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, 1 if (active) else 0) | |||||
lo_path = "/%s/%i/set_active" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, 1 if onoff else 0) | |||||
def set_drywet(self, plugin_id, value): | def set_drywet(self, plugin_id, value): | ||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_drywet" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, value) | |||||
lo_path = "/%s/%i/set_drywet" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, value) | |||||
def set_vol(self, plugin_id, value): | |||||
def set_volume(self, plugin_id, value): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_vol" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, value) | |||||
lo_path = "/%s/%i/set_volume" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, value) | |||||
def set_balance_left(self, plugin_id, value): | def set_balance_left(self, plugin_id, value): | ||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_balance_left" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, value) | |||||
lo_path = "/%s/%i/set_balance_left" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, value) | |||||
def set_balance_right(self, plugin_id, value): | def set_balance_right(self, plugin_id, value): | ||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_balance_right" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, value) | |||||
lo_path = "/%s/%i/set_balance_right" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, value) | |||||
def set_parameter_value(self, plugin_id, param_id, value): | |||||
def set_parameter_value(self, plugin_id, parameter_id, value): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_parameter" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, param_id, value) | |||||
lo_path = "/%s/%i/set_parameter_value" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, parameter_id, value) | |||||
def set_program(self, plugin_id, program_id): | |||||
def set_parameter_midi_cc(self, plugin_id, parameter_id, midi_cc): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_program" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, program_id) | |||||
lo_path = "/%s/%i/set_parameter_midi_cc" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, parameter_id, midi_cc) | |||||
def set_midi_program(self, plugin_id, midi_program_id): | |||||
def set_parameter_midi_channel(self, plugin_id, parameter_id, channel): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/set_midi_program" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, midi_program_id) | |||||
lo_path = "/%s/%i/set_parameter_midi_channel" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, parameter_id, channel) | |||||
def note_on(self, plugin_id, note, velo): | |||||
def set_program(self, plugin_id, program_id): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/note_on" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, note, velo) | |||||
lo_path = "/%s/%i/set_program" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, program_id) | |||||
def note_off(self, plugin_id, param_id, value): | |||||
def set_midi_program(self, plugin_id, midi_program_id): | |||||
global carla_name, to_target | global carla_name, to_target | ||||
osc_control = "/%s/%i/note_off" % (carla_name, plugin_id) | |||||
lo_send(lo_target, osc_control, note, velo) | |||||
lo_path = "/%s/%i/set_midi_program" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, midi_program_id) | |||||
def send_midi_note(self, plugin_id, channel, note, velocity): | |||||
global carla_name, to_target | |||||
if velocity: | |||||
lo_path = "/%s/%i/note_on" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, channel, note, velocity) | |||||
else: | |||||
lo_path = "/%s/%i/note_off" % (carla_name, plugin_id) | |||||
lo_send(lo_target, lo_path, channel, note) | |||||
# About Carla Dialog | # About Carla Dialog | ||||
class AboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | class AboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | ||||
@@ -242,30 +235,30 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): | |||||
super(CarlaControlW, self).__init__(parent) | super(CarlaControlW, self).__init__(parent) | ||||
self.setupUi(self) | self.setupUi(self) | ||||
#self.settings = QSettings("Cadence", "Carla-Control") | |||||
#self.loadSettings() | |||||
self.settings = QSettings("Cadence", "Carla-Control") | |||||
self.loadSettings() | |||||
#self.lo_address = "" | |||||
#self.lo_server = None | |||||
#self.setStyleSheet(""" | |||||
#QWidget#centralwidget { | |||||
#background-color: qlineargradient(spread:pad, | |||||
#x1:0.0, y1:0.0, | |||||
#x2:0.2, y2:1.0, | |||||
#stop:0 rgb( 7, 7, 7), | |||||
#stop:1 rgb(28, 28, 28) | |||||
#); | |||||
#} | |||||
#""") | |||||
#self.plugin_list = [] | |||||
#for x in range(MAX_PLUGINS): | |||||
#self.plugin_list.append(None) | |||||
self.lo_address = "" | |||||
self.lo_server = None | |||||
#self.act_file_refresh.setEnabled(False) | |||||
self.setStyleSheet(""" | |||||
QWidget#centralwidget { | |||||
background-color: qlineargradient(spread:pad, | |||||
x1:0.0, y1:0.0, | |||||
x2:0.2, y2:1.0, | |||||
stop:0 rgb( 7, 7, 7), | |||||
stop:1 rgb(28, 28, 28) | |||||
); | |||||
} | |||||
""") | |||||
self.plugin_list = [] | |||||
for x in range(MAX_PLUGINS): | |||||
self.plugin_list.append(None) | |||||
self.act_file_refresh.setEnabled(False) | |||||
#self.resize(self.width(), 0) | |||||
self.resize(self.width(), 0) | |||||
#self.connect(self.act_file_connect, SIGNAL("triggered()"), self.do_connect) | #self.connect(self.act_file_connect, SIGNAL("triggered()"), self.do_connect) | ||||
#self.connect(self.act_file_refresh, SIGNAL("triggered()"), self.do_refresh) | #self.connect(self.act_file_refresh, SIGNAL("triggered()"), self.do_refresh) | ||||
@@ -457,17 +450,17 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): | |||||
#AboutW(self).exec_() | #AboutW(self).exec_() | ||||
def saveSettings(self): | def saveSettings(self): | ||||
self.settings.setValue("Geometry", QVariant(self.saveGeometry())) | |||||
self.settings.setValue("Geometry", self.saveGeometry()) | |||||
def loadSettings(self): | def loadSettings(self): | ||||
self.restoreGeometry(self.settings.value("Geometry").toByteArray()) | |||||
self.restoreGeometry(self.settings.value("Geometry", "")) | |||||
def closeEvent(self, event): | def closeEvent(self, event): | ||||
self.saveSettings() | self.saveSettings() | ||||
#global lo_target | |||||
#if (lo_target and self.lo_server): | |||||
#lo_send(lo_target, "unregister") | |||||
global lo_target | |||||
if lo_target and self.lo_server: | |||||
lo_send(lo_target, "unregister") | |||||
QMainWindow.closeEvent(self, event) | QMainWindow.closeEvent(self, event) | ||||