| @@ -111,7 +111,7 @@ int main(int argc, char* argv[]) | |||
| if (close_now) break; | |||
| msleep(50); | |||
| carla_msleep(50); | |||
| } | |||
| delete plugin; | |||
| @@ -2942,6 +2942,8 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): | |||
| self.m_bridge_info.unique_id = plugin['unique_id'] | |||
| self.m_bridge_info.ains = plugin['audio.ins'] | |||
| self.m_bridge_info.aouts = plugin['audio.outs'] | |||
| self.m_bridge_info.mins = plugin['midi.ins'] | |||
| self.m_bridge_info.mouts = plugin['midi.outs'] | |||
| return pointer(self.m_bridge_info) | |||
| elif (ptype == PLUGIN_LADSPA): | |||
| @@ -3340,7 +3342,21 @@ if __name__ == '__main__': | |||
| gui = CarlaMainW() | |||
| # Init backend | |||
| CarlaHost.set_option(OPTION_GLOBAL_JACK_CLIENT, 0, "") | |||
| CarlaHost.set_option(OPTION_GLOBAL_JACK_CLIENT, gui.settings.value("Engine/GlobalClient", False, type=bool), "") | |||
| CarlaHost.set_option(OPTION_USE_DSSI_CHUNKS, gui.settings.value("Engine/DSSIChunks", False, type=bool), "") | |||
| CarlaHost.set_option(OPTION_PREFER_UI_BRIDGES, gui.settings.value("Engine/PreferBridges", True, type=bool), "") | |||
| if (carla_bridge_unix32): | |||
| CarlaHost.set_option(OPTION_PATH_BRIDGE_UNIX32, 0, carla_bridge_unix32) | |||
| if (carla_bridge_unix32): | |||
| CarlaHost.set_option(OPTION_PATH_BRIDGE_UNIX64, 0, carla_bridge_unix64) | |||
| if (carla_bridge_win32): | |||
| CarlaHost.set_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32) | |||
| if (carla_bridge_win64): | |||
| CarlaHost.set_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64) | |||
| if (not CarlaHost.carla_init("Carla")): | |||
| CustomMessageBox(None, QMessageBox.Critical, "Error", "Could not connect to JACK", | |||
| @@ -81,6 +81,18 @@ bool carla_close() | |||
| get_real_plugin_name(0); | |||
| set_last_error(nullptr); | |||
| if (carla_options.bridge_unix32) | |||
| free((void*)carla_options.bridge_unix32); | |||
| if (carla_options.bridge_unix64) | |||
| free((void*)carla_options.bridge_unix64); | |||
| if (carla_options.bridge_win32) | |||
| free((void*)carla_options.bridge_win32); | |||
| if (carla_options.bridge_win64) | |||
| free((void*)carla_options.bridge_win64); | |||
| return closed; | |||
| } | |||
| @@ -584,13 +596,27 @@ const char* get_program_name(unsigned short plugin_id, uint32_t program_id) | |||
| { | |||
| qDebug("get_program_name(%i, %i)", plugin_id, program_id); | |||
| static const char* program_name = nullptr; | |||
| if (program_name) | |||
| free((void*)program_name); | |||
| program_name = nullptr; | |||
| for (unsigned short i=0; i<MAX_PLUGINS; i++) | |||
| { | |||
| CarlaPlugin* plugin = CarlaPlugins[i]; | |||
| if (plugin && plugin->id() == plugin_id) | |||
| { | |||
| if (program_id < plugin->prog_count()) | |||
| return plugin->prog_name(program_id); | |||
| { | |||
| char buf_str[STR_MAX] = { 0 }; | |||
| plugin->get_program_name(program_id, buf_str); | |||
| program_name = strdup(buf_str); | |||
| return program_name; | |||
| } | |||
| else | |||
| qCritical("get_program_name(%i, %i) - program_id out of bounds", plugin_id, program_id); | |||
| @@ -606,13 +632,27 @@ const char* get_midi_program_name(unsigned short plugin_id, uint32_t midi_progra | |||
| { | |||
| qDebug("get_midi_program_name(%i, %i)", plugin_id, midi_program_id); | |||
| static const char* midi_program_name = nullptr; | |||
| if (midi_program_name) | |||
| free((void*)midi_program_name); | |||
| midi_program_name = nullptr; | |||
| for (unsigned short i=0; i<MAX_PLUGINS; i++) | |||
| { | |||
| CarlaPlugin* plugin = CarlaPlugins[i]; | |||
| if (plugin && plugin->id() == plugin_id) | |||
| { | |||
| if (midi_program_id < plugin->midiprog_count()) | |||
| return plugin->midiprog_name(midi_program_id); | |||
| { | |||
| char buf_str[STR_MAX] = { 0 }; | |||
| plugin->get_midi_program_name(midi_program_id, buf_str); | |||
| midi_program_name = strdup(buf_str); | |||
| return midi_program_name; | |||
| } | |||
| else | |||
| qCritical("get_midi_program_name(%i, %i) - program_id out of bounds", plugin_id, midi_program_id); | |||
| @@ -695,7 +735,8 @@ double get_default_parameter_value(unsigned short plugin_id, uint32_t parameter_ | |||
| if (plugin && plugin->id() == plugin_id) | |||
| { | |||
| if (parameter_id < plugin->param_count()) | |||
| return plugin->get_default_parameter_value(parameter_id); | |||
| return plugin->param_ranges(parameter_id)->def; | |||
| //return plugin->get_default_parameter_value(parameter_id); | |||
| else | |||
| qCritical("get_default_parameter_value(%i, %i) - parameter_id out of bounds", plugin_id, parameter_id); | |||
| @@ -1066,6 +1107,24 @@ void set_option(OptionsType option, int value, const char* value_str) | |||
| case OPTION_GLOBAL_JACK_CLIENT: | |||
| carla_options.global_jack_client = value; | |||
| break; | |||
| case OPTION_USE_DSSI_CHUNKS: | |||
| carla_options.use_dssi_chunks = value; | |||
| break; | |||
| case OPTION_PREFER_UI_BRIDGES: | |||
| carla_options.prefer_ui_bridges = value; | |||
| break; | |||
| case OPTION_PATH_BRIDGE_UNIX32: | |||
| carla_options.bridge_unix32 = strdup(value_str); | |||
| break; | |||
| case OPTION_PATH_BRIDGE_UNIX64: | |||
| carla_options.bridge_unix64 = strdup(value_str); | |||
| break; | |||
| case OPTION_PATH_BRIDGE_WIN32: | |||
| carla_options.bridge_win32 = strdup(value_str); | |||
| break; | |||
| case OPTION_PATH_BRIDGE_WIN64: | |||
| carla_options.bridge_win64 = strdup(value_str); | |||
| break; | |||
| default: | |||
| break; | |||
| } | |||
| @@ -111,7 +111,11 @@ enum GuiType { | |||
| enum OptionsType { | |||
| OPTION_GLOBAL_JACK_CLIENT = 1, | |||
| OPTION_USE_DSSI_CHUNKS = 2, | |||
| OPTION_PREFER_UI_BRIDGES = 3 | |||
| OPTION_PREFER_UI_BRIDGES = 3, | |||
| OPTION_PATH_BRIDGE_UNIX32 = 4, | |||
| OPTION_PATH_BRIDGE_UNIX64 = 5, | |||
| OPTION_PATH_BRIDGE_WIN32 = 6, | |||
| OPTION_PATH_BRIDGE_WIN64 = 7 | |||
| }; | |||
| enum CallbackType { | |||
| @@ -208,6 +212,8 @@ struct PluginBridgeInfo { | |||
| long unique_id; | |||
| uint32_t ains; | |||
| uint32_t aouts; | |||
| uint32_t mins; | |||
| uint32_t mouts; | |||
| }; | |||
| struct carla_options_t { | |||
| @@ -215,6 +221,10 @@ struct carla_options_t { | |||
| bool global_jack_client; | |||
| bool use_dssi_chunks; | |||
| bool prefer_ui_bridges; | |||
| const char* bridge_unix32; | |||
| const char* bridge_unix64; | |||
| const char* bridge_win32; | |||
| const char* bridge_win64; | |||
| }; | |||
| typedef void (*CallbackFunc)(CallbackType action, unsigned short plugin_id, int value1, int value2, double value3); | |||
| @@ -58,6 +58,7 @@ public: | |||
| delete m_thread; | |||
| } | |||
| #if 0 | |||
| virtual PluginCategory category() | |||
| { | |||
| return m_info.category; | |||
| @@ -80,14 +81,12 @@ public: | |||
| virtual uint32_t min_count() | |||
| { | |||
| // TODO - add this to pluginbridgeinfo | |||
| return 0; //m_info.mins; | |||
| return m_info.mins; | |||
| } | |||
| virtual uint32_t mout_count() | |||
| { | |||
| // TODO - add this to pluginbridgeinfo | |||
| return 0; //m_info.mouts; | |||
| return m_info.mouts; | |||
| } | |||
| virtual void get_label(char* buf_str) | |||
| @@ -110,13 +109,6 @@ public: | |||
| strncpy(buf_str, m_info.name, STR_MAX); | |||
| } | |||
| virtual void get_audio_port_count_info(PortCountInfo* info) | |||
| { | |||
| info->ins = m_info.ains; | |||
| info->outs = m_info.aouts; | |||
| info->total = m_info.ains + m_info.aouts; | |||
| } | |||
| virtual void reload() | |||
| { | |||
| // plugin checks | |||
| @@ -133,6 +125,7 @@ public: | |||
| m_hints |= m_info.hints; | |||
| } | |||
| #endif | |||
| bool init(const char* filename, const char* label, void* extra_stuff) | |||
| { | |||
| @@ -356,10 +356,10 @@ public: | |||
| } | |||
| // FIXME - remove this? | |||
| double get_default_parameter_value(uint32_t param_id) | |||
| { | |||
| return param.ranges[param_id].def; | |||
| } | |||
| // double get_default_parameter_value(uint32_t param_id) | |||
| // { | |||
| // return param.ranges[param_id].def; | |||
| // } | |||
| virtual void get_label(char* buf_str) | |||
| { | |||
| @@ -381,34 +381,34 @@ public: | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_name(uint32_t /*index*/, char* buf_str) | |||
| virtual void get_parameter_name(uint32_t /*param_id*/, char* buf_str) | |||
| { | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_symbol(uint32_t /*index*/, char* buf_str) | |||
| virtual void get_parameter_symbol(uint32_t /*param_id*/, char* buf_str) | |||
| { | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_label(uint32_t /*index*/, char* buf_str) | |||
| virtual void get_parameter_label(uint32_t /*param_id*/, char* buf_str) | |||
| { | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_scalepoint_label(uint32_t /*pindex*/, uint32_t /*index*/, char* buf_str) | |||
| virtual void get_parameter_scalepoint_label(uint32_t /*param_id*/, uint32_t /*scalepoint_id*/, char* buf_str) | |||
| { | |||
| *buf_str = 0; | |||
| } | |||
| const char* prog_name(uint32_t index) | |||
| void get_program_name(uint32_t program_id, char* buf_str) | |||
| { | |||
| return prog.names[index]; | |||
| strncpy(buf_str, prog.names[program_id], STR_MAX); | |||
| } | |||
| const char* midiprog_name(uint32_t index) | |||
| void get_midi_program_name(uint32_t midiprogram_id, char* buf_str) | |||
| { | |||
| return midiprog.data[index].name; | |||
| strncpy(buf_str, midiprog.data[midiprogram_id].name, STR_MAX); | |||
| } | |||
| void get_parameter_count_info(PortCountInfo* info) | |||
| @@ -606,11 +606,11 @@ public: | |||
| virtual void set_custom_data(CustomDataType dtype, const char* key, const char* value, bool) | |||
| { | |||
| qDebug("set_custom_data(%i, %s, %s)", dtype, key, value); | |||
| bool save_data = true; | |||
| bool already_have = false; | |||
| qDebug("set_custom_data(%i, %s, %s)", dtype, key, value); | |||
| switch (dtype) | |||
| { | |||
| case CUSTOM_DATA_INVALID: | |||
| @@ -716,7 +716,7 @@ public: | |||
| callback_action(CALLBACK_MIDI_PROGRAM_CHANGED, m_id, midiprog.current, 0, 0.0); | |||
| } | |||
| virtual void send_midi_note(bool onoff, uint8_t note, uint8_t velo, bool, bool osc_send, bool callback_send) | |||
| void send_midi_note(bool onoff, uint8_t note, uint8_t velo, bool, bool osc_send, bool callback_send) | |||
| { | |||
| carla_midi_lock(); | |||
| for (unsigned int i=0; i<MAX_MIDI_EVENTS; i++) | |||
| @@ -820,6 +820,11 @@ public: | |||
| post_events.lock.unlock(); | |||
| } | |||
| virtual int set_osc_bridge_info(PluginBridgeInfoType, lo_arg**) | |||
| { | |||
| return 1; | |||
| } | |||
| #ifndef BUILD_BRIDGE | |||
| void update_osc_data(lo_address source, const char* url) | |||
| { | |||
| @@ -921,7 +926,7 @@ public: | |||
| qDebug("CarlaPlugin::remove_from_jack() - end"); | |||
| } | |||
| void delete_buffers() | |||
| virtual void delete_buffers() | |||
| { | |||
| qDebug("CarlaPlugin::delete_buffers() - start"); | |||
| @@ -955,11 +960,6 @@ public: | |||
| qDebug("CarlaPlugin::delete_buffers() - end"); | |||
| } | |||
| virtual int set_osc_bridge_info(PluginBridgeInfoType, lo_arg**) | |||
| { | |||
| return 1; | |||
| } | |||
| bool lib_open(const char* filename) | |||
| { | |||
| #ifdef Q_OS_WIN | |||
| @@ -33,12 +33,16 @@ carla_options_t carla_options = { | |||
| #ifdef BUILD_BRIDGE | |||
| /* global_jack_client */ false, | |||
| /* use_dssi_chunks */ false, | |||
| /* prefer_ui_bridges */ false | |||
| /* prefer_ui_bridges */ false, | |||
| #else | |||
| /* global_jack_client */ true, | |||
| /* use_dssi_chunks */ false, | |||
| /* prefer_ui_bridges */ true | |||
| /* prefer_ui_bridges */ true, | |||
| #endif | |||
| /* bridge_unix32 */ nullptr, | |||
| /* bridge_unix64 */ nullptr, | |||
| /* bridge_win32 */ nullptr, | |||
| /* bridge_win64 */ nullptr | |||
| }; | |||
| CallbackFunc Callback = nullptr; | |||
| @@ -78,19 +82,18 @@ const char* bool2str(bool yesno) | |||
| const char* binarytype2str(BinaryType type) | |||
| { | |||
| // TODO - use global options | |||
| switch (type) | |||
| { | |||
| case BINARY_UNIX32: | |||
| return "/home/falktx/Personal/FOSS/GIT/Cadence/src/carla-bridge/carla-bridge-win32.exe"; | |||
| return carla_options.bridge_unix32; | |||
| case BINARY_UNIX64: | |||
| return "/home/falktx/Personal/FOSS/GIT/Cadence/src/carla-bridge/carla-bridge-win32.exe"; | |||
| return carla_options.bridge_unix64; | |||
| case BINARY_WIN32: | |||
| return "/home/falktx/Personal/FOSS/GIT/Cadence/src/carla-bridge/carla-bridge-win32.exe"; | |||
| return carla_options.bridge_win32; | |||
| case BINARY_WIN64: | |||
| return "/home/falktx/Personal/FOSS/GIT/Cadence/src/carla-bridge/carla-bridge-win32.exe"; | |||
| return carla_options.bridge_win64; | |||
| default: | |||
| return ""; | |||
| return nullptr; | |||
| } | |||
| } | |||
| @@ -31,7 +31,10 @@ public: | |||
| descriptor = nullptr; | |||
| ldescriptor = nullptr; | |||
| // FIXME? | |||
| ain_rindexes = nullptr; | |||
| aout_rindexes = nullptr; | |||
| param_buffers = nullptr; | |||
| memset(midi_events, 0, sizeof(snd_seq_event_t)*MAX_MIDI_EVENTS); | |||
| } | |||
| @@ -100,6 +103,11 @@ public: | |||
| return 0; | |||
| } | |||
| virtual double get_parameter_value(uint32_t param_id) | |||
| { | |||
| return param_buffers[param_id]; | |||
| } | |||
| virtual void get_label(char* buf_str) | |||
| { | |||
| strncpy(buf_str, ldescriptor->Label, STR_MAX); | |||
| @@ -120,9 +128,9 @@ public: | |||
| strncpy(buf_str, ldescriptor->Name, STR_MAX); | |||
| } | |||
| virtual void get_parameter_name(uint32_t index, char* buf_str) | |||
| virtual void get_parameter_name(uint32_t param_id, char* buf_str) | |||
| { | |||
| int32_t rindex = param.data[index].rindex; | |||
| int32_t rindex = param.data[param_id].rindex; | |||
| strncpy(buf_str, ldescriptor->PortNames[rindex], STR_MAX); | |||
| } | |||
| @@ -134,11 +142,6 @@ public: | |||
| info->type = GUI_NONE; | |||
| } | |||
| virtual double get_current_parameter_value(uint32_t index) | |||
| { | |||
| return param_buffers[index]; | |||
| } | |||
| virtual void set_parameter_value(uint32_t index, double value, bool gui_send, bool osc_send, bool callback_send) | |||
| { | |||
| param_buffers[index] = value; | |||
| @@ -1093,6 +1096,26 @@ public: | |||
| m_active_before = m_active; | |||
| } | |||
| virtual void delete_buffers() | |||
| { | |||
| qDebug("DssiPlugin::delete_buffers() - start"); | |||
| if (ain.count > 0) | |||
| delete[] ain_rindexes; | |||
| if (aout.count > 0) | |||
| delete[] aout_rindexes; | |||
| if (param.count > 0) | |||
| delete[] param_buffers; | |||
| ain_rindexes = nullptr; | |||
| aout_rindexes = nullptr; | |||
| param_buffers = nullptr; | |||
| qDebug("DssiPlugin::delete_buffers() - end"); | |||
| } | |||
| bool init(const char* filename, const char* label, void* extra_stuff) | |||
| { | |||
| if (lib_open(filename)) | |||
| @@ -72,6 +72,10 @@ public: | |||
| handle = nullptr; | |||
| descriptor = nullptr; | |||
| rdf_descriptor = nullptr; | |||
| ain_rindexes = nullptr; | |||
| aout_rindexes = nullptr; | |||
| param_buffers = nullptr; | |||
| } | |||
| virtual ~LadspaPlugin() | |||
| @@ -147,6 +151,11 @@ public: | |||
| return 0; | |||
| } | |||
| virtual double get_parameter_value(uint32_t param_id) | |||
| { | |||
| return param_buffers[param_id]; | |||
| } | |||
| virtual double get_parameter_scalepoint_value(uint32_t param_id, uint32_t scalepoint_id) | |||
| { | |||
| int32_t param_rindex = param.data[param_id].rindex; | |||
| @@ -181,15 +190,15 @@ public: | |||
| strncpy(buf_str, descriptor->Name, STR_MAX); | |||
| } | |||
| virtual void get_parameter_name(uint32_t index, char* buf_str) | |||
| virtual void get_parameter_name(uint32_t param_id, char* buf_str) | |||
| { | |||
| int32_t rindex = param.data[index].rindex; | |||
| int32_t rindex = param.data[param_id].rindex; | |||
| strncpy(buf_str, descriptor->PortNames[rindex], STR_MAX); | |||
| } | |||
| virtual void get_parameter_symbol(uint32_t index, char* buf_str) | |||
| virtual void get_parameter_symbol(uint32_t param_id, char* buf_str) | |||
| { | |||
| int32_t rindex = param.data[index].rindex; | |||
| int32_t rindex = param.data[param_id].rindex; | |||
| bool HasPortRDF = (rdf_descriptor && rindex < (int32_t)rdf_descriptor->PortCount); | |||
| if (HasPortRDF) | |||
| @@ -204,9 +213,9 @@ public: | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_label(uint32_t index, char* buf_str) | |||
| virtual void get_parameter_label(uint32_t param_id, char* buf_str) | |||
| { | |||
| int32_t rindex = param.data[index].rindex; | |||
| int32_t rindex = param.data[param_id].rindex; | |||
| bool HasPortRDF = (rdf_descriptor && rindex < (int32_t)rdf_descriptor->PortCount); | |||
| if (HasPortRDF) | |||
| @@ -240,22 +249,17 @@ public: | |||
| *buf_str = 0; | |||
| } | |||
| virtual void get_parameter_scalepoint_label(uint32_t pindex, uint32_t index, char* buf_str) | |||
| virtual void get_parameter_scalepoint_label(uint32_t param_id, uint32_t scalepoint_id, char* buf_str) | |||
| { | |||
| int32_t prindex = param.data[pindex].rindex; | |||
| int32_t param_rindex = param.data[param_id].rindex; | |||
| bool HasPortRDF = (rdf_descriptor && prindex < (int32_t)rdf_descriptor->PortCount); | |||
| bool HasPortRDF = (rdf_descriptor && param_rindex < (int32_t)rdf_descriptor->PortCount); | |||
| if (HasPortRDF) | |||
| strncpy(buf_str, rdf_descriptor->Ports[prindex].ScalePoints[index].Label, STR_MAX); | |||
| strncpy(buf_str, rdf_descriptor->Ports[param_rindex].ScalePoints[scalepoint_id].Label, STR_MAX); | |||
| else | |||
| *buf_str = 0; | |||
| } | |||
| virtual double get_current_parameter_value(uint32_t index) | |||
| { | |||
| return param_buffers[index]; | |||
| } | |||
| virtual void set_parameter_value(uint32_t index, double value, bool gui_send, bool osc_send, bool callback_send) | |||
| { | |||
| param_buffers[index] = value; | |||
| @@ -866,6 +870,26 @@ public: | |||
| m_active_before = m_active; | |||
| } | |||
| virtual void delete_buffers() | |||
| { | |||
| qDebug("LadspaPlugin::delete_buffers() - start"); | |||
| if (ain.count > 0) | |||
| delete[] ain_rindexes; | |||
| if (aout.count > 0) | |||
| delete[] aout_rindexes; | |||
| if (param.count > 0) | |||
| delete[] param_buffers; | |||
| ain_rindexes = nullptr; | |||
| aout_rindexes = nullptr; | |||
| param_buffers = nullptr; | |||
| qDebug("LadspaPlugin::delete_buffers() - end"); | |||
| } | |||
| bool init(const char* filename, const char* label, void* extra_stuff) | |||
| { | |||
| if (lib_open(filename)) | |||
| @@ -120,6 +120,7 @@ public: | |||
| custom_uri_ids.clear(); | |||
| } | |||
| #if 0 | |||
| virtual PluginCategory category() | |||
| { | |||
| LV2_Property Category = rdf_descriptor->Type; | |||
| @@ -287,6 +288,7 @@ public: | |||
| qDebug("Lv2Plugin::lv2_delete_buffers() - end"); | |||
| } | |||
| #endif | |||
| bool init(const char* filename, const char* URI, void* extra_stuff) | |||
| { | |||
| @@ -48,6 +48,7 @@ public: | |||
| delete_fluid_settings(f_settings); | |||
| } | |||
| #if 0 | |||
| virtual PluginCategory category() | |||
| { | |||
| return PLUGIN_CATEGORY_SYNTH; | |||
| @@ -1002,6 +1003,7 @@ public: | |||
| active_before = active; | |||
| #endif | |||
| } | |||
| #endif | |||
| bool init(const char* filename, const char* label) | |||
| { | |||
| @@ -78,6 +78,7 @@ public: | |||
| } | |||
| } | |||
| #if 0 | |||
| virtual PluginCategory category() | |||
| { | |||
| intptr_t VstCategory = effect->dispatcher(effect, effGetPlugCategory, 0, 0, nullptr, 0.0f); | |||
| @@ -129,6 +130,7 @@ public: | |||
| { | |||
| effect->dispatcher(effect, effGetEffectName, 0, 0, buf_str, 0.0f); | |||
| } | |||
| #endif | |||
| private: | |||
| AEffect* effect; | |||
| @@ -191,6 +191,11 @@ carla_discovery_unix64 = "" | |||
| carla_discovery_win32 = "" | |||
| carla_discovery_win64 = "" | |||
| carla_bridge_unix32 = "" | |||
| carla_bridge_unix64 = "" | |||
| carla_bridge_win32 = "" | |||
| carla_bridge_win64 = "" | |||
| #carla_bridge_lv2_gtk2 = "" | |||
| #carla_bridge_lv2_qt4 = "" | |||
| #carla_bridge_lv2_x11 = "" | |||
| @@ -246,6 +251,42 @@ else: | |||
| carla_discovery_win64 = os.path.join(p, "carla-discovery-win64.exe") | |||
| break | |||
| # bridge-unix32 | |||
| if (os.path.exists(os.path.join(CWD, "carla-bridge", "carla-bridge-unix32"))): | |||
| carla_bridge_unix32 = os.path.join(CWD, "carla-bridge", "carla-bridge-unix32") | |||
| else: | |||
| for p in PATH: | |||
| if (os.path.exists(os.path.join(p, "carla-bridge-unix32"))): | |||
| carla_bridge_unix32 = os.path.join(p, "carla-bridge-unix32") | |||
| break | |||
| # bridge-unix64 | |||
| if (os.path.exists(os.path.join(CWD, "carla-bridge", "carla-bridge-unix64"))): | |||
| carla_bridge_unix64 = os.path.join(CWD, "carla-bridge", "carla-bridge-unix64") | |||
| else: | |||
| for p in PATH: | |||
| if (os.path.exists(os.path.join(p, "carla-bridge-unix64"))): | |||
| carla_bridge_unix64 = os.path.join(p, "carla-bridge-unix64") | |||
| break | |||
| # bridge-win32 | |||
| if (os.path.exists(os.path.join(CWD, "carla-bridge", "carla-bridge-win32.exe"))): | |||
| carla_bridge_win32 = os.path.join(CWD, "carla-bridge", "carla-bridge-win32.exe") | |||
| else: | |||
| for p in PATH: | |||
| if (os.path.exists(os.path.join(p, "carla-bridge-wine32.exe"))): | |||
| carla_bridge_win32 = os.path.join(p, "carla-bridge-win32.exe") | |||
| break | |||
| # bridge-win64 | |||
| if (os.path.exists(os.path.join(CWD, "carla-bridge", "carla-bridge-win64.exe"))): | |||
| carla_bridge_win64 = os.path.join(CWD, "carla-bridge", "carla-bridge-win64.exe") | |||
| else: | |||
| for p in PATH: | |||
| if (os.path.exists(os.path.join(p, "carla-bridge-win64.exe"))): | |||
| carla_bridge_win64 = os.path.join(p, "carla-bridge-win64.exe") | |||
| break | |||
| ## lv2-gtk2 | |||
| #if (os.path.exists(os.path.join(CWD, "carla-bridges", "carla-bridge-lv2-gtk2"))): | |||
| #carla_bridge_lv2_gtk2 = os.path.join(CWD, "carla-bridges", "carla-bridge-lv2-gtk2") | |||
| @@ -295,12 +336,10 @@ print("carla_discovery_unix32 ->", carla_discovery_unix32) | |||
| print("carla_discovery_unix64 ->", carla_discovery_unix64) | |||
| print("carla_discovery_win32 ->", carla_discovery_win32) | |||
| print("carla_discovery_win64 ->", carla_discovery_win64) | |||
| print("LADSPA ->", DEFAULT_LADSPA_PATH) | |||
| print("DSSI ->", DEFAULT_DSSI_PATH) | |||
| print("LV2 ->", DEFAULT_LV2_PATH) | |||
| print("VST ->", DEFAULT_VST_PATH) | |||
| print("SF2 ->", DEFAULT_SF2_PATH) | |||
| print("carla_bridge_unix32 ->", carla_bridge_unix32) | |||
| print("carla_bridge_unix64 ->", carla_bridge_unix64) | |||
| print("carla_bridge_win32 ->", carla_bridge_win32) | |||
| print("carla_bridge_win64 ->", carla_bridge_win64) | |||
| # ------------------------------------------------------------------------------------------------ | |||
| # Plugin Query (helper functions) | |||
| @@ -657,6 +696,10 @@ GUI_EXTERNAL_LV2 = 4 | |||
| OPTION_GLOBAL_JACK_CLIENT = 1 | |||
| OPTION_USE_DSSI_CHUNKS = 2 | |||
| OPTION_PREFER_UI_BRIDGES = 3 | |||
| OPTION_PATH_BRIDGE_UNIX32 = 4 | |||
| OPTION_PATH_BRIDGE_UNIX64 = 5 | |||
| OPTION_PATH_BRIDGE_WIN32 = 6 | |||
| OPTION_PATH_BRIDGE_WIN64 = 7 | |||
| # enum CallbackType | |||
| CALLBACK_DEBUG = 0 | |||
| @@ -760,7 +803,9 @@ class PluginBridgeInfo(Structure): | |||
| ("maker", c_char_p), | |||
| ("unique_id", c_long), | |||
| ("ains", c_uint32), | |||
| ("aouts", c_uint32) | |||
| ("aouts", c_uint32), | |||
| ("mins", c_uint32), | |||
| ("mouts", c_uint32) | |||
| ] | |||
| CallbackFunc = CFUNCTYPE(None, c_enum, c_ushort, c_int, c_int, c_double) | |||