From 5530a8a97f541f49c2b84b652dba854445394ae2 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 9 May 2012 17:26:47 +0100 Subject: [PATCH] Carla misc fixing, disable debug --- src/carla-bridge-ui/Makefile | 4 +- src/carla.py | 91 +++++++++++++++++++----------------- src/carla/Makefile | 4 +- src/carla/lv2.cpp | 2 +- src/carla_backend.py | 6 +-- 5 files changed, 54 insertions(+), 53 deletions(-) diff --git a/src/carla-bridge-ui/Makefile b/src/carla-bridge-ui/Makefile index 06f02a1..8ee9c72 100644 --- a/src/carla-bridge-ui/Makefile +++ b/src/carla-bridge-ui/Makefile @@ -8,8 +8,8 @@ CXX ?= g++ WINECXX ?= wineg++ BUILD_FLAGS = -DBUILD_BRIDGE -DBUILD_BRIDGE_UI -Wall -std=c++0x -I. -I../carla-includes -I../carla-bridge `pkg-config --cflags liblo QtCore` $(CXXFLAGS) -# BUILD_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse -BUILD_FLAGS += -DDEBUG -O0 -g +BUILD_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -ffast-math -fomit-frame-pointer -mtune=generic -msse +# BUILD_FLAGS += -DDEBUG -O0 -g BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header LINK_FLAGS = `pkg-config --cflags --libs liblo QtCore` -ldl -lpthread $(LDFLAGS) diff --git a/src/carla.py b/src/carla.py index a26880b..fa1b5fd 100755 --- a/src/carla.py +++ b/src/carla.py @@ -223,12 +223,9 @@ def getStateDictFromXML(xml_node): if ctag == "type": x_save_state_custom_data['type'] = CustomDataString2Type(ctext) elif ctag == "key": - x_save_state_custom_data['key'] = ctext + x_save_state_custom_data['key'] = ctext.replace("&", "&").replace("<","<").replace(">",">").replace("'","\\").replace(""","\"") elif ctag == "value": - if (x_save_state_custom_data['type'] == CUSTOM_DATA_STRING): - x_save_state_custom_data['value'] = ctext.replace("&", "&").replace("<","<").replace(">",">").replace("\\","'").replace("\"",""") - else: - x_save_state_custom_data['value'] = ctext + x_save_state_custom_data['value'] = ctext.replace("&", "&").replace("<","<").replace(">",">").replace("'","\\").replace(""","\"") xml_subdata = xml_subdata.nextSibling() @@ -941,16 +938,14 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): self.tableWidget.setSortingEnabled(True) self.tableWidget.sortByColumn(0, Qt.AscendingOrder) - self.label.setText(self.tr("Have %i LADSPA, %i DSSI, %i LV2, %i VST and %i SoundFonts" % ( - ladspa_count, dssi_count, lv2_count, vst_count, sf2_count))) + self.label.setText(self.tr("Have %i LADSPA, %i DSSI, %i LV2, %i VST and %i SoundFonts" % (ladspa_count, dssi_count, lv2_count, vst_count, sf2_count))) def addPluginToTable(self, plugin, ptype): index = self.last_table_index if ("build" not in plugin.keys()): if (self.warning_old_shown == False): - QMessageBox.warning(self, self.tr("Warning"), - self.tr("You're using a Carla-Database from an old version of Carla, please update the plugins")) + QMessageBox.warning(self, self.tr("Warning"), self.tr("You're using a Carla-Database from an old version of Carla, please update the plugins")) self.warning_old_shown = True return @@ -984,10 +979,8 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): self.tableWidget.setItem(index, 6, QTableWidgetItem(str(plugin['parameters.ins']))) self.tableWidget.setItem(index, 7, QTableWidgetItem(str(plugin['parameters.outs']))) self.tableWidget.setItem(index, 8, QTableWidgetItem(str(plugin['programs.total']))) - self.tableWidget.setItem(index, 9, - QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_HAS_GUI) else self.tr("No"))) - self.tableWidget.setItem(index, 10, - QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_IS_SYNTH) else self.tr("No"))) + self.tableWidget.setItem(index, 9, QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_HAS_GUI) else self.tr("No"))) + self.tableWidget.setItem(index, 10, QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_IS_SYNTH) else self.tr("No"))) self.tableWidget.setItem(index, 11, QTableWidgetItem(bridge_text)) self.tableWidget.setItem(index, 12, QTableWidgetItem(ptype)) self.tableWidget.setItem(index, 13, QTableWidgetItem(plugin['binary'])) @@ -2271,7 +2264,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): # Basic info x_save_state_dict['Type'] = type_str - x_save_state_dict['Name'] = self.pinfo['name'] # c_string(CarlaHost.get_real_plugin_name(self.plugin_id)) + x_save_state_dict['Name'] = self.pinfo['name'] x_save_state_dict['Label'] = self.pinfo['label'] x_save_state_dict['Binary'] = self.pinfo['binary'] x_save_state_dict['UniqueID'] = self.pinfo['unique_id'] @@ -2341,9 +2334,9 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): x_save_state_custom_data = deepcopy(save_state_custom_data) - x_save_state_custom_data['type'] = CustomDataType2String(custom_data['type']) - x_save_state_custom_data['key'] = c_string(custom_data['key']) - x_save_state_custom_data['value'] = c_string(custom_data['value']) + x_save_state_custom_data['type'] = CustomDataType2String(custom_data['type']) + x_save_state_custom_data['key'] = c_string(custom_data['key']).replace("&", "&").replace("<","<").replace(">",">").replace("\\","'").replace("\"",""") + x_save_state_custom_data['value'] = c_string(custom_data['value']).replace("&", "&").replace("<","<").replace(">",">").replace("\\","'").replace("\"",""") x_save_state_dict['CustomData'].append(x_save_state_custom_data) @@ -2369,7 +2362,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): content += " \n" % (x_save_state_dict['Label']) content += " %s\n" % (x_save_state_dict['Binary']) if (x_save_state_dict['UniqueID'] != 0): - content += " %li\n" % (x_save_state_dict['UniqueID']) + content += " %li\n" % x_save_state_dict['UniqueID'] content += " \n" content += "\n" @@ -2408,7 +2401,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): content += " \n" content += " %s\n" % (custom_data['type']) content += " %s\n" % (custom_data['key']) - if (custom_data['type'] == CUSTOM_DATA_BINARY): + if (custom_data['type'] in ("string", "binary")): content += " \n" content += "%s\n" % (custom_data['value']) content += " \n" @@ -2427,36 +2420,42 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): return content def loadStateDict(self, content): + # --------------------------------------------------------------------- # Part 1 - set custom data for custom_data in content['CustomData']: CarlaHost.set_custom_data(self.plugin_id, custom_data['type'], custom_data['key'], custom_data['value']) - ## Part 2 - set program (carefully) - #program_id = -1 - #program_count = CarlaHost.get_program_count(self.plugin_id) - - #if (content['ProgramName']): - #test_pname = CarlaHost.get_program_name(self.plugin_id, content['ProgramIndex']) - - #if (content['ProgramName'] == test_pname): - #program_id = content['ProgramIndex'] - #else: - #for i in range(program_count): - #new_test_pname = CarlaHost.get_program_name(self.plugin_id, i) - #if (content['ProgramName'] == new_test_pname): - #program_id = i - #break - #else: - #if (content['ProgramIndex'] < program_count): - #program_id = content['ProgramIndex'] - #else: - #if (content['ProgramIndex'] < program_count): - #program_id = content['ProgramIndex'] - - #if (program_id >= 0): - #CarlaHost.set_program(self.plugin_id, program_id) - #self.edit_dialog.set_program(program_id) + # --------------------------------------------------------------------- + # Part 2 - set program + program_id = -1 + program_count = CarlaHost.get_program_count(self.plugin_id) + + if (content['CurrentProgramName']): + test_pname = c_string(CarlaHost.get_program_name(self.plugin_id, content['CurrentProgramIndex'])) + + # Program index and name matches + if (content['CurrentProgramName'] == test_pname): + program_id = content['CurrentProgramIndex'] + + # index < count + elif (content['CurrentProgramIndex'] < program_count): + program_id = content['CurrentProgramIndex'] + + # index not valid, try to find by name + else: + for i in range(program_count): + test_pname = c_string(CarlaHost.get_program_name(self.plugin_id, i)) + + if (content['CurrentProgramName'] == test_pname): + program_id = i + break + + # set program now, if valid + if (program_id >= 0): + CarlaHost.set_program(self.plugin_id, program_id) + self.edit_dialog.set_program(program_id) + # --------------------------------------------------------------------- # Part 3 - set midi program if (content['CurrentMidiBank'] >= 0 and content['CurrentMidiProgram'] >= 0): midi_program_count = CarlaHost.get_midi_program_count(self.plugin_id) @@ -2469,6 +2468,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): self.edit_dialog.set_midi_program(i) break + # --------------------------------------------------------------------- # Part 4a - get plugin parameter symbols param_symbols = [] # (index, symbol) @@ -2479,6 +2479,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): if (param_info['valid'] and param_info['symbol']): param_symbols.append((parameter['index'], c_string(param_info['symbol']))) + # --------------------------------------------------------------------- # Part 4b - set parameter values (carefully) for parameter in content['Parameters']: index = -1 @@ -2524,10 +2525,12 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): else: print("Could not set parameter data for %i -> %s" % (parameter['index'], parameter['name'])) + # --------------------------------------------------------------------- # Part 5 - set chunk data if (content['Chunk']): CarlaHost.set_chunk_data(self.plugin_id, content['Chunk']) + # --------------------------------------------------------------------- # Part 6 - set internal stuff self.set_drywet(content['DryWet'] * 1000, True, True) self.set_volume(content['Volume'] * 1000, True, True) diff --git a/src/carla/Makefile b/src/carla/Makefile index f3ce855..08dc677 100644 --- a/src/carla/Makefile +++ b/src/carla/Makefile @@ -10,8 +10,8 @@ CXX ?= g++ CARLA_C_FLAGS = -Wall -fPIC -I. -I../carla-includes $(CFLAGS) CARLA_CXX_FLAGS = -Wall -std=c++0x -fPIC -I. -I../carla-includes `pkg-config --cflags jack fluidsynth liblo QtCore QtGui` $(CXXFLAGS) CARLA_CXX_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header -# CARLA_CXX_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -ffast-math -fomit-frame-pointer -fvisibility=hidden -mtune=generic -msse -CARLA_CXX_FLAGS += -DDEBUG -O0 -g +CARLA_CXX_FLAGS += -DNDEBUG -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -O2 -ffast-math -fomit-frame-pointer -fvisibility=hidden -mtune=generic -msse +# CARLA_CXX_FLAGS += -DDEBUG -O0 -g CARLA_LINK_FLAGS = -shared -fPIC -ldl `pkg-config --libs jack fluidsynth liblo QtCore QtGui` $(LDFLAGS) OBJS = carla_backend.o carla_bridge.o carla_jack.o carla_osc.o carla_shared.o carla_threads.o ladspa.o dssi.o lv2.o vst.o sf2.o lv2-rtmempool/rtmempool.o diff --git a/src/carla/lv2.cpp b/src/carla/lv2.cpp index b63f458..48bb716 100644 --- a/src/carla/lv2.cpp +++ b/src/carla/lv2.cpp @@ -2251,7 +2251,7 @@ public: { ext.uiprograms = (LV2_Programs_UI_Interface*)ui.descriptor->extension_data(LV2_PROGRAMS__UIInterface); - if (ext.uiprograms) + if (ext.uiprograms && midiprog.count > 0 && midiprog.current >= 0) ext.uiprograms->select_program(ui.handle, midiprog.data[midiprog.current].bank, midiprog.data[midiprog.current].program); } diff --git a/src/carla_backend.py b/src/carla_backend.py index 17d4bdf..31b5c15 100644 --- a/src/carla_backend.py +++ b/src/carla_backend.py @@ -20,9 +20,7 @@ import os, sys from ctypes import * from copy import deepcopy - -if sys.version_info > (3,0): - from subprocess import Popen, PIPE +from subprocess import Popen, PIPE # Imports (Custom) from shared import * @@ -34,7 +32,7 @@ except: print("LRDF Support not available (LADSPA-RDF will be disabled)") haveLRDF = False -if sys.version_info > (3,0) and sys.int_info[1] == 4: +if sys.int_info[1] == 4: is64bit = True c_uintptr = c_uint64 else: