| @@ -26,16 +26,17 @@ claudia: src/ui_claudia.py \ | |||
| src/ui_claudia_runcustom.py | |||
| # src/ui_claudia_addnew.py src/ui_claudia_addnew_klaudia.py | |||
| carla: carla_backend carla_bridges carla_discovery carla_gui | |||
| carla: carla_backend carla_bridge_ui carla_discovery carla_gui | |||
| carla_backend: | |||
| $(MAKE) -C src/carla-lilv | |||
| $(MAKE) -C src/carla | |||
| carla_bridges: | |||
| # $(MAKE) native$(_arch_n) -C src/carla-bridges | |||
| carla_bridge_ui: | |||
| $(MAKE) -C src/carla-bridge-ui | |||
| carla_discovery: | |||
| $(MAKE) -C src/carla-lilv | |||
| # $(MAKE) native$(_arch_n) -C src/carla-discovery | |||
| carla_gui: src/ui_carla.py src/ui_carla_control.py \ | |||
| @@ -42,6 +42,12 @@ | |||
| #include "ladspa/ladspa.h" | |||
| #include "dssi/dssi.h" | |||
| #include "lv2/atom.h" | |||
| #include "lv2/event.h" | |||
| #include "lv2/midi.h" | |||
| #include "lilv/lilvmm.hpp" | |||
| #define LV2_MIDI_LL__MidiPort "http://ll-plugins.nongnu.org/lv2/ext/MidiPort" | |||
| #define VST_FORCE_DEPRECATED 0 | |||
| #include "aeffectx.h" | |||
| @@ -287,8 +293,6 @@ intptr_t VstHostCallback(AEffect* effect, int32_t opcode, int32_t index, intptr_ | |||
| // ------------------------------ Plugin Check ------------------------------ | |||
| void do_ladspa_check(void* lib_handle) | |||
| { | |||
| LADSPA_Handle handle; | |||
| const LADSPA_Descriptor* descriptor; | |||
| LADSPA_Descriptor_Function descfn = (LADSPA_Descriptor_Function)lib_symbol(lib_handle, "ladspa_descriptor"); | |||
| if (descfn == nullptr) | |||
| @@ -298,9 +302,11 @@ void do_ladspa_check(void* lib_handle) | |||
| } | |||
| unsigned long i = 0; | |||
| const LADSPA_Descriptor* descriptor; | |||
| while ((descriptor = descfn(i++))) | |||
| { | |||
| handle = descriptor->instantiate(descriptor, sampleRate); | |||
| LADSPA_Handle handle = descriptor->instantiate(descriptor, sampleRate); | |||
| if (handle) | |||
| { | |||
| @@ -503,9 +509,6 @@ void do_ladspa_check(void* lib_handle) | |||
| void do_dssi_check(void* lib_handle) | |||
| { | |||
| LADSPA_Handle handle; | |||
| const LADSPA_Descriptor* ldescriptor; | |||
| const DSSI_Descriptor* descriptor; | |||
| DSSI_Descriptor_Function descfn = (DSSI_Descriptor_Function)lib_symbol(lib_handle, "dssi_descriptor"); | |||
| if (descfn == nullptr) | |||
| @@ -515,10 +518,12 @@ void do_dssi_check(void* lib_handle) | |||
| } | |||
| unsigned long i = 0; | |||
| const DSSI_Descriptor* descriptor; | |||
| while ((descriptor = descfn(i++))) | |||
| { | |||
| ldescriptor = descriptor->LADSPA_Plugin; | |||
| handle = ldescriptor->instantiate(ldescriptor, sampleRate); | |||
| const LADSPA_Descriptor* ldescriptor = descriptor->LADSPA_Plugin; | |||
| LADSPA_Handle handle = ldescriptor->instantiate(ldescriptor, sampleRate); | |||
| if (handle) | |||
| { | |||
| @@ -758,6 +763,145 @@ void do_dssi_check(void* lib_handle) | |||
| } | |||
| } | |||
| void do_lv2_check(const char* bundle) | |||
| { | |||
| std::string sbundle; | |||
| sbundle += "file://"; | |||
| sbundle += bundle; | |||
| Lilv::World World; | |||
| Lilv::Node Bundle(lilv_new_uri(World.me, sbundle.c_str())); | |||
| World.load_bundle(Bundle); | |||
| Lilv::Node AtomBufferTypes = Lilv::Node(lilv_new_uri(World.me, LV2_ATOM__bufferType)); | |||
| Lilv::Node EventTypeMidi = Lilv::Node(lilv_new_uri(World.me, LV2_MIDI__MidiEvent)); | |||
| Lilv::Node PortTypeInput = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__InputPort)); | |||
| Lilv::Node PortTypeOutput = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__OutputPort)); | |||
| Lilv::Node PortTypeAudio = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__AudioPort)); | |||
| Lilv::Node PortTypeControl = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__ControlPort)); | |||
| Lilv::Node PortTypeAtom = Lilv::Node(lilv_new_uri(World.me, LV2_ATOM__AtomPort)); | |||
| Lilv::Node PortTypeEvent = Lilv::Node(lilv_new_uri(World.me, LV2_EVENT__EventPort)); | |||
| Lilv::Node PortTypeMidiLL = Lilv::Node(lilv_new_uri(World.me, LV2_MIDI_LL__MidiPort)); | |||
| Lilv::Node PortPropertyLatency = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__latency)); | |||
| const Lilv::Plugins Plugins = World.get_all_plugins(); | |||
| LILV_FOREACH(plugins, i, Plugins) | |||
| { | |||
| Lilv::Plugin p(lilv_plugins_get(Plugins, i)); | |||
| //Lilv::Nodes requiredFeatures(p.get_required_features()); | |||
| // check | |||
| const char* filename = lilv_uri_to_path(p.get_library_uri().as_string()); | |||
| // test if DLL is loadable | |||
| void* lib_handle = lib_open(filename); | |||
| if (lib_handle == nullptr) | |||
| { | |||
| DISCOVERY_OUT("error", lib_error(filename)); | |||
| continue; | |||
| } | |||
| lib_close(lib_handle); | |||
| int hints = 0; | |||
| PluginCategory category = PLUGIN_CATEGORY_NONE; | |||
| int audio_ins = 0; | |||
| int audio_outs = 0; | |||
| int audio_total = 0; | |||
| int midi_ins = 0; | |||
| int midi_outs = 0; | |||
| int midi_total = 0; | |||
| int parameters_ins = 0; | |||
| int parameters_outs = 0; | |||
| int parameters_total = 0; | |||
| int programs_total = 0; | |||
| for (unsigned j=0; j < p.get_num_ports(); j++) | |||
| { | |||
| Lilv::Port Port = p.get_port_by_index(j); | |||
| if (Port.is_a(PortTypeAudio)) | |||
| { | |||
| if (Port.is_a(PortTypeInput)) | |||
| audio_ins += 1; | |||
| else if (Port.is_a(PortTypeOutput)) | |||
| audio_ins += 1; | |||
| audio_total += 1; | |||
| } | |||
| else if (Port.is_a(PortTypeControl)) | |||
| { | |||
| if (Port.is_a(PortTypeInput)) | |||
| parameters_ins += 1; | |||
| else if (Port.is_a(PortTypeOutput)) | |||
| { | |||
| if (Port.has_property(PortPropertyLatency) == false) | |||
| parameters_ins += 1; | |||
| } | |||
| parameters_total += 1; | |||
| } | |||
| else if (Port.is_a(PortTypeAtom)) | |||
| { | |||
| Lilv::Nodes bufferTypes(Port.get_value(AtomBufferTypes)); | |||
| if (bufferTypes.contains(EventTypeMidi)) | |||
| { | |||
| if (Port.is_a(PortTypeInput)) | |||
| midi_ins += 1; | |||
| else if (Port.is_a(PortTypeOutput)) | |||
| midi_ins += 1; | |||
| midi_total += 1; | |||
| } | |||
| } | |||
| else if (Port.is_a(PortTypeEvent)) | |||
| { | |||
| if (Port.supports_event(EventTypeMidi)) | |||
| { | |||
| if (Port.is_a(PortTypeInput)) | |||
| midi_ins += 1; | |||
| else if (Port.is_a(PortTypeOutput)) | |||
| midi_ins += 1; | |||
| midi_total += 1; | |||
| } | |||
| } | |||
| else if (Port.is_a(PortTypeMidiLL)) | |||
| { | |||
| if (Port.is_a(PortTypeInput)) | |||
| midi_ins += 1; | |||
| else if (Port.is_a(PortTypeOutput)) | |||
| midi_ins += 1; | |||
| midi_total += 1; | |||
| } | |||
| } | |||
| DISCOVERY_OUT("init", "-----------"); | |||
| DISCOVERY_OUT("name", p.get_name().as_string()); | |||
| DISCOVERY_OUT("label", p.get_uri().as_string()); | |||
| DISCOVERY_OUT("maker", p.get_author_name().as_string()); | |||
| //DISCOVERY_OUT("copyright", ldescriptor->Copyright); | |||
| //DISCOVERY_OUT("unique_id", ldescriptor->UniqueID); | |||
| DISCOVERY_OUT("hints", hints); | |||
| DISCOVERY_OUT("category", category); | |||
| DISCOVERY_OUT("audio.ins", audio_ins); | |||
| DISCOVERY_OUT("audio.outs", audio_outs); | |||
| DISCOVERY_OUT("audio.total", audio_total); | |||
| DISCOVERY_OUT("midi.ins", midi_ins); | |||
| DISCOVERY_OUT("midi.outs", midi_outs); | |||
| DISCOVERY_OUT("midi.total", midi_total); | |||
| DISCOVERY_OUT("parameters.ins", parameters_ins); | |||
| DISCOVERY_OUT("parameters.outs", parameters_outs); | |||
| DISCOVERY_OUT("parameters.total", parameters_total); | |||
| DISCOVERY_OUT("programs.total", programs_total); | |||
| DISCOVERY_OUT("build", BINARY_TYPE); | |||
| DISCOVERY_OUT("end", "------------"); | |||
| } | |||
| } | |||
| void do_vst_check(void* lib_handle) | |||
| { | |||
| VST_Function vstfn = (VST_Function)lib_symbol(lib_handle, "VSTPluginMain"); | |||
| @@ -1072,6 +1216,11 @@ int main(int argc, char* argv[]) | |||
| open_lib = true; | |||
| type = PLUGIN_DSSI; | |||
| } | |||
| else if (strcmp(type_str, "LV2") == 0) | |||
| { | |||
| open_lib = false; | |||
| type = PLUGIN_LV2; | |||
| } | |||
| else if (strcmp(type_str, "VST") == 0) | |||
| { | |||
| open_lib = true; | |||
| @@ -1110,6 +1259,9 @@ int main(int argc, char* argv[]) | |||
| case PLUGIN_DSSI: | |||
| do_dssi_check(handle); | |||
| break; | |||
| case PLUGIN_LV2: | |||
| do_lv2_check(filename); | |||
| break; | |||
| case PLUGIN_VST: | |||
| do_vst_check(handle); | |||
| break; | |||
| @@ -8,6 +8,9 @@ VERSION = 0.5.0 | |||
| SOURCES = \ | |||
| ../carla-discovery.cpp | |||
| HEADERS = \ | |||
| ../../carla-includes/carla_includes.h | |||
| INCLUDEPATH = .. \ | |||
| ../../carla-includes \ | |||
| ../../carla-includes/vestige | |||
| @@ -16,4 +19,4 @@ TARGET = carla-discovery-qtcreator | |||
| DEFINES = VESTIGE_HEADER BUILD_UNIX64 | |||
| LIBS += -ldl | |||
| LIBS += ../../carla-lilv/carla_lilv.a -ldl | |||
| @@ -53,11 +53,13 @@ | |||
| // needed for qDebug/Warning/Critical sections | |||
| #if __WORDSIZE == 64 | |||
| # define P_INTPTR "%li" | |||
| # define P_SIZE "%lu" | |||
| # define P_INTPTR "%li" | |||
| # define P_UINTPTR "%llu" | |||
| # define P_SIZE "%lu" | |||
| #else | |||
| # define P_INTPTR "%i" | |||
| # define P_SIZE "%u" | |||
| # define P_INTPTR "%i" | |||
| # define P_UINTPTR "%lu" | |||
| # define P_SIZE "%u" | |||
| #endif | |||
| // set native binary type | |||
| @@ -435,7 +435,7 @@ ParameterData* get_parameter_data(unsigned short plugin_id, uint32_t parameter_i | |||
| { | |||
| qDebug("get_parameter_data(%i, %i)", plugin_id, parameter_id); | |||
| static ParameterData data = { PARAMETER_UNKNOWN, -1, -1, 0, 0, -1 }; | |||
| static ParameterData data = { PARAMETER_UNKNOWN, /*-1,*/ -1, 0, 0, -1 }; | |||
| for (unsigned short i=0; i<MAX_PLUGINS; i++) | |||
| { | |||
| @@ -1024,9 +1024,9 @@ void set_chunk_data(unsigned short plugin_id, const char* chunk_data) | |||
| qCritical("set_chunk_data(%i, %s) - could not find plugin", plugin_id, chunk_data); | |||
| } | |||
| void set_gui_data(unsigned short plugin_id, int data, intptr_t gui_addr) | |||
| void set_gui_data(unsigned short plugin_id, int data, quintptr gui_addr) | |||
| { | |||
| qDebug("set_gui_data(%i, %i, " P_INTPTR ")", plugin_id, data, gui_addr); | |||
| qDebug("set_gui_data(%i, %i, " P_UINTPTR ")", plugin_id, data, gui_addr); | |||
| for (unsigned short i=0; i<MAX_PLUGINS; i++) | |||
| { | |||
| @@ -1042,7 +1042,7 @@ void set_gui_data(unsigned short plugin_id, int data, intptr_t gui_addr) | |||
| } | |||
| } | |||
| qCritical("set_gui_data(%i, %i, " P_INTPTR ") - could not find plugin", plugin_id, data, gui_addr); | |||
| qCritical("set_gui_data(%i, %i, " P_UINTPTR ") - could not find plugin", plugin_id, data, gui_addr); | |||
| } | |||
| void show_gui(unsigned short plugin_id, bool yesno) | |||
| @@ -32,19 +32,22 @@ const unsigned int MAX_PARAMETERS = 200; | |||
| const unsigned int MAX_MIDI_EVENTS = 512; | |||
| // plugin hints | |||
| const unsigned int PLUGIN_HAS_GUI = 0x01; | |||
| const unsigned int PLUGIN_IS_BRIDGE = 0x02; | |||
| const unsigned int PLUGIN_IS_SYNTH = 0x04; | |||
| const unsigned int PLUGIN_IS_BRIDGE = 0x01; | |||
| const unsigned int PLUGIN_IS_SYNTH = 0x02; | |||
| const unsigned int PLUGIN_HAS_GUI = 0x04; | |||
| const unsigned int PLUGIN_USES_CHUNKS = 0x08; | |||
| const unsigned int PLUGIN_CAN_DRYWET = 0x10; | |||
| const unsigned int PLUGIN_CAN_VOLUME = 0x20; | |||
| const unsigned int PLUGIN_CAN_BALANCE = 0x40; | |||
| // parameter hints | |||
| const unsigned int PARAMETER_IS_ENABLED = 0x01; | |||
| const unsigned int PARAMETER_IS_AUTOMABLE = 0x02; | |||
| const unsigned int PARAMETER_USES_SCALEPOINTS = 0x04; | |||
| const unsigned int PARAMETER_USES_SAMPLERATE = 0x08; | |||
| const unsigned int PARAMETER_IS_BOOLEAN = 0x01; | |||
| const unsigned int PARAMETER_IS_INTEGER = 0x02; | |||
| const unsigned int PARAMETER_IS_LOGARITHMIC = 0x04; | |||
| const unsigned int PARAMETER_IS_ENABLED = 0x08; | |||
| const unsigned int PARAMETER_IS_AUTOMABLE = 0x10; | |||
| const unsigned int PARAMETER_USES_SCALEPOINTS = 0x20; | |||
| const unsigned int PARAMETER_USES_SAMPLERATE = 0x40; | |||
| enum BinaryType { | |||
| BINARY_NONE = 0, | |||
| @@ -140,7 +143,6 @@ enum CallbackType { | |||
| struct ParameterData { | |||
| ParameterType type; | |||
| qint32 index; | |||
| qint32 rindex; | |||
| qint32 hints; | |||
| quint8 midi_channel; | |||
| @@ -35,7 +35,6 @@ bool carla_is_engine_running() | |||
| const char* get_host_client_name() | |||
| { | |||
| //qDebug("get_host_client_name()"); | |||
| return carla_client_name; | |||
| } | |||
| @@ -104,7 +103,7 @@ int carla_jack_process_callback(jack_nframes_t nframes, void* arg) | |||
| return 0; | |||
| } | |||
| #else | |||
| Q_UNUSED(arg); | |||
| Q_UNUSED(arg); | |||
| #endif | |||
| #ifdef BUILD_BRIDGE | |||
| @@ -137,7 +136,6 @@ void carla_jack_shutdown_callback(void*) | |||
| // ------------------------------------------------------------------------------------------------------------------- | |||
| #ifndef BUILD_BRIDGE | |||
| bool carla_jack_init(const char* client_name) | |||
| { | |||
| carla_jack_client = jack_client_open(client_name, JackNullOption, nullptr); | |||
| @@ -147,6 +145,7 @@ bool carla_jack_init(const char* client_name) | |||
| carla_buffer_size = jack_get_buffer_size(carla_jack_client); | |||
| carla_sample_rate = jack_get_sample_rate(carla_jack_client); | |||
| #ifndef BUILD_BRIDGE | |||
| jack_set_buffer_size_callback(carla_jack_client, carla_jack_bufsize_callback, nullptr); | |||
| jack_set_sample_rate_callback(carla_jack_client, carla_jack_srate_callback, nullptr); | |||
| jack_set_process_callback(carla_jack_client, carla_jack_process_callback, nullptr); | |||
| @@ -172,6 +171,7 @@ bool carla_jack_init(const char* client_name) | |||
| set_last_error("Failed to activate the JACK client"); | |||
| carla_jack_client = nullptr; | |||
| } | |||
| #endif | |||
| } | |||
| else | |||
| { | |||
| @@ -189,6 +189,7 @@ bool carla_jack_close() | |||
| if (jack_deactivate(carla_jack_client) == 0) | |||
| { | |||
| #ifndef BUILD_BRIDGE | |||
| if (jack_client_close(carla_jack_client) == 0) | |||
| { | |||
| carla_jack_client = nullptr; | |||
| @@ -196,6 +197,7 @@ bool carla_jack_close() | |||
| } | |||
| else | |||
| set_last_error("Failed to close the JACK client"); | |||
| #endif | |||
| } | |||
| else | |||
| set_last_error("Failed to deactivate the JACK client"); | |||
| @@ -203,7 +205,6 @@ bool carla_jack_close() | |||
| carla_jack_client = nullptr; | |||
| return false; | |||
| } | |||
| #endif | |||
| bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client) | |||
| { | |||
| @@ -220,7 +221,6 @@ bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client) | |||
| if (*client) | |||
| { | |||
| #ifdef BUILD_BRIDGE | |||
| qDebug("HERE 001"); | |||
| carla_buffer_size = jack_get_buffer_size(*client); | |||
| carla_sample_rate = jack_get_sample_rate(*client); | |||
| @@ -231,7 +231,6 @@ bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client) | |||
| #else | |||
| jack_set_process_callback(*client, carla_jack_process_callback, plugin); | |||
| #endif | |||
| //if (jack_activate(*client) == 0) | |||
| return true; | |||
| } | |||
| @@ -30,10 +30,8 @@ int carla_jack_srate_callback(jack_nframes_t new_sample_rate, void* arg); | |||
| int carla_jack_process_callback(jack_nframes_t nframes, void* arg); | |||
| void carla_jack_shutdown_callback(void* arg); | |||
| #ifndef BUILD_BRIDGE | |||
| bool carla_jack_init(const char* client_name); | |||
| bool carla_jack_close(); | |||
| #endif | |||
| bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client); | |||
| #endif // CARLA_JACK_H | |||
| @@ -18,6 +18,8 @@ | |||
| #ifndef CARLA_MIDI_H | |||
| #define CARLA_MIDI_H | |||
| // TODO - complete this header | |||
| #define MAX_MIDI_CHANNELS 16 | |||
| // MIDI Messages List | |||
| @@ -342,7 +342,7 @@ public: | |||
| else if (LADSPA_IS_PORT_CONTROL(PortType)) | |||
| { | |||
| j = param.count++; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = i; | |||
| param.data[j].hints = 0; | |||
| param.data[j].midi_channel = 0; | |||
| @@ -365,7 +365,7 @@ public: | |||
| else if (LADSPA_IS_PORT_CONTROL(PortType)) | |||
| { | |||
| j = param.count++; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = i; | |||
| param.data[j].hints = 0; | |||
| param.data[j].midi_channel = 0; | |||
| @@ -40,12 +40,53 @@ | |||
| #include "lv2/lv2_rtmempool.h" | |||
| #include "lv2/lv2_external_ui.h" | |||
| #include "lilv/lilvmm.hpp" | |||
| #include "lv2_rdf.h" | |||
| extern "C" { | |||
| #include "lv2-rtmempool/rtmempool.h" | |||
| } | |||
| #if 0 | |||
| // TODO - remove me | |||
| int main() | |||
| { | |||
| Lilv::World World; | |||
| World.load_all(); | |||
| int j = 0; | |||
| const Lilv::Plugins Plugins = World.get_all_plugins(); | |||
| LILV_FOREACH(plugins, i, Plugins) | |||
| { | |||
| Lilv::Plugin p = Lilv::Plugin(lilv_plugins_get(Plugins, i)); | |||
| LV2_RDF_Descriptor* desc = new LV2_RDF_Descriptor; | |||
| desc->Type = 0; | |||
| desc->URI = strdup(p.get_uri().as_string()); | |||
| desc->Name = strdup(p.get_name().as_string()); | |||
| desc->Author = strdup(p.get_author_name().as_string()); | |||
| desc->License = nullptr; | |||
| desc->Binary = strdup(lilv_uri_to_path(p.get_library_uri().as_string())); | |||
| desc->Bundle = strdup(lilv_uri_to_path(p.get_bundle_uri().as_string())); | |||
| desc->PortCount = 0; | |||
| desc->PresetCount = 0; | |||
| desc->FeatureCount = 0; | |||
| desc->ExtensionCount = 0; | |||
| desc->UICount = 0; | |||
| qDebug("%03i - %s", j++, lilv_uri_to_path(p.get_library_uri().as_string())); | |||
| lv2_rdf_free(desc); | |||
| } | |||
| return 0; | |||
| } | |||
| #endif | |||
| #include <QtGui/QDialog> | |||
| #include <QtGui/QLayout> | |||
| @@ -1019,7 +1060,7 @@ public: | |||
| const LV2_RDF_PortPoints PortPoints = rdf_descriptor->Ports[i].Points; | |||
| j = param.count++; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = i; | |||
| param.data[j].hints = 0; | |||
| param.data[j].midi_channel = 0; | |||
| @@ -19,7 +19,8 @@ SOURCES = \ | |||
| ../dssi.cpp \ | |||
| ../lv2.cpp \ | |||
| ../vst.cpp \ | |||
| ../sf2.cpp | |||
| ../sf2.cpp \ | |||
| ../lv2-rtmempool/rtmempool.c | |||
| HEADERS = \ | |||
| ../carla_backend.h \ | |||
| @@ -40,3 +41,5 @@ INCLUDEPATH = .. \ | |||
| TARGET = carla_backend | |||
| DEFINES = VESTIGE_HEADER | |||
| LIBS = ../../carla-lilv/carla_lilv.a | |||
| @@ -378,7 +378,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ReverbOnOff; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -394,7 +394,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ReverbRoomSize; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -410,7 +410,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ReverbDamp; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -426,7 +426,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ReverbLevel; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -442,7 +442,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ReverbWidth; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -458,7 +458,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusOnOff; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -474,7 +474,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusNr; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -490,7 +490,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusLevel; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -506,7 +506,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusSpeedHz; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -522,7 +522,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusDepthMs; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -538,7 +538,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2ChorusType; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_USES_SCALEPOINTS; | |||
| @@ -554,7 +554,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2Polyphony; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED; | |||
| @@ -570,7 +570,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2Interpolation; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_INPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_USES_SCALEPOINTS; | |||
| @@ -586,7 +586,7 @@ public: | |||
| // ---------------------- | |||
| j = Sf2VoiceCount; | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].type = PARAMETER_OUTPUT; | |||
| param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE; | |||
| @@ -25,7 +25,6 @@ | |||
| #if VESTIGE_HEADER | |||
| #warning Using vestige header | |||
| #define kVstVersion 2400 | |||
| #define effFlagsProgramChunks (1 << 5) | |||
| #define effGetParamLabel 6 | |||
| #define effGetChunk 23 | |||
| @@ -38,8 +37,6 @@ | |||
| #define effStartProcess 71 | |||
| #define effStopProcess 72 | |||
| #define effSetProcessPrecision 77 | |||
| #define kVstProcessPrecision32 0 | |||
| #define kVstTransportChanged 1 | |||
| #define kPlugCategSynth 2 | |||
| #define kPlugCategAnalysis 3 | |||
| #define kPlugCategMastering 4 | |||
| @@ -47,6 +44,9 @@ | |||
| #define kPlugCategRestoration 8 | |||
| #define kPlugCategShell 10 | |||
| #define kPlugCategGenerator 11 | |||
| #define kVstProcessPrecision32 0 | |||
| #define kVstTransportChanged 1 | |||
| #define kVstVersion 2400 | |||
| struct VstTimeInfo_R { | |||
| double samplePos, sampleRate, nanoSeconds, ppqPos, tempo, barStartPos, cycleStartPos, cycleEndPos; | |||
| int32_t timeSigNumerator, timeSigDenominator, smpteOffset, smpteFrameRate, samplesToNextClock, flags; | |||
| @@ -341,7 +341,7 @@ public: | |||
| for (j=0; j<params; j++) | |||
| { | |||
| param.data[j].index = j; | |||
| //param.data[j].index = j; | |||
| param.data[j].rindex = j; | |||
| param.data[j].hints = 0; | |||
| param.data[j].midi_channel = 0; | |||
| @@ -610,19 +610,22 @@ MAX_PARAMETERS = 200 | |||
| MAX_MIDI_EVENTS = 512 | |||
| # plugin hints | |||
| PLUGIN_HAS_GUI = 0x01 | |||
| PLUGIN_IS_BRIDGE = 0x02 | |||
| PLUGIN_IS_SYNTH = 0x04 | |||
| PLUGIN_IS_BRIDGE = 0x01 | |||
| PLUGIN_IS_SYNTH = 0x02 | |||
| PLUGIN_HAS_GUI = 0x04 | |||
| PLUGIN_USES_CHUNKS = 0x08 | |||
| PLUGIN_CAN_DRYWET = 0x10 | |||
| PLUGIN_CAN_VOLUME = 0x20 | |||
| PLUGIN_CAN_BALANCE = 0x40 | |||
| # parameter hints | |||
| PARAMETER_IS_ENABLED = 0x01 | |||
| PARAMETER_IS_AUTOMABLE = 0x02 | |||
| PARAMETER_USES_SCALEPOINTS = 0x04 | |||
| PARAMETER_USES_SAMPLERATE = 0x08 | |||
| PARAMETER_IS_BOOLEAN = 0x01 | |||
| PARAMETER_IS_INTEGER = 0x02 | |||
| PARAMETER_IS_LOGARITHMIC = 0x04 | |||
| PARAMETER_IS_ENABLED = 0x08 | |||
| PARAMETER_IS_AUTOMABLE = 0x10 | |||
| PARAMETER_USES_SCALEPOINTS = 0x20 | |||
| PARAMETER_USES_SAMPLERATE = 0x40 | |||
| # enum BinaryType | |||
| BINARY_NONE = 0 | |||
| @@ -654,6 +657,7 @@ PLUGIN_CATEGORY_OUTRO = 8 # used to check if a plugin has a category | |||
| PARAMETER_UNKNOWN = 0 | |||
| PARAMETER_INPUT = 1 | |||
| PARAMETER_OUTPUT = 2 | |||
| PARAMETER_LATENCY = 3 | |||
| # enum InternalParametersIndex | |||
| PARAMETER_ACTIVE = -1 | |||
| @@ -675,8 +679,8 @@ CUSTOM_DATA_BINARY = 6 | |||
| GUI_NONE = 0 | |||
| GUI_INTERNAL_QT4 = 1 | |||
| GUI_INTERNAL_X11 = 2 | |||
| GUI_EXTERNAL_OSC = 3 | |||
| GUI_EXTERNAL_LV2 = 4 | |||
| GUI_EXTERNAL_LV2 = 3 | |||
| GUI_EXTERNAL_OSC = 4 | |||
| # enum OptionsType | |||
| OPTION_GLOBAL_JACK_CLIENT = 1 | |||
| @@ -1867,11 +1867,11 @@ def fill_information(parse, bundle_path): | |||
| # Parse ttl file into 'lists' | |||
| def parse_ttl_file(filename): | |||
| primer = ConjunctiveGraph() | |||
| try: | |||
| primer.parse(filename, format='n3') | |||
| except: | |||
| print("LV2_RDF - Failed to parse %s" % filename) | |||
| return [] | |||
| #try: | |||
| primer.parse(filename, format='n3') | |||
| #except: | |||
| #print("LV2_RDF - Failed to parse %s" % filename) | |||
| #return [] | |||
| return [(x, y, z) for x, y, z in primer] | |||