| @@ -297,11 +297,7 @@ void do_ladspa_check(void* const libHandle, const bool init) | |||||
| } | } | ||||
| LADSPA_Data bufferAudio[bufferSize][audioTotal]; | LADSPA_Data bufferAudio[bufferSize][audioTotal]; | ||||
| memset(bufferAudio, 0, sizeof(float)*bufferSize*audioTotal); | |||||
| LADSPA_Data bufferParams[parametersTotal]; | LADSPA_Data bufferParams[parametersTotal]; | ||||
| memset(bufferParams, 0, sizeof(float)*parametersTotal); | |||||
| LADSPA_Data min, max, def; | LADSPA_Data min, max, def; | ||||
| for (unsigned long j=0, iA=0, iP=0; j < descriptor->PortCount; j++) | for (unsigned long j=0, iA=0, iP=0; j < descriptor->PortCount; j++) | ||||
| @@ -311,6 +307,7 @@ void do_ladspa_check(void* const libHandle, const bool init) | |||||
| if (LADSPA_IS_PORT_AUDIO(portType)) | if (LADSPA_IS_PORT_AUDIO(portType)) | ||||
| { | { | ||||
| carla_zeroF(bufferAudio[iA], bufferSize); | |||||
| descriptor->connect_port(handle, j, bufferAudio[iA++]); | descriptor->connect_port(handle, j, bufferAudio[iA++]); | ||||
| } | } | ||||
| else if (LADSPA_IS_PORT_CONTROL(portType)) | else if (LADSPA_IS_PORT_CONTROL(portType)) | ||||
| @@ -334,7 +331,7 @@ void do_ladspa_check(void* const libHandle, const bool init) | |||||
| if (max - min == 0.0f) | if (max - min == 0.0f) | ||||
| { | { | ||||
| DISCOVERY_OUT("error", "Broken parameter: max - min == 0"); | |||||
| DISCOVERY_OUT("error", "Broken parameter '" << descriptor->PortNames[j] << "': max - min == 0"); | |||||
| max = min + 0.1f; | max = min + 0.1f; | ||||
| } | } | ||||
| @@ -370,7 +367,8 @@ void do_ladspa_check(void* const libHandle, const bool init) | |||||
| if (descriptor->activate) | if (descriptor->activate) | ||||
| descriptor->activate(handle); | descriptor->activate(handle); | ||||
| descriptor->run(handle, bufferSize); | |||||
| if (descriptor->run) | |||||
| descriptor->run(handle, bufferSize); | |||||
| if (descriptor->deactivate) | if (descriptor->deactivate) | ||||
| descriptor->deactivate(handle); | descriptor->deactivate(handle); | ||||
| @@ -478,18 +476,14 @@ void do_dssi_check(void* const libHandle, const bool init) | |||||
| } | } | ||||
| // we can only get program info per-handle | // we can only get program info per-handle | ||||
| if (descriptor->get_program) | |||||
| if (descriptor->get_program && descriptor->select_program) | |||||
| { | { | ||||
| while ((descriptor->get_program(handle, programsTotal++))) | while ((descriptor->get_program(handle, programsTotal++))) | ||||
| continue; | continue; | ||||
| } | } | ||||
| LADSPA_Data bufferAudio[bufferSize][audioTotal]; | LADSPA_Data bufferAudio[bufferSize][audioTotal]; | ||||
| memset(bufferAudio, 0, sizeof(float)*bufferSize*audioTotal); | |||||
| LADSPA_Data bufferParams[parametersTotal]; | LADSPA_Data bufferParams[parametersTotal]; | ||||
| memset(bufferParams, 0, sizeof(float)*parametersTotal); | |||||
| LADSPA_Data min, max, def; | LADSPA_Data min, max, def; | ||||
| for (unsigned long j=0, iA=0, iP=0; j < ldescriptor->PortCount; j++) | for (unsigned long j=0, iA=0, iP=0; j < ldescriptor->PortCount; j++) | ||||
| @@ -499,6 +493,7 @@ void do_dssi_check(void* const libHandle, const bool init) | |||||
| if (LADSPA_IS_PORT_AUDIO(portType)) | if (LADSPA_IS_PORT_AUDIO(portType)) | ||||
| { | { | ||||
| carla_zeroF(bufferAudio[iA], bufferSize); | |||||
| ldescriptor->connect_port(handle, j, bufferAudio[iA++]); | ldescriptor->connect_port(handle, j, bufferAudio[iA++]); | ||||
| } | } | ||||
| else if (LADSPA_IS_PORT_CONTROL(portType)) | else if (LADSPA_IS_PORT_CONTROL(portType)) | ||||
| @@ -522,7 +517,7 @@ void do_dssi_check(void* const libHandle, const bool init) | |||||
| if (max - min == 0.0f) | if (max - min == 0.0f) | ||||
| { | { | ||||
| DISCOVERY_OUT("error", "Broken parameter: max - min == 0"); | |||||
| DISCOVERY_OUT("error", "Broken parameter '" << ldescriptor->PortNames[j] << "': max - min == 0"); | |||||
| max = min + 0.1f; | max = min + 0.1f; | ||||
| } | } | ||||
| @@ -555,6 +550,16 @@ void do_dssi_check(void* const libHandle, const bool init) | |||||
| } | } | ||||
| } | } | ||||
| // select first midi-program if available | |||||
| if (programsTotal > 0) | |||||
| { | |||||
| const DSSI_Program_Descriptor* pDesc = descriptor->get_program(handle, 0); | |||||
| CARLA_ASSERT(pDesc); | |||||
| if (pDesc) | |||||
| descriptor->select_program(handle, pDesc->Bank, pDesc->Program); | |||||
| } | |||||
| if (ldescriptor->activate) | if (ldescriptor->activate) | ||||
| ldescriptor->activate(handle); | ldescriptor->activate(handle); | ||||
| @@ -584,7 +589,7 @@ void do_dssi_check(void* const libHandle, const bool init) | |||||
| else | else | ||||
| descriptor->run_synth(handle, bufferSize, midiEvents, midiEventCount); | descriptor->run_synth(handle, bufferSize, midiEvents, midiEventCount); | ||||
| } | } | ||||
| else | |||||
| else if (ldescriptor->run) | |||||
| ldescriptor->run(handle, bufferSize); | ldescriptor->run(handle, bufferSize); | ||||
| if (ldescriptor->deactivate) | if (ldescriptor->deactivate) | ||||
| @@ -661,6 +666,7 @@ void do_lv2_check(const char* const bundle, const bool init) | |||||
| if (! libHandle) | if (! libHandle) | ||||
| { | { | ||||
| print_lib_error(rdf_descriptor->Binary); | print_lib_error(rdf_descriptor->Binary); | ||||
| delete rdf_descriptor; | |||||
| continue; | continue; | ||||
| } | } | ||||
| @@ -695,7 +701,10 @@ void do_lv2_check(const char* const bundle, const bool init) | |||||
| } | } | ||||
| if (! supported) | if (! supported) | ||||
| { | |||||
| delete rdf_descriptor; | |||||
| continue; | continue; | ||||
| } | |||||
| } | } | ||||
| int hints = 0; | int hints = 0; | ||||
| @@ -773,6 +782,8 @@ void do_lv2_check(const char* const bundle, const bool init) | |||||
| DISCOVERY_OUT("parameters.outs", parametersOuts); | DISCOVERY_OUT("parameters.outs", parametersOuts); | ||||
| DISCOVERY_OUT("parameters.total", parametersTotal); | DISCOVERY_OUT("parameters.total", parametersTotal); | ||||
| DISCOVERY_OUT("build", BINARY_NATIVE); | DISCOVERY_OUT("build", BINARY_NATIVE); | ||||
| delete rdf_descriptor; | |||||
| DISCOVERY_OUT("end", "------------"); | DISCOVERY_OUT("end", "------------"); | ||||
| } | } | ||||
| #else | #else | ||||