| @@ -30,7 +30,7 @@ | |||
| <item row="2" column="0"> | |||
| <widget class="QGroupBox" name="groupBox_3"> | |||
| <property name="title"> | |||
| <string>Control?</string> | |||
| <string>Control</string> | |||
| </property> | |||
| <layout class="QVBoxLayout" name="verticalLayout_5"> | |||
| <item> | |||
| @@ -655,7 +655,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="2" column="0"> | |||
| <widget class="QLabel" name="label_4"> | |||
| <widget class="QLabel" name="label_label"> | |||
| <property name="text"> | |||
| <string>Label/URI:</string> | |||
| </property> | |||
| @@ -665,7 +665,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="0"> | |||
| <widget class="QLabel" name="label_3"> | |||
| <widget class="QLabel" name="label_name"> | |||
| <property name="text"> | |||
| <string>Name:</string> | |||
| </property> | |||
| @@ -755,7 +755,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="0" column="0"> | |||
| <widget class="QLabel" name="label_5"> | |||
| <widget class="QLabel" name="label_type"> | |||
| <property name="text"> | |||
| <string>Type:</string> | |||
| </property> | |||
| @@ -765,7 +765,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="3" column="0"> | |||
| <widget class="QLabel" name="label_6"> | |||
| <widget class="QLabel" name="label_maker"> | |||
| <property name="text"> | |||
| <string>Maker:</string> | |||
| </property> | |||
| @@ -775,7 +775,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="4" column="0"> | |||
| <widget class="QLabel" name="label_7"> | |||
| <widget class="QLabel" name="label_copyright"> | |||
| <property name="text"> | |||
| <string>Copyright:</string> | |||
| </property> | |||
| @@ -785,7 +785,7 @@ Plugin Name | |||
| </widget> | |||
| </item> | |||
| <item row="5" column="0"> | |||
| <widget class="QLabel" name="label_8"> | |||
| <widget class="QLabel" name="label_unique_id"> | |||
| <property name="text"> | |||
| <string>Unique ID:</string> | |||
| </property> | |||
| @@ -887,7 +887,6 @@ Plugin Name | |||
| <height>64</height> | |||
| </size> | |||
| </property> | |||
| <zorder>tabWidget</zorder> | |||
| </widget> | |||
| </item> | |||
| </layout> | |||
| @@ -1731,47 +1731,45 @@ void CarlaEngine::processRack(float* inBufReal[2], float* outBuf[2], const uint3 | |||
| if (processed) | |||
| { | |||
| // initialize inputs (from previous outputs) | |||
| carla_copyFloat(inBuf0, outBuf[0], frames); | |||
| carla_copyFloat(inBuf1, outBuf[1], frames); | |||
| std::memcpy(pData->bufEvents.in, pData->bufEvents.out, sizeof(EngineEvent)*kEngineMaxInternalEventCount); | |||
| // initialize outputs (zero) | |||
| carla_zeroFloat(outBuf[0], frames); | |||
| carla_zeroFloat(outBuf[1], frames); | |||
| carla_zeroMem(pData->bufEvents.out, sizeof(EngineEvent)*kEngineMaxInternalEventCount); | |||
| } | |||
| oldAudioInCount = plugin->getAudioInCount(); | |||
| oldMidiOutCount = plugin->getMidiOutCount(); | |||
| // if plugin has no audio inputs, add input buffer | |||
| //if (oldAudioInCount == 0) | |||
| { | |||
| carla_addFloat(outBuf[0], inBuf0, frames); | |||
| carla_addFloat(outBuf[1], inBuf1, frames); | |||
| } | |||
| // if plugin has no midi out, add previous events | |||
| if (oldMidiOutCount == 0 && pData->bufEvents.in[0].type != CarlaBackend::kEngineEventTypeNull) | |||
| { | |||
| if (pData->bufEvents.out[0].type != CarlaBackend::kEngineEventTypeNull) | |||
| { | |||
| // TODO: carefully add to output, sorted events | |||
| } | |||
| else | |||
| { | |||
| // nothing in output, can be replaced directly | |||
| std::memcpy(pData->bufEvents.out, pData->bufEvents.in, sizeof(EngineEvent)*kEngineMaxInternalEventCount); | |||
| // TODO: carefully add to input, sorted events | |||
| } | |||
| // else nothing needed | |||
| } | |||
| else | |||
| { | |||
| // initialize input from previous output and zero output | |||
| std::memcpy(pData->bufEvents.in, pData->bufEvents.out, sizeof(EngineEvent)*kEngineMaxInternalEventCount); | |||
| std::memset(pData->bufEvents.out, 0, sizeof(EngineEvent)*kEngineMaxInternalEventCount); | |||
| } | |||
| } | |||
| oldAudioInCount = plugin->getAudioInCount(); | |||
| oldMidiOutCount = plugin->getMidiOutCount(); | |||
| // process | |||
| plugin->initBuffers(); | |||
| plugin->process(inBuf, outBuf, frames); | |||
| plugin->unlock(); | |||
| // if plugin has no audio inputs, add input buffer | |||
| if (oldAudioInCount == 0) | |||
| { | |||
| carla_addFloat(outBuf[0], inBuf0, frames); | |||
| carla_addFloat(outBuf[1], inBuf1, frames); | |||
| } | |||
| // set peaks | |||
| { | |||
| float inPeak1 = 0.0f; | |||
| @@ -557,9 +557,6 @@ public: | |||
| #ifdef BUILD_BRIDGE | |||
| fHasQuit(false) | |||
| #else | |||
| # ifdef CARLA_PROPER_CPP11_SUPPORT | |||
| fRackPorts{nullptr}, | |||
| # endif | |||
| fLastGroupId(0), | |||
| fLastPortId(0), | |||
| fLastConnectionId(0) | |||
| @@ -570,9 +567,7 @@ public: | |||
| #ifdef BUILD_BRIDGE | |||
| fOptions.processMode = PROCESS_MODE_MULTIPLE_CLIENTS; | |||
| #else | |||
| # ifndef CARLA_PROPER_CPP11_SUPPORT | |||
| carla_fill<jack_port_t*>(fRackPorts, kRackPortCount, nullptr); | |||
| # endif | |||
| #endif | |||
| // FIXME: Always enable JACK transport for now | |||
| @@ -724,6 +719,7 @@ public: | |||
| jackbridge_port_unregister(fClient, fRackPorts[kRackPortAudioOut2]); | |||
| jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventIn]); | |||
| jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventOut]); | |||
| carla_fill<jack_port_t*>(fRackPorts, kRackPortCount, nullptr); | |||
| } | |||
| if (jackbridge_client_close(fClient)) | |||
| @@ -547,16 +547,61 @@ class PluginEdit(QDialog): | |||
| else: | |||
| self.ui.le_type.setText(self.tr("Unknown")) | |||
| self.ui.le_name.setText(pluginName) | |||
| self.ui.le_name.setToolTip(pluginName) | |||
| self.ui.le_label.setText(self.fPluginInfo['label']) | |||
| self.ui.le_label.setToolTip(self.fPluginInfo['label']) | |||
| self.ui.le_maker.setText(self.fPluginInfo['maker']) | |||
| self.ui.le_maker.setToolTip(self.fPluginInfo['maker']) | |||
| self.ui.le_copyright.setText(self.fPluginInfo['copyright']) | |||
| self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright']) | |||
| self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId'])) | |||
| self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId'])) | |||
| if pluginName: | |||
| self.ui.label_name.setEnabled(True) | |||
| self.ui.le_name.setEnabled(True) | |||
| self.ui.le_name.setText(pluginName) | |||
| self.ui.le_name.setToolTip(pluginName) | |||
| else: | |||
| self.ui.label_name.setEnabled(False) | |||
| self.ui.le_name.setEnabled(False) | |||
| self.ui.le_name.setText("") | |||
| self.ui.le_name.setToolTip("") | |||
| if self.fPluginInfo['label']: | |||
| self.ui.label_label.setEnabled(True) | |||
| self.ui.le_label.setEnabled(True) | |||
| self.ui.le_label.setText(self.fPluginInfo['label']) | |||
| self.ui.le_label.setToolTip(self.fPluginInfo['label']) | |||
| else: | |||
| self.ui.label_label.setEnabled(False) | |||
| self.ui.le_label.setEnabled(False) | |||
| self.ui.le_label.setText("") | |||
| self.ui.le_label.setToolTip("") | |||
| if self.fPluginInfo['maker']: | |||
| self.ui.label_maker.setEnabled(True) | |||
| self.ui.le_maker.setEnabled(True) | |||
| self.ui.le_maker.setText(self.fPluginInfo['maker']) | |||
| self.ui.le_maker.setToolTip(self.fPluginInfo['maker']) | |||
| else: | |||
| self.ui.label_maker.setEnabled(False) | |||
| self.ui.le_maker.setEnabled(False) | |||
| self.ui.le_maker.setText("") | |||
| self.ui.le_maker.setToolTip("") | |||
| if self.fPluginInfo['copyright']: | |||
| self.ui.label_copyright.setEnabled(True) | |||
| self.ui.le_copyright.setEnabled(True) | |||
| self.ui.le_copyright.setText(self.fPluginInfo['copyright']) | |||
| self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright']) | |||
| else: | |||
| self.ui.label_copyright.setEnabled(False) | |||
| self.ui.le_copyright.setEnabled(False) | |||
| self.ui.le_copyright.setText("") | |||
| self.ui.le_copyright.setToolTip("") | |||
| if self.fPluginInfo['uniqueId'] != 0: | |||
| self.ui.label_unique_id.setEnabled(True) | |||
| self.ui.le_unique_id.setEnabled(True) | |||
| self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId'])) | |||
| self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId'])) | |||
| else: | |||
| self.ui.label_unique_id.setEnabled(False) | |||
| self.ui.le_unique_id.setEnabled(False) | |||
| self.ui.le_unique_id.setText("") | |||
| self.ui.le_unique_id.setToolTip("") | |||
| self.ui.label_plugin.setText("\n%s\n" % self.fPluginInfo['name']) | |||
| self.setWindowTitle(self.fPluginInfo['name']) | |||