Signed-off-by: falkTX <falktx@falktx.com>tags/v2.2.0-RC1
| @@ -7,7 +7,7 @@ | |||
| <x>0</x> | |||
| <y>0</y> | |||
| <width>537</width> | |||
| <height>535</height> | |||
| <height>525</height> | |||
| </rect> | |||
| </property> | |||
| <property name="windowTitle"> | |||
| @@ -405,6 +405,13 @@ | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QCheckBox" name="ch_send_notes"> | |||
| <property name="text"> | |||
| <string>Send Notes</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QCheckBox" name="ch_send_program_changes"> | |||
| <property name="text"> | |||
| @@ -260,6 +260,13 @@ static const uint PLUGIN_OPTION_SEND_ALL_SOUND_OFF = 0x100; | |||
| */ | |||
| static const uint PLUGIN_OPTION_SEND_PROGRAM_CHANGES = 0x200; | |||
| /*! | |||
| * Skip sending MIDI note events. | |||
| * This if off-by-default as a way to keep backwards compatibility. | |||
| * We always want notes enabled by default, not the contrary. | |||
| */ | |||
| static const uint PLUGIN_OPTION_SKIP_SENDING_NOTES = 0x400; | |||
| /*! | |||
| * Special flag to indicate that plugin options are not yet set. | |||
| * This flag exists because 0x0 as an option value is a valid one, so we need something else to indicate "null-ness". | |||
| @@ -1541,6 +1541,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiData)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -2698,6 +2700,10 @@ public: | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_ALL_SOUND_OFF)) | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (fInfo.optionsAvailable & PLUGIN_OPTION_SKIP_SENDING_NOTES) | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| if (fInfo.optionsAvailable & PLUGIN_OPTION_SEND_PROGRAM_CHANGES) | |||
| { | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| @@ -193,6 +193,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_CHANNEL_PRESSURE; | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| return options; | |||
| } | |||
| @@ -1381,24 +1382,28 @@ public: | |||
| switch (status) | |||
| { | |||
| case MIDI_STATUS_NOTE_OFF: { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| case MIDI_STATUS_NOTE_OFF: | |||
| if ((pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES) == 0x0) | |||
| { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| fluid_synth_noteoff(fSynth, event.channel, note); | |||
| fluid_synth_noteoff(fSynth, event.channel, note); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOff, true, event.channel, note, 0, 0.0f); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOff, true, event.channel, note, 0, 0.0f); | |||
| } | |||
| break; | |||
| } | |||
| case MIDI_STATUS_NOTE_ON: { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| const uint8_t velo = midiEvent.data[2]; | |||
| case MIDI_STATUS_NOTE_ON: | |||
| if ((pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES) == 0x0) | |||
| { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| const uint8_t velo = midiEvent.data[2]; | |||
| fluid_synth_noteon(fSynth, event.channel, note, velo); | |||
| fluid_synth_noteon(fSynth, event.channel, note, velo); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOn, true, event.channel, note, velo, 0.0f); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOn, true, event.channel, note, velo, 0.0f); | |||
| } | |||
| break; | |||
| } | |||
| case MIDI_STATUS_POLYPHONIC_AFTERTOUCH: | |||
| if (pData->options & PLUGIN_OPTION_SEND_NOTE_AFTERTOUCH) | |||
| @@ -1749,6 +1754,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_MAP_PROGRAM_CHANGES)) | |||
| pData->options |= PLUGIN_OPTION_MAP_PROGRAM_CHANGES; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| return true; | |||
| } | |||
| @@ -645,6 +645,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| return options; | |||
| @@ -1200,6 +1201,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiData)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -1785,6 +1788,9 @@ public: | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| pData->options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| return true; | |||
| } | |||
| @@ -182,6 +182,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| return options; | |||
| @@ -1049,6 +1050,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiData)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -1463,6 +1466,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| pData->options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| if (fInstance->getNumPrograms() > 1 && ((pData->options & PLUGIN_OPTION_SEND_PROGRAM_CHANGES) == 0)) | |||
| @@ -519,6 +519,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_NOTE_AFTERTOUCH; | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| } | |||
| @@ -1826,29 +1827,33 @@ public: | |||
| switch (status) | |||
| { | |||
| case MIDI_STATUS_NOTE_OFF: { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| case MIDI_STATUS_NOTE_OFF: | |||
| if ((pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES) == 0x0) | |||
| { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| seqEvent.type = SND_SEQ_EVENT_NOTEOFF; | |||
| seqEvent.data.note.channel = event.channel; | |||
| seqEvent.data.note.note = note; | |||
| seqEvent.type = SND_SEQ_EVENT_NOTEOFF; | |||
| seqEvent.data.note.channel = event.channel; | |||
| seqEvent.data.note.note = note; | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOff, true, event.channel, note, 0, 0.0f); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOff, true, event.channel, note, 0, 0.0f); | |||
| } | |||
| break; | |||
| } | |||
| case MIDI_STATUS_NOTE_ON: { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| const uint8_t velo = midiEvent.data[2]; | |||
| case MIDI_STATUS_NOTE_ON: | |||
| if ((pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES) == 0x0) | |||
| { | |||
| const uint8_t note = midiEvent.data[1]; | |||
| const uint8_t velo = midiEvent.data[2]; | |||
| seqEvent.type = SND_SEQ_EVENT_NOTEON; | |||
| seqEvent.data.note.channel = event.channel; | |||
| seqEvent.data.note.note = note; | |||
| seqEvent.data.note.velocity = velo; | |||
| seqEvent.type = SND_SEQ_EVENT_NOTEON; | |||
| seqEvent.data.note.channel = event.channel; | |||
| seqEvent.data.note.note = note; | |||
| seqEvent.data.note.velocity = velo; | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOn, true, event.channel, note, velo, 0.0f); | |||
| pData->postponeRtEvent(kPluginPostRtEventNoteOn, true, event.channel, note, velo, 0.0f); | |||
| } | |||
| break; | |||
| } | |||
| case MIDI_STATUS_POLYPHONIC_AFTERTOUCH: | |||
| if (pData->options & PLUGIN_OPTION_SEND_NOTE_AFTERTOUCH) | |||
| @@ -3037,6 +3042,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_ALL_SOUND_OFF)) | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| } | |||
| @@ -961,6 +961,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| return options; | |||
| @@ -4052,6 +4053,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiData)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -6393,6 +6396,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| pData->options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| if (fExt.programs != nullptr && (pData->options & PLUGIN_OPTION_SEND_PROGRAM_CHANGES) == 0) | |||
| @@ -445,6 +445,9 @@ public: | |||
| if (fDescriptor->supports & NATIVE_PLUGIN_SUPPORTS_ALL_SOUND_OFF) | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (fDescriptor->midiIns > 0) | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| if (fDescriptor->supports & NATIVE_PLUGIN_SUPPORTS_PROGRAM_CHANGES) | |||
| options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| else if (hasMidiProgs) | |||
| @@ -2192,6 +2195,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiEvent.data)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -3016,6 +3021,10 @@ public: | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_ALL_SOUND_OFF)) | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (fDescriptor->midiIns > 0) | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| if (fDescriptor->supports & NATIVE_PLUGIN_SUPPORTS_PROGRAM_CHANGES) | |||
| { | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| @@ -126,6 +126,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_NOTE_AFTERTOUCH; | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| return options; | |||
| } | |||
| @@ -506,6 +507,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiData)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -753,6 +756,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_ALL_SOUND_OFF)) | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| return true; | |||
| } | |||
| @@ -264,6 +264,7 @@ public: | |||
| options |= PLUGIN_OPTION_SEND_PITCHBEND; | |||
| options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| return options; | |||
| @@ -1553,6 +1554,8 @@ public: | |||
| uint8_t status = uint8_t(MIDI_GET_STATUS_FROM_DATA(midiEvent.data)); | |||
| if ((status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) && (pData->options & PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| continue; | |||
| if (status == MIDI_STATUS_CHANNEL_PRESSURE && (pData->options & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) == 0) | |||
| continue; | |||
| if (status == MIDI_STATUS_CONTROL_CHANGE && (pData->options & PLUGIN_OPTION_SEND_CONTROL_CHANGES) == 0) | |||
| @@ -2641,6 +2644,8 @@ public: | |||
| pData->options |= PLUGIN_OPTION_SEND_ALL_SOUND_OFF; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SEND_PROGRAM_CHANGES)) | |||
| pData->options |= PLUGIN_OPTION_SEND_PROGRAM_CHANGES; | |||
| if (isPluginOptionEnabled(options, PLUGIN_OPTION_SKIP_SENDING_NOTES)) | |||
| pData->options |= PLUGIN_OPTION_SKIP_SENDING_NOTES; | |||
| } | |||
| if (fEffect->numPrograms > 1 && (pData->options & PLUGIN_OPTION_SEND_PROGRAM_CHANGES) == 0) | |||
| @@ -273,6 +273,11 @@ PLUGIN_OPTION_SEND_ALL_SOUND_OFF = 0x100 | |||
| # @note: This option conflicts with PLUGIN_OPTION_MAP_PROGRAM_CHANGES and cannot be used at the same time. | |||
| PLUGIN_OPTION_SEND_PROGRAM_CHANGES = 0x200 | |||
| # SSkip sending MIDI note events. | |||
| # This if off-by-default as a way to keep backwards compatibility. | |||
| # We always want notes enabled by default, not the contrary. | |||
| PLUGIN_OPTION_SKIP_SENDING_NOTES = 0x400 | |||
| # Special flag to indicate that plugin options are not yet set. | |||
| # This flag exists because 0x0 as an option value is a valid one, so we need something else to indicate "null-ness". | |||
| PLUGIN_OPTIONS_NULL = 0x10000 | |||
| @@ -60,6 +60,7 @@ from carla_backend import ( | |||
| PLUGIN_OPTION_SEND_PITCHBEND, | |||
| PLUGIN_OPTION_SEND_ALL_SOUND_OFF, | |||
| PLUGIN_OPTION_SEND_PROGRAM_CHANGES, | |||
| PLUGIN_OPTION_SKIP_SENDING_NOTES, | |||
| PARAMETER_DRYWET, | |||
| PARAMETER_VOLUME, | |||
| PARAMETER_BALANCE_LEFT, | |||
| @@ -748,6 +749,7 @@ class PluginEdit(QDialog): | |||
| self.ui.ch_force_stereo.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_map_program_changes.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_use_chunks.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_send_notes.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_send_program_changes.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_send_control_changes.clicked.connect(self.slot_optionChanged) | |||
| self.ui.ch_send_channel_pressure.clicked.connect(self.slot_optionChanged) | |||
| @@ -974,6 +976,9 @@ class PluginEdit(QDialog): | |||
| self.ui.ch_force_stereo.setChecked(optsEnabled & PLUGIN_OPTION_FORCE_STEREO) | |||
| self.ui.ch_map_program_changes.setEnabled(optsAvailable & PLUGIN_OPTION_MAP_PROGRAM_CHANGES) | |||
| self.ui.ch_map_program_changes.setChecked(optsEnabled & PLUGIN_OPTION_MAP_PROGRAM_CHANGES) | |||
| self.ui.ch_send_notes.setEnabled(optsAvailable & PLUGIN_OPTION_SKIP_SENDING_NOTES) | |||
| self.ui.ch_send_notes.setChecked((self.ui.ch_send_notes.isEnabled() and | |||
| (optsEnabled & PLUGIN_OPTION_SKIP_SENDING_NOTES) == 0x0)) | |||
| self.ui.ch_send_control_changes.setEnabled(optsAvailable & PLUGIN_OPTION_SEND_CONTROL_CHANGES) | |||
| self.ui.ch_send_control_changes.setChecked(optsEnabled & PLUGIN_OPTION_SEND_CONTROL_CHANGES) | |||
| self.ui.ch_send_channel_pressure.setEnabled(optsAvailable & PLUGIN_OPTION_SEND_CHANNEL_PRESSURE) | |||
| @@ -1251,6 +1256,9 @@ class PluginEdit(QDialog): | |||
| widget = self.ui.ch_force_stereo | |||
| elif option == PLUGIN_OPTION_MAP_PROGRAM_CHANGES: | |||
| widget = self.ui.ch_map_program_changes | |||
| elif option == PLUGIN_OPTION_SKIP_SENDING_NOTES: | |||
| widget = self.ui.ch_send_notes | |||
| yesNo = not yesNo | |||
| elif option == PLUGIN_OPTION_SEND_PROGRAM_CHANGES: | |||
| widget = self.ui.ch_send_program_changes | |||
| elif option == PLUGIN_OPTION_SEND_CONTROL_CHANGES: | |||
| @@ -1439,6 +1447,9 @@ class PluginEdit(QDialog): | |||
| option = PLUGIN_OPTION_FORCE_STEREO | |||
| elif sender == self.ui.ch_map_program_changes: | |||
| option = PLUGIN_OPTION_MAP_PROGRAM_CHANGES | |||
| elif sender == self.ui.ch_send_notes: | |||
| option = PLUGIN_OPTION_SKIP_SENDING_NOTES | |||
| clicked = not clicked | |||
| elif sender == self.ui.ch_send_program_changes: | |||
| option = PLUGIN_OPTION_SEND_PROGRAM_CHANGES | |||
| elif sender == self.ui.ch_send_control_changes: | |||