diff --git a/Makefile b/Makefile index 9a4524e..33768ce 100644 --- a/Makefile +++ b/Makefile @@ -195,7 +195,7 @@ clean: $(MAKE) clean -C c++/carla-bridge $(MAKE) clean -C c++/carla-discovery $(MAKE) clean -C c++/carla-lilv - rm -f *~ src/*~ src/*.pyc src/*.dll src/*.so src/ui_*.py src/icons_rc.py + rm -f *~ src/*~ src/*.pyc src/ui_*.py src/icons_rc.py install: diff --git a/c++/carla-backend/carla_backend.h b/c++/carla-backend/carla_backend.h index 2f170ae..364b195 100644 --- a/c++/carla-backend/carla_backend.h +++ b/c++/carla-backend/carla_backend.h @@ -397,15 +397,17 @@ enum CallbackType { /*! * A note has been pressed. * - * \param value1 The note - * \param value2 Velocity of the note + * \param value1 Channel + * \param value2 Note + * \param value3 Velocity */ CALLBACK_NOTE_ON = 4, /*! * A note has been released. * - * \param value1 The note + * \param value1 Channel + * \param value2 Note */ CALLBACK_NOTE_OFF = 5, diff --git a/c++/carla-backend/carla_backend_standalone.cpp b/c++/carla-backend/carla_backend_standalone.cpp index c1d898e..6710fc4 100644 --- a/c++/carla-backend/carla_backend_standalone.cpp +++ b/c++/carla-backend/carla_backend_standalone.cpp @@ -19,8 +19,8 @@ #include "carla_plugin.h" // Single, standalone engine -static CarlaBackend::CarlaEngine* carla_engine = nullptr; -static CarlaBackend::CallbackFunc carla_func = nullptr; +static CarlaBackend::CarlaEngine* carlaEngine = nullptr; +static CarlaBackend::CallbackFunc carlaFunc = nullptr; // ------------------------------------------------------------------------------------------------------------------- @@ -94,45 +94,47 @@ bool engine_init(const char* driver_name, const char* client_name) #ifdef CARLA_ENGINE_JACK if (strcmp(driver_name, "JACK") == 0) - carla_engine = new CarlaBackend::CarlaEngineJack; + carlaEngine = new CarlaBackend::CarlaEngineJack; +#else + if (false) + pass(); #endif #ifdef CARLA_ENGINE_RTAUDIO #ifdef __LINUX_ALSA__ - if (strcmp(driver_name, "ALSA") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_ALSA); + else if (strcmp(driver_name, "ALSA") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_ALSA); #endif #ifdef __LINUX_PULSE__ - if (strcmp(driver_name, "PulseAudio") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_PULSE); + else if (strcmp(driver_name, "PulseAudio") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_PULSE); #endif #ifdef __LINUX_OSS__ - if (strcmp(driver_name, "OSS") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_OSS); + else if (strcmp(driver_name, "OSS") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::LINUX_OSS); #endif #ifdef __UNIX_JACK__ - if (strcmp(driver_name, "JACK (RtAudio)") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::UNIX_JACK); + else if (strcmp(driver_name, "JACK (RtAudio)") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::UNIX_JACK); #endif #ifdef __MACOSX_CORE__ - if (strcmp(driver_name, "CoreAudio") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::MACOSX_CORE); + else if (strcmp(driver_name, "CoreAudio") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::MACOSX_CORE); #endif #ifdef __WINDOWS_ASIO__ - if (strcmp(driver_name, "ASIO") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::WINDOWS_ASIO); + else if (strcmp(driver_name, "ASIO") == 0) + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::WINDOWS_ASIO); #endif #ifdef __WINDOWS_DS__ else if (strcmp(driver_name, "DirectSound") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::WINDOWS_DS); + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::WINDOWS_DS); #endif #ifdef __RTAUDIO_DUMMY__ else if (strcmp(driver_name, "Dummy") == 0) - carla_engine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::RTAUDIO_DUMMY); + carlaEngine = new CarlaBackend::CarlaEngineRtAudio(RtAudio::RTAUDIO_DUMMY); #endif #endif - - if (! carla_engine) + else { CarlaBackend::setLastError("The seleted audio driver is not available!"); return false; @@ -147,9 +149,9 @@ bool engine_init(const char* driver_name, const char* client_name) } #endif - carla_engine->setCallback(carla_func); + carlaEngine->setCallback(carlaFunc); - bool started = carla_engine->init(client_name); + bool started = carlaEngine->init(client_name); if (started) CarlaBackend::setLastError("no error"); @@ -161,14 +163,14 @@ bool engine_close() { qDebug("CarlaBackendStandalone::engine_close()"); - if (! carla_engine) + if (! carlaEngine) { CarlaBackend::setLastError("Engine is not started"); return false; } - bool closed = carla_engine->close(); - carla_engine->removeAllPlugins(); + bool closed = carlaEngine->close(); + carlaEngine->removeAllPlugins(); // cleanup static data get_plugin_info(0); @@ -183,8 +185,8 @@ bool engine_close() CarlaBackend::resetOptions(); CarlaBackend::setLastError(nullptr); - delete carla_engine; - carla_engine = nullptr; + delete carlaEngine; + carlaEngine = nullptr; return closed; } @@ -193,7 +195,7 @@ bool is_engine_running() { qDebug("CarlaBackendStandalone::is_engine_running()"); - return carla_engine && carla_engine->isRunning(); + return carlaEngine && carlaEngine->isRunning(); } // ------------------------------------------------------------------------------------------------------------------- @@ -202,14 +204,14 @@ short add_plugin(CarlaBackend::BinaryType btype, CarlaBackend::PluginType ptype, { qDebug("CarlaBackendStandalone::add_plugin(%s, %s, \"%s\", \"%s\", \"%s\", %p)", CarlaBackend::BinaryType2str(btype), CarlaBackend::PluginType2str(ptype), filename, name, label, extra_stuff); - return carla_engine->addPlugin(btype, ptype, filename, name, label, extra_stuff); + return carlaEngine->addPlugin(btype, ptype, filename, name, label, extra_stuff); } bool remove_plugin(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::remove_plugin(%i)", plugin_id); - return carla_engine->removePlugin(plugin_id); + return carlaEngine->removePlugin(plugin_id); } // ------------------------------------------------------------------------------------------------------------------- @@ -238,7 +240,7 @@ const PluginInfo* get_plugin_info(unsigned short plugin_id) info.copyright = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -263,7 +265,7 @@ const PluginInfo* get_plugin_info(unsigned short plugin_id) return &info; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_plugin_info(%i) - could not find plugin", plugin_id); return &info; @@ -275,7 +277,7 @@ const PortCountInfo* get_audio_port_count_info(unsigned short plugin_id) static PortCountInfo info; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -295,7 +297,7 @@ const PortCountInfo* get_midi_port_count_info(unsigned short plugin_id) static PortCountInfo info; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -315,7 +317,7 @@ const PortCountInfo* get_parameter_count_info(unsigned short plugin_id) static PortCountInfo info; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -351,7 +353,7 @@ const ParameterInfo* get_parameter_info(unsigned short plugin_id, quint32 parame info.unit = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -376,7 +378,7 @@ const ParameterInfo* get_parameter_info(unsigned short plugin_id, quint32 parame return &info; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_parameter_info(%i, %i) - could not find plugin", plugin_id, parameter_id); return &info; @@ -394,7 +396,7 @@ const ScalePointInfo* get_parameter_scalepoint_info(unsigned short plugin_id, qu info.label = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -418,7 +420,7 @@ const ScalePointInfo* get_parameter_scalepoint_info(unsigned short plugin_id, qu return &info; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_parameter_scalepoint_info(%i, %i, %i) - could not find plugin", plugin_id, parameter_id, scalepoint_id); return &info; @@ -430,7 +432,7 @@ const GuiInfo* get_gui_info(unsigned short plugin_id) static GuiInfo info; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -450,7 +452,7 @@ const CarlaBackend::ParameterData* get_parameter_data(unsigned short plugin_id, static CarlaBackend::ParameterData data; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -471,7 +473,7 @@ const CarlaBackend::ParameterRanges* get_parameter_ranges(unsigned short plugin_ static CarlaBackend::ParameterRanges ranges; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -492,7 +494,7 @@ const CarlaBackend::midi_program_t* get_midi_program_data(unsigned short plugin_ static CarlaBackend::midi_program_t data; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -513,7 +515,7 @@ const CarlaBackend::CustomData* get_custom_data(unsigned short plugin_id, quint3 static CarlaBackend::CustomData data; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -540,7 +542,7 @@ const char* get_chunk_data(unsigned short plugin_id) chunk_data = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -563,7 +565,7 @@ const char* get_chunk_data(unsigned short plugin_id) return chunk_data; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_chunk_data(%i) - could not find plugin", plugin_id); return nullptr; @@ -575,7 +577,7 @@ uint32_t get_parameter_count(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_parameter_count(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->parameterCount(); @@ -588,7 +590,7 @@ uint32_t get_program_count(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_program_count(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->programCount(); @@ -601,7 +603,7 @@ uint32_t get_midi_program_count(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_midi_program_count(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->midiProgramCount(); @@ -614,7 +616,7 @@ uint32_t get_custom_data_count(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_custom_data_count(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->customDataCount(); @@ -632,7 +634,7 @@ const char* get_parameter_text(unsigned short plugin_id, quint32 parameter_id) static char buf_text[STR_MAX] = { 0 }; memset(buf_text, 0, sizeof(char)*STR_MAX); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -646,7 +648,7 @@ const char* get_parameter_text(unsigned short plugin_id, quint32 parameter_id) return nullptr; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_parameter_text(%i, %i) - could not find plugin", plugin_id, parameter_id); return nullptr; @@ -664,7 +666,7 @@ const char* get_program_name(unsigned short plugin_id, quint32 program_id) program_name = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -682,7 +684,7 @@ const char* get_program_name(unsigned short plugin_id, quint32 program_id) return nullptr; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_program_name(%i, %i) - could not find plugin", plugin_id, program_id); return nullptr; @@ -699,7 +701,7 @@ const char* get_midi_program_name(unsigned short plugin_id, quint32 midi_program midi_program_name = nullptr; - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -717,7 +719,7 @@ const char* get_midi_program_name(unsigned short plugin_id, quint32 midi_program return nullptr; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_midi_program_name(%i, %i) - could not find plugin", plugin_id, midi_program_id); return nullptr; @@ -735,7 +737,7 @@ const char* get_real_plugin_name(unsigned short plugin_id) real_plugin_name = nullptr; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -747,7 +749,7 @@ const char* get_real_plugin_name(unsigned short plugin_id) return real_plugin_name; } - if (carla_engine->isRunning()) + if (carlaEngine->isRunning()) qCritical("CarlaBackendStandalone::get_real_plugin_name(%i) - could not find plugin", plugin_id); return real_plugin_name; @@ -759,7 +761,7 @@ qint32 get_current_program_index(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_current_program_index(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->currentProgram(); @@ -772,7 +774,7 @@ qint32 get_current_midi_program_index(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::get_current_midi_program_index(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->currentMidiProgram(); @@ -787,7 +789,7 @@ double get_default_parameter_value(unsigned short plugin_id, quint32 parameter_i { qDebug("CarlaBackendStandalone::get_default_parameter_value(%i, %i)", plugin_id, parameter_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -806,7 +808,7 @@ double get_current_parameter_value(unsigned short plugin_id, quint32 parameter_i { qDebug("CarlaBackendStandalone::get_current_parameter_value(%i, %i)", plugin_id, parameter_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -826,7 +828,7 @@ double get_current_parameter_value(unsigned short plugin_id, quint32 parameter_i double get_input_peak_value(unsigned short plugin_id, unsigned short port_id) { if (plugin_id < CarlaBackend::MAX_PLUGINS && (port_id == 1 || port_id == 2)) - return carla_engine->getInputPeak(plugin_id, port_id-1); + return carlaEngine->getInputPeak(plugin_id, port_id-1); qCritical("CarlaBackendStandalone::get_input_peak_value(%i, %i) - invalid plugin or port value", plugin_id, port_id); return 0.0; @@ -835,7 +837,7 @@ double get_input_peak_value(unsigned short plugin_id, unsigned short port_id) double get_output_peak_value(unsigned short plugin_id, unsigned short port_id) { if (plugin_id < CarlaBackend::MAX_PLUGINS && (port_id == 1 || port_id == 2)) - return carla_engine->getOutputPeak(plugin_id, port_id-1); + return carlaEngine->getOutputPeak(plugin_id, port_id-1); qCritical("CarlaBackendStandalone::get_output_peak_value(%i, %i) - invalid plugin or port value", plugin_id, port_id); return 0.0; @@ -847,7 +849,7 @@ void set_active(unsigned short plugin_id, bool onoff) { qDebug("CarlaBackendStandalone::set_active(%i, %s)", plugin_id, bool2str(onoff)); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setActive(onoff, true, false); @@ -859,7 +861,7 @@ void set_drywet(unsigned short plugin_id, double value) { qDebug("CarlaBackendStandalone::set_drywet(%i, %g)", plugin_id, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setDryWet(value, true, false); @@ -871,7 +873,7 @@ void set_volume(unsigned short plugin_id, double value) { qDebug("CarlaBackendStandalone::set_volume(%i, %g)", plugin_id, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setVolume(value, true, false); @@ -883,7 +885,7 @@ void set_balance_left(unsigned short plugin_id, double value) { qDebug("CarlaBackendStandalone::set_balance_left(%i, %g)", plugin_id, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setBalanceLeft(value, true, false); @@ -895,7 +897,7 @@ void set_balance_right(unsigned short plugin_id, double value) { qDebug("CarlaBackendStandalone::set_balance_right(%i, %g)", plugin_id, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setBalanceRight(value, true, false); @@ -909,7 +911,7 @@ void set_parameter_value(unsigned short plugin_id, quint32 parameter_id, double { qDebug("CarlaBackendStandalone::set_parameter_value(%i, %i, %g)", plugin_id, parameter_id, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -933,7 +935,7 @@ void set_parameter_midi_channel(unsigned short plugin_id, quint32 parameter_id, return; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -961,7 +963,7 @@ void set_parameter_midi_cc(unsigned short plugin_id, quint32 parameter_id, int16 return; } - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -979,7 +981,7 @@ void set_program(unsigned short plugin_id, quint32 program_id) { qDebug("CarlaBackendStandalone::set_program(%i, %i)", plugin_id, program_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -997,7 +999,7 @@ void set_midi_program(unsigned short plugin_id, quint32 midi_program_id) { qDebug("CarlaBackendStandalone::set_midi_program(%i, %i)", plugin_id, midi_program_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -1017,7 +1019,7 @@ void set_custom_data(unsigned short plugin_id, CarlaBackend::CustomDataType type { qDebug("CarlaBackendStandalone::set_custom_data(%i, %i, \"%s\", \"%s\")", plugin_id, type, key, value); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->setCustomData(type, key, value, true); @@ -1029,7 +1031,7 @@ void set_chunk_data(unsigned short plugin_id, const char* chunk_data) { qDebug("CarlaBackendStandalone::set_chunk_data(%i, \"%s\")", plugin_id, chunk_data); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -1047,7 +1049,7 @@ void set_gui_data(unsigned short plugin_id, int data, quintptr gui_addr) { qDebug("CarlaBackendStandalone::set_gui_data(%i, %i, " P_UINTPTR ")", plugin_id, data, gui_addr); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) { @@ -1068,7 +1070,7 @@ void show_gui(unsigned short plugin_id, bool yesno) { qDebug("CarlaBackendStandalone::show_gui(%i, %s)", plugin_id, bool2str(yesno)); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->showGui(yesno); @@ -1078,7 +1080,7 @@ void show_gui(unsigned short plugin_id, bool yesno) void idle_guis() { - carla_engine->idlePluginGuis(); + carlaEngine->idlePluginGuis(); } // ------------------------------------------------------------------------------------------------------------------- @@ -1087,7 +1089,7 @@ void send_midi_note(unsigned short plugin_id, quint8 channel, quint8 note, quint { qDebug("CarlaBackendStandalone::send_midi_note(%i, %i, %i, %i)", plugin_id, channel, note, velocity); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->sendMidiSingleNote(channel, note, velocity, true, true, false); @@ -1099,7 +1101,7 @@ void prepare_for_save(unsigned short plugin_id) { qDebug("CarlaBackendStandalone::prepare_for_save(%i)", plugin_id); - CarlaBackend::CarlaPlugin* const plugin = carla_engine->getPlugin(plugin_id); + CarlaBackend::CarlaPlugin* const plugin = carlaEngine->getPlugin(plugin_id); if (plugin) return plugin->prepareForSave(); @@ -1113,14 +1115,14 @@ quint32 get_buffer_size() { qDebug("CarlaBackendStandalone::get_buffer_size()"); - return carla_engine->getBufferSize(); + return carlaEngine->getBufferSize(); } double get_sample_rate() { qDebug("CarlaBackendStandalone::get_sample_rate()"); - return carla_engine->getSampleRate(); + return carlaEngine->getSampleRate(); } // ------------------------------------------------------------------------------------------------------------------- @@ -1134,7 +1136,7 @@ const char* get_host_osc_url() { qDebug("CarlaBackendStandalone::get_host_osc_url()"); - return carla_engine->getOscServerPath(); + return carlaEngine->getOscServerPath(); } // ------------------------------------------------------------------------------------------------------------------- @@ -1143,10 +1145,10 @@ void set_callback_function(CarlaBackend::CallbackFunc func) { qDebug("CarlaBackendStandalone::set_callback_function(%p)", func); - carla_func = func; + carlaFunc = func; - if (carla_engine) - carla_engine->setCallback(func); + if (carlaEngine) + carlaEngine->setCallback(func); } void set_option(CarlaBackend::OptionsType option, int value, const char* valueStr) diff --git a/c++/carla-backend/carla_engine.cpp b/c++/carla-backend/carla_engine.cpp index f935fba..7f714a4 100644 --- a/c++/carla-backend/carla_engine.cpp +++ b/c++/carla-backend/carla_engine.cpp @@ -1094,9 +1094,9 @@ void CarlaEngine::osc_send_set_midi_program_data(int plugin_id, int midi_program } } -void CarlaEngine::osc_send_note_on(int plugin_id, int note, int velo) +void CarlaEngine::osc_send_note_on(int plugin_id, int channel, int note, int velo) { - qDebug("CarlaEngine::osc_send_note_on(%i, %i, %i)", plugin_id, note, velo); + qDebug("CarlaEngine::osc_send_note_on(%i, %i, %i, %i)", plugin_id, channel, note, velo); const CarlaOscData* const oscData = m_osc.getControllerData(); if (oscData->target) @@ -1104,13 +1104,13 @@ void CarlaEngine::osc_send_note_on(int plugin_id, int note, int velo) char target_path[strlen(oscData->path)+9]; strcpy(target_path, oscData->path); strcat(target_path, "/note_on"); - lo_send(oscData->target, target_path, "iii", plugin_id, note, velo); + lo_send(oscData->target, target_path, "iiii", plugin_id, channel, note, velo); } } -void CarlaEngine::osc_send_note_off(int plugin_id, int note) +void CarlaEngine::osc_send_note_off(int plugin_id, int channel, int note) { - qDebug("CarlaEngine::osc_send_note_off(%i, %i)", plugin_id, note); + qDebug("CarlaEngine::osc_send_note_off(%i, %i, %i)", plugin_id, channel, note); const CarlaOscData* const oscData = m_osc.getControllerData(); if (oscData->target) @@ -1118,7 +1118,7 @@ void CarlaEngine::osc_send_note_off(int plugin_id, int note) char target_path[strlen(oscData->path)+10]; strcpy(target_path, oscData->path); strcat(target_path, "/note_off"); - lo_send(oscData->target, target_path, "ii", plugin_id, note); + lo_send(oscData->target, target_path, "iii", plugin_id, channel, note); } } diff --git a/c++/carla-backend/carla_engine.h b/c++/carla-backend/carla_engine.h index 94ce40e..9f01581 100644 --- a/c++/carla-backend/carla_engine.h +++ b/c++/carla-backend/carla_engine.h @@ -140,8 +140,6 @@ struct CarlaEnginePortNativeHandle { class CarlaEngineClient; class CarlaEngineBasePort; -Q_COMPILER_INITIALIZER_LISTS - /*! * \class CarlaEngine * @@ -333,8 +331,8 @@ public: 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); 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 note, int velo); - void osc_send_note_off(int plugin_id, int note); + 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(); #ifndef BUILD_BRIDGE diff --git a/c++/carla-backend/carla_plugin.h b/c++/carla-backend/carla_plugin.h index ae77808..26b2393 100644 --- a/c++/carla-backend/carla_plugin.h +++ b/c++/carla-backend/carla_plugin.h @@ -93,11 +93,11 @@ enum PluginBridgeInfoType { enum PluginPostEventType { PluginPostEventNull, PluginPostEventDebug, - PluginPostEventParameterChange, - PluginPostEventProgramChange, - PluginPostEventMidiProgramChange, - PluginPostEventNoteOn, - PluginPostEventNoteOff + PluginPostEventParameterChange, // param, N, value + PluginPostEventProgramChange, // index + PluginPostEventMidiProgramChange, // index + PluginPostEventNoteOn, // channel, note, velo + PluginPostEventNoteOff // channel, note }; struct PluginAudioData { @@ -159,13 +159,15 @@ struct PluginMidiProgramData { struct PluginPostEvent { PluginPostEventType type; - int32_t index; - double value; + int32_t value1; + int32_t value2; + double value3; PluginPostEvent() : type(PluginPostEventNull), - index(-1), - value(0.0) {} + value1(-1), + value2(-1), + value3(0.0) {} }; struct ExternalMidiNote { @@ -1582,18 +1584,17 @@ public: if (sendOsc) { if (velo) - x_engine->osc_send_note_on(m_id, note, velo); + x_engine->osc_send_note_on(m_id, channel, note, velo); else - x_engine->osc_send_note_off(m_id, note); + x_engine->osc_send_note_off(m_id, channel, note); if (m_hints & PLUGIN_IS_BRIDGE) { - uint8_t mdata[4] = { 0 }; - mdata[1] = velo ? MIDI_STATUS_NOTE_ON : MIDI_STATUS_NOTE_OFF; - mdata[2] = note; - mdata[3] = velo; - - osc_send_midi(&osc.data, mdata); + uint8_t midiData[4] = { 0 }; + midiData[1] = (velo ? MIDI_STATUS_NOTE_ON : MIDI_STATUS_NOTE_OFF) + channel; + midiData[2] = note; + midiData[3] = velo; + osc_send_midi(&osc.data, midiData); } } #else @@ -1639,8 +1640,9 @@ public: extMidiNotes[i].velo = 0; postEvents.data[i + postPad].type = PluginPostEventNoteOff; - postEvents.data[i + postPad].index = i; - postEvents.data[i + postPad].value = 0.0; + postEvents.data[i + postPad].value1 = i; + postEvents.data[i + postPad].value2 = 0; + postEvents.data[i + postPad].value3 = 0.0; } postEvents.mutex.unlock(); @@ -1654,16 +1656,17 @@ public: * Post pone an event of type \a type.\n * The event will be processed later in a high-priority thread (but not the main one). */ - void postponeEvent(PluginPostEventType type, int32_t index, double value) + void postponeEvent(PluginPostEventType type, int32_t value1, int32_t value2, double value3) { postEvents.mutex.lock(); for (unsigned short i=0; i < MAX_POST_EVENTS; i++) { if (postEvents.data[i].type == PluginPostEventNull) { - postEvents.data[i].type = type; - postEvents.data[i].index = index; - postEvents.data[i].value = value; + postEvents.data[i].type = type; + postEvents.data[i].value1 = value1; + postEvents.data[i].value2 = value2; + postEvents.data[i].value3 = value3; break; } } @@ -1695,94 +1698,92 @@ public: return; case PluginPostEventDebug: - x_engine->callback(CALLBACK_DEBUG, m_id, event->index, 0, event->value); + x_engine->callback(CALLBACK_DEBUG, m_id, event->value1, event->value2, event->value3); break; case PluginPostEventParameterChange: // Update OSC based UIs m_needsParamUpdate = true; - osc_send_control(&osc.data, event->index, event->value); + osc_send_control(&osc.data, event->value1, event->value3); // Update OSC control client - x_engine->osc_send_set_parameter_value(m_id, event->index, event->value); + x_engine->osc_send_set_parameter_value(m_id, event->value1, event->value3); // Update Host - x_engine->callback(CALLBACK_PARAMETER_CHANGED, m_id, event->index, 0, event->value); + x_engine->callback(CALLBACK_PARAMETER_CHANGED, m_id, event->value1, 0, event->value3); break; case PluginPostEventProgramChange: // Update OSC based UIs m_needsProgUpdate = true; - osc_send_program(&osc.data, event->index); + osc_send_program(&osc.data, event->value1); // Update OSC control client - x_engine->osc_send_set_program(m_id, event->index); + x_engine->osc_send_set_program(m_id, event->value1); for (uint32_t j=0; j < param.count; j++) x_engine->osc_send_set_default_value(m_id, j, param.ranges[j].def); // Update Host - x_engine->callback(CALLBACK_PROGRAM_CHANGED, m_id, event->index, 0, 0.0); + x_engine->callback(CALLBACK_PROGRAM_CHANGED, m_id, event->value1, 0, 0.0); break; case PluginPostEventMidiProgramChange: - //if (event->index < (int32_t)midiprog.count) - //{ - //if (event->index >= 0) - //{ - //const midi_program_t* const midiprog = plugin->midiProgramData(postEvents[j].index); - // Update OSC based UIs - //osc_send_midi_program(osc_data, midiprog->bank, midiprog->program, (plugin->type() == PLUGIN_DSSI)); - //} - // Update OSC based UIs m_needsProgUpdate = true; - osc_send_midi_program(&osc.data, event->index); + + if (m_type == PLUGIN_DSSI) + { + if (event->value1 >= 0 && event->value1 < (int32_t)midiprog.count) + osc_send_program(&osc.data, midiprog.data[event->value1].bank, midiprog.data[event->value1].program); + } + else + osc_send_midi_program(&osc.data, event->value1); // Update OSC control client - x_engine->osc_send_set_midi_program(m_id, event->index); + x_engine->osc_send_set_midi_program(m_id, event->value1); for (uint32_t j=0; j < param.count; j++) x_engine->osc_send_set_default_value(m_id, j, param.ranges[j].def); // Update Host - x_engine->callback(CALLBACK_MIDI_PROGRAM_CHANGED, m_id, event->index, 0, 0.0); + x_engine->callback(CALLBACK_MIDI_PROGRAM_CHANGED, m_id, event->value1, 0, 0.0); //} break; case PluginPostEventNoteOn: // Update OSC based UIs - if (cin_channel >= 0 && cin_channel < 16) + if (true) { - uint8_t mdata[4] = { 0 }; - mdata[1] = MIDI_STATUS_NOTE_ON + cin_channel; - mdata[2] = event->index; - mdata[3] = rint(event->value); - osc_send_midi(&osc.data, mdata); + uint8_t midiData[4] = { 0 }; + midiData[1] = MIDI_STATUS_NOTE_ON + event->value1; + midiData[2] = event->value2; + midiData[3] = rint(event->value3); + osc_send_midi(&osc.data, midiData); } // Update OSC control client - x_engine->osc_send_note_on(m_id, event->index, event->value); + x_engine->osc_send_note_on(m_id, event->value1, event->value2, event->value3); // Update Host - x_engine->callback(CALLBACK_NOTE_ON, m_id, event->index, rint(event->value), 0.0); + x_engine->callback(CALLBACK_NOTE_ON, m_id, event->value1, event->value2, event->value3); break; case PluginPostEventNoteOff: // Update OSC based UIs - if (cin_channel >= 0 && cin_channel < 16) + if (true) { - uint8_t mdata[4] = { 0 }; - mdata[1] = MIDI_STATUS_NOTE_OFF + cin_channel; - mdata[2] = event->index; - osc_send_midi(&osc.data, mdata); + uint8_t midiData[4] = { 0 }; + midiData[1] = MIDI_STATUS_NOTE_OFF + event->value1; + midiData[2] = event->value2; + osc_send_midi(&osc.data, midiData); } // Update OSC control client - x_engine->osc_send_note_off(m_id, event->index); + x_engine->osc_send_note_off(m_id, event->value1, event->value2); // Update Host - x_engine->callback(CALLBACK_NOTE_OFF, m_id, event->index, 0, 0.0); + x_engine->callback(CALLBACK_NOTE_OFF, m_id, event->value1, event->value2, 0.0); break; } } diff --git a/c++/carla-backend/dssi.cpp b/c++/carla-backend/dssi.cpp index 71a4e7c..89d585e 100644 --- a/c++/carla-backend/dssi.cpp +++ b/c++/carla-backend/dssi.cpp @@ -866,7 +866,7 @@ public: { value = cinEvent->value; setDryWet(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, 0, value); continue; } @@ -874,7 +874,7 @@ public: { value = cinEvent->value*127/100; setVolume(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, 0, value); continue; } @@ -901,8 +901,8 @@ public: setBalanceLeft(left, false, false); setBalanceRight(right, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, left); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, right); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); continue; } } @@ -932,7 +932,7 @@ public: } setParameterValue(k, value, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, value); + postponeEvent(PluginPostEventParameterChange, k, 0, value); } } @@ -954,7 +954,7 @@ public: if (midiprog.data[k].bank == nextBankId && midiprog.data[k].program == nextProgramId) { setMidiProgram(k, false, false, false, false); - postponeEvent(PluginPostEventMidiProgramChange, k, 0.0); + postponeEvent(PluginPostEventMidiProgramChange, k, 0, 0.0); break; } } @@ -1069,7 +1069,7 @@ public: midiEvent->data.note.note = note; if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOff, note, 0.0); + postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); } else if (MIDI_IS_STATUS_NOTE_ON(status)) { @@ -1082,7 +1082,7 @@ public: midiEvent->data.note.velocity = velo; if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOn, note, velo); + postponeEvent(PluginPostEventNoteOn, channel, note, velo); } else if (MIDI_IS_STATUS_POLYPHONIC_AFTERTOUCH(status)) { diff --git a/c++/carla-backend/fluidsynth.cpp b/c++/carla-backend/fluidsynth.cpp index 1a99c43..3f06255 100644 --- a/c++/carla-backend/fluidsynth.cpp +++ b/c++/carla-backend/fluidsynth.cpp @@ -860,7 +860,7 @@ public: { value = cinEvent->value; setDryWet(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, 0, value); continue; } @@ -868,7 +868,7 @@ public: { value = cinEvent->value*127/100; setVolume(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, 0, value); continue; } @@ -895,8 +895,8 @@ public: setBalanceLeft(left, false, false); setBalanceRight(right, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, left); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, right); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); continue; } } @@ -926,7 +926,7 @@ public: } setParameterValue(k, value, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, value); + postponeEvent(PluginPostEventParameterChange, k, 0, value); } } @@ -951,7 +951,7 @@ public: if (cinEvent->channel == cin_channel) { setMidiProgram(k, false, false, false, false); - postponeEvent(PluginPostEventMidiProgramChange, k, 0.0); + postponeEvent(PluginPostEventMidiProgramChange, k, 0, 0.0); } else fluid_synth_program_select(f_synth, cinEvent->channel, f_id, bankId, progId); @@ -1066,7 +1066,7 @@ public: fluid_synth_noteoff(f_synth, channel, note); if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOff, note, 0.0); + postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); } else if (MIDI_IS_STATUS_NOTE_ON(status)) { @@ -1076,7 +1076,7 @@ public: fluid_synth_noteon(f_synth, channel, note, velo); if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOn, note, velo); + postponeEvent(PluginPostEventNoteOn, channel, note, velo); } else if (MIDI_IS_STATUS_AFTERTOUCH(status)) { diff --git a/c++/carla-backend/ladspa.cpp b/c++/carla-backend/ladspa.cpp index 35ec016..3d68fc5 100644 --- a/c++/carla-backend/ladspa.cpp +++ b/c++/carla-backend/ladspa.cpp @@ -715,7 +715,7 @@ public: { value = cinEvent->value; setDryWet(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, 0, value); continue; } @@ -723,7 +723,7 @@ public: { value = cinEvent->value*127/100; setVolume(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, 0, value); continue; } @@ -750,8 +750,8 @@ public: setBalanceLeft(left, false, false); setBalanceRight(right, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, left); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, right); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); continue; } } @@ -781,7 +781,7 @@ public: } setParameterValue(k, value, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, value); + postponeEvent(PluginPostEventParameterChange, k, 0, value); } } diff --git a/c++/carla-backend/linuxsampler.cpp b/c++/carla-backend/linuxsampler.cpp index d9f7329..31ec418 100644 --- a/c++/carla-backend/linuxsampler.cpp +++ b/c++/carla-backend/linuxsampler.cpp @@ -341,7 +341,7 @@ public: midiInputPort->DispatchNoteOff(note, 0, channel, time); if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOff, note, 0.0); + postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); } else if (MIDI_IS_STATUS_NOTE_ON(status)) { @@ -351,7 +351,7 @@ public: midiInputPort->DispatchNoteOn(note, velo, channel, time); if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOn, note, velo); + postponeEvent(PluginPostEventNoteOn, channel, note, velo); } else if (MIDI_IS_STATUS_AFTERTOUCH(status)) { diff --git a/c++/carla-backend/lv2.cpp b/c++/carla-backend/lv2.cpp index 55ff00c..2aa127b 100644 --- a/c++/carla-backend/lv2.cpp +++ b/c++/carla-backend/lv2.cpp @@ -1761,7 +1761,7 @@ public: { value = cinEvent->value; setDryWet(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, 0, value); continue; } @@ -1769,7 +1769,7 @@ public: { value = cinEvent->value*127/100; setVolume(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, 0, value); continue; } @@ -1796,8 +1796,8 @@ public: setBalanceLeft(left, false, false); setBalanceRight(right, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, left); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, right); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); continue; } } @@ -1827,7 +1827,7 @@ public: } setParameterValue(k, value, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, value); + postponeEvent(PluginPostEventParameterChange, k, 0, value); } } @@ -1849,7 +1849,7 @@ public: if (midiprog.data[k].bank == nextBankId && midiprog.data[k].program == nextProgramId) { setMidiProgram(k, false, false, false, false); - postponeEvent(PluginPostEventMidiProgramChange, k, 0.0); + postponeEvent(PluginPostEventMidiProgramChange, k, 0, 0.0); break; } } @@ -2001,9 +2001,9 @@ public: if (channel == cin_channel) { if (MIDI_IS_STATUS_NOTE_OFF(status)) - postponeEvent(PluginPostEventNoteOff, minEvent->data[1], 0.0); + postponeEvent(PluginPostEventNoteOff, channel, minEvent->data[1], 0.0); else if (MIDI_IS_STATUS_NOTE_ON(status)) - postponeEvent(PluginPostEventNoteOn, minEvent->data[1], minEvent->data[2]); + postponeEvent(PluginPostEventNoteOn, channel, minEvent->data[1], minEvent->data[2]); } } @@ -2034,41 +2034,41 @@ public: { case LV2_PORT_TIME_BAR: setParameterValue(k, timeInfo->bbt.bar, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.bar); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.bar); break; case LV2_PORT_TIME_BAR_BEAT: setParameterValue(k, timeInfo->bbt.tick, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.tick); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.tick); break; case LV2_PORT_TIME_BEAT: setParameterValue(k, timeInfo->bbt.beat, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.beat); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.beat); break; case LV2_PORT_TIME_BEAT_UNIT: setParameterValue(k, timeInfo->bbt.beat_type, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.beat_type); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.beat_type); break; case LV2_PORT_TIME_BEATS_PER_BAR: setParameterValue(k, timeInfo->bbt.beats_per_bar, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.beats_per_bar); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.beats_per_bar); break; case LV2_PORT_TIME_BEATS_PER_MINUTE: setParameterValue(k, timeInfo->bbt.beats_per_minute, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->bbt.beats_per_minute); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->bbt.beats_per_minute); break; case LV2_PORT_TIME_FRAME: setParameterValue(k, timeInfo->frame, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->frame); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->frame); break; case LV2_PORT_TIME_FRAMES_PER_SECOND: break; case LV2_PORT_TIME_POSITION: setParameterValue(k, timeInfo->time, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->time); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->time); break; case LV2_PORT_TIME_SPEED: setParameterValue(k, timeInfo->playing ? 1.0 : 0.0, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, timeInfo->playing ? 1.0 : 0.0); + postponeEvent(PluginPostEventParameterChange, k, 0, timeInfo->playing ? 1.0 : 0.0); break; } } diff --git a/c++/carla-backend/qtcreator/carla-backend.pro b/c++/carla-backend/qtcreator/carla-backend.pro index 4c3179c..e5bac36 100644 --- a/c++/carla-backend/qtcreator/carla-backend.pro +++ b/c++/carla-backend/qtcreator/carla-backend.pro @@ -54,12 +54,12 @@ HEADERS = \ INCLUDEPATH = .. \ ../../carla-includes -DEFINES += NDEBUG DEBUG +DEFINES = QTCREATOR_TEST +DEFINES += DEBUG # NDEBUG DEFINES += CARLA_ENGINE_JACK DEFINES += CARLA_ENGINE_RTAUDIO HAVE_GETTIMEOFDAY __LINUX_ALSA__ __LINUX_ALSASEQ__ __LINUX_PULSE__ __RTAUDIO_DEBUG__ __RTMIDI_DEBUG__ -DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER DEFINES += HAVE_SUIL -DEFINES += QTCREATOR_TEST +DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER LIBS = ../../carla-lilv/carla_lilv.a -ldl INCLUDEPATH += ../rtaudio-4.0.11 diff --git a/c++/carla-backend/vst.cpp b/c++/carla-backend/vst.cpp index c6af6bc..8cb3f10 100644 --- a/c++/carla-backend/vst.cpp +++ b/c++/carla-backend/vst.cpp @@ -745,7 +745,7 @@ public: { value = cinEvent->value; setDryWet(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_DRYWET, 0, value); continue; } @@ -753,7 +753,7 @@ public: { value = cinEvent->value*127/100; setVolume(value, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, value); + postponeEvent(PluginPostEventParameterChange, PARAMETER_VOLUME, 0, value); continue; } @@ -780,8 +780,8 @@ public: setBalanceLeft(left, false, false); setBalanceRight(right, false, false); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, left); - postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, right); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); + postponeEvent(PluginPostEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); continue; } } @@ -811,7 +811,7 @@ public: } setParameterValue(k, value, false, false, false); - postponeEvent(PluginPostEventParameterChange, k, value); + postponeEvent(PluginPostEventParameterChange, k, 0, value); } } @@ -829,7 +829,7 @@ public: if (progId < prog.count) { setProgram(progId, false, false, false, false); - postponeEvent(PluginPostEventMidiProgramChange, progId, 0.0); + postponeEvent(PluginPostEventMidiProgramChange, progId, 0, 0.0); } } break; @@ -938,7 +938,7 @@ public: midiEvent->midiData[1] = note; if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOff, note, 0.0); + postponeEvent(PluginPostEventNoteOff, channel, note, 0.0); } else if (MIDI_IS_STATUS_NOTE_ON(status)) { @@ -950,7 +950,7 @@ public: midiEvent->midiData[2] = velo; if (channel == cin_channel) - postponeEvent(PluginPostEventNoteOn, note, velo); + postponeEvent(PluginPostEventNoteOn, channel, note, velo); } else if (MIDI_IS_STATUS_POLYPHONIC_AFTERTOUCH(status)) { @@ -1217,7 +1217,7 @@ public: if (self->x_engine->isOnAudioThread() && ! self->x_engine->isOffline()) { self->setParameterValue(index, opt, false, false, false); - self->postponeEvent(PluginPostEventParameterChange, index, opt); + self->postponeEvent(PluginPostEventParameterChange, index, 0, opt); } else self->setParameterValue(index, opt, false, true, true); diff --git a/c++/carla-discovery/qtcreator/carla-discovery.pro b/c++/carla-discovery/qtcreator/carla-discovery.pro index 4b48512..bdbda27 100644 --- a/c++/carla-discovery/qtcreator/carla-discovery.pro +++ b/c++/carla-discovery/qtcreator/carla-discovery.pro @@ -7,8 +7,8 @@ CONFIG = release static CONFIG += link_pkgconfig qt warn_on DEFINES = DEBUG BUILD_NATIVE -#DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER -#PKGCONFIG = fluidsynth linuxsampler +DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER +PKGCONFIG = fluidsynth linuxsampler TARGET = carla-discovery-qtcreator TEMPLATE = app @@ -36,9 +36,9 @@ INCLUDEPATH = .. \ LIBS = \ ../../carla-lilv/carla_lilv.a -#win { -LIBS += -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 -lqtmain -#} - QMAKE_CXXFLAGS *= -std=c++0x -QMAKE_LFLAGS *= -static -static-libgcc + +win { + LIBS += -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 -lqtmain + QMAKE_LFLAGS *= -static -static-libgcc +} diff --git a/c++/carla-includes/carla_includes.h b/c++/carla-includes/carla_includes.h index afae052..096eb72 100644 --- a/c++/carla-includes/carla_includes.h +++ b/c++/carla-includes/carla_includes.h @@ -98,4 +98,6 @@ const char* bool2str(bool yesno) return yesno ? "true" : "false"; } +inline void pass(void) {} + #endif // CARLA_INCLUDES_H diff --git a/c++/carla-includes/carla_lv2.h b/c++/carla-includes/carla_lv2.h index 0e0496b..95618ad 100644 --- a/c++/carla-includes/carla_lv2.h +++ b/c++/carla-includes/carla_lv2.h @@ -634,9 +634,9 @@ const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI URI) else if (strcmp(designation, LV2_TIME__speed) == 0) RDF_Port->Designation = LV2_PORT_TIME_SPEED; else if (strncmp(designation, LV2_PARAMETERS_PREFIX, strlen(LV2_PARAMETERS_PREFIX)) == 0) - 0; // skip + pass(); else if (strncmp(designation, LV2_PORT_GROUPS_PREFIX, strlen(LV2_PORT_GROUPS_PREFIX)) == 0) - 0; // skip + pass(); else qWarning("lv2_rdf_new(%s) - got unknown Port Designation '%s'", URI, designation); } diff --git a/src/digitalpeakmeter.py b/src/digitalpeakmeter.py index 5735385..075bce7 100644 --- a/src/digitalpeakmeter.py +++ b/src/digitalpeakmeter.py @@ -46,36 +46,38 @@ class DigitalPeakMeter(QWidget): self.m_paintTimer.timeout.connect(self.update) self.m_paintTimer.start() - def displayMeter(self, meter_n, level): - if meter_n < 0 or meter_n > self.m_channels: - qCritical("DigitalPeakMeter::displayMeter(%i, %f) - Invalid meter number" % (meter_n, level)) - return + def displayMeter(self, meter, level): + if meter < 0 or meter >= self.m_channels: + return qCritical("DigitalPeakMeter::displayMeter(%i, %f) - invalid meter number" % (meter, level)) if level < 0.0: level = -level if level > 1.0: level = 1.0 - self.m_channels_data[meter_n - 1] = level + self.m_channelsData[meter-1] = level def setChannels(self, channels): + if (channels < 0) + return qCritical("DigitalPeakMeter::setChannels(%i) - channels must be a positive integer" % channels) + self.m_channels = channels - self.m_channels_data = [] + self.m_channelsData = [] self.m_lastValueData = [] for x in range(channels): - self.m_channels_data.append(0.0) + self.m_channelsData.append(0.0) self.m_lastValueData.append(0.0) def setColor(self, color): if color == self.GREEN: - self.m_colorBase = QColor("#5DE73D") + self.m_colorBase = QColor("#5DE73D") self.m_colorBaseT = QColor(15, 110, 15, 100) elif color == self.BLUE: - self.m_colorBase = QColor("#52EEF8") + self.m_colorBase = QColor("#52EEF8") self.m_colorBaseT = QColor(15, 15, 110, 100) else: - return + return qCritical("DigitalPeakMeter::setColor(%i) - invalid color" % color) self.setOrientation(self.m_orientation) @@ -98,6 +100,9 @@ class DigitalPeakMeter(QWidget): self.m_gradientMeter.setColorAt(0.8, self.m_colorBase) self.m_gradientMeter.setColorAt(1.0, self.m_colorBase) + else: + return qCritical("DigitalPeakMeter::setOrientation(%i) - invalid orientation" % orientation) + self.updateSizes() def setRefreshRate(self, rate): @@ -110,6 +115,7 @@ class DigitalPeakMeter(QWidget): value = 0 elif value > 5: value = 5 + self.m_smoothMultiplier = value def minimumSizeHint(self): @@ -119,17 +125,19 @@ class DigitalPeakMeter(QWidget): return QSize(self.m_width, self.m_height) def updateSizes(self): - self.m_width = self.width() + self.m_width = self.width() self.m_height = self.height() self.m_sizeMeter = 0 if self.m_orientation == self.HORIZONTAL: self.m_gradientMeter.setFinalStop(self.m_width, 0) + if self.m_channels > 0: self.m_sizeMeter = self.m_height / self.m_channels elif self.m_orientation == self.VERTICAL: self.m_gradientMeter.setFinalStop(0, self.m_height) + if self.m_channels > 0: self.m_sizeMeter = self.m_width / self.m_channels @@ -142,10 +150,12 @@ class DigitalPeakMeter(QWidget): painter.setBrush(Qt.black) painter.drawRect(0, 0, self.m_width, self.m_height) - meter_x = 0 + meterX = 0 + painter.setPen(self.m_colorBackground) + painter.setBrush(self.m_gradientMeter) for i in range(self.m_channels): - level = self.m_channels_data[i] + level = self.m_channelsData[i] if level == self.m_lastValueData[i]: continue @@ -159,20 +169,15 @@ class DigitalPeakMeter(QWidget): if value < 0.0: value = 0.0 - - # Don't bounce the meter so much - if self.m_smoothMultiplier > 0: + elif self.m_smoothMultiplier > 0: value = (self.m_lastValueData[i] * self.m_smoothMultiplier + value) / (self.m_smoothMultiplier + 1) - painter.setPen(self.m_colorBackground) - painter.setBrush(self.m_gradientMeter) - if self.m_orientation == self.HORIZONTAL: - painter.drawRect(0, meter_x, value, self.m_sizeMeter) + painter.drawRect(0, meterX, value, self.m_sizeMeter) elif self.m_orientation == self.VERTICAL: - painter.drawRect(meter_x, value, self.m_sizeMeter, self.m_height) + painter.drawRect(meterX, value, self.m_sizeMeter, self.m_height) - meter_x += self.m_sizeMeter + meterX += self.m_sizeMeter self.m_lastValueData[i] = value painter.setBrush(QColor(0, 0, 0, 0)) @@ -180,7 +185,7 @@ class DigitalPeakMeter(QWidget): if self.m_orientation == self.HORIZONTAL: # Variables lsmall = self.m_width - lfull = self.m_height - 1 + lfull = self.m_height - 1 # Base painter.setPen(self.m_colorBaseT) @@ -203,7 +208,7 @@ class DigitalPeakMeter(QWidget): elif self.m_orientation == self.VERTICAL: # Variables lsmall = self.m_height - lfull = self.m_width - 1 + lfull = self.m_width - 1 # Base painter.setPen(self.m_colorBaseT) diff --git a/src/jackmeter.py b/src/jackmeter.py index d6640bc..9527c24 100755 --- a/src/jackmeter.py +++ b/src/jackmeter.py @@ -79,9 +79,9 @@ def session_callback(event, arg): def reconnect_inputs(): play_port_1 = jacklib.port_by_name(client, "system:playback_1") play_port_2 = jacklib.port_by_name(client, "system:playback_2") + client_name = str(jacklib.get_client_name(client), encoding="utf-8") list_port_1 = c_char_p_p_to_list(jacklib.port_get_all_connections(client, play_port_1)) list_port_2 = c_char_p_p_to_list(jacklib.port_get_all_connections(client, play_port_2)) - client_name = str(jacklib.get_client_name(client), encoding="utf-8") for port in list_port_1: this_port = jacklib.port_by_name(client, port)