highlight_locut(false);
highlight_limiter_threshold(false);
highlight_makeup_gain(false);
+ highlight_toggle_limiter(false);
+ highlight_toggle_auto_makeup_gain(false);
for (unsigned bus_idx = 0; bus_idx < audio_expanded_views.size(); ++bus_idx) {
highlight_treble(bus_idx, false);
highlight_mid(bus_idx, false);
});
}
+void MainWindow::toggle_limiter()
+{
+ if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::MULTICHANNEL) {
+ ui->limiter_enabled->click();
+ }
+}
+
+void MainWindow::toggle_auto_makeup_gain()
+{
+ if (global_audio_mixer->get_mapping_mode() == AudioMixer::MappingMode::MULTICHANNEL) {
+ ui->makeup_gain_auto_checkbox->click();
+ }
+}
+
void MainWindow::highlight_locut(bool highlight)
{
post_to_main_thread([this, highlight]{
highlight_control_if_exists(bus_idx, &Ui::AudioExpandedView::compressor_enabled, highlight);
}
+void MainWindow::highlight_toggle_limiter(bool highlight)
+{
+ post_to_main_thread([this, highlight]{
+ highlight_control(ui->limiter_enabled, highlight);
+ highlight_control(ui->limiter_enabled_2, highlight);
+ });
+}
+
+void MainWindow::highlight_toggle_auto_makeup_gain(bool highlight)
+{
+ post_to_main_thread([this, highlight]{
+ highlight_control(ui->makeup_gain_auto_checkbox, highlight);
+ highlight_control(ui->makeup_gain_auto_checkbox_2, highlight);
+ });
+}
+
template<class T>
void MainWindow::set_relative_value(T *control, float value)
{
void toggle_auto_gain_staging(unsigned bus_idx) override;
void toggle_compressor(unsigned bus_idx) override;
void clear_peak(unsigned bus_idx) override;
+ void toggle_limiter() override;
+ void toggle_auto_makeup_gain() override;
void clear_all_highlights() override;
void highlight_toggle_auto_gain_staging(unsigned bus_idx, bool highlight) override;
void highlight_toggle_compressor(unsigned bus_idx, bool highlight) override;
void highlight_clear_peak(unsigned bus_idx, bool highlight) override {} // We don't mark this currently.
+ void highlight_toggle_limiter(bool highlight) override;
+ void highlight_toggle_auto_makeup_gain(bool highlight) override;
// Raw receivers are not used.
void controller_changed(unsigned controller) override {}
bind(&ControllerReceiver::toggle_compressor, receiver, _1));
match_button(note, MIDIMappingBusProto::kClearPeakFieldNumber, MIDIMappingProto::kClearPeakBankFieldNumber,
bind(&ControllerReceiver::clear_peak, receiver, _1));
+ match_button(note, MIDIMappingBusProto::kToggleLimiterFieldNumber, MIDIMappingProto::kToggleLimiterBankFieldNumber,
+ bind(&ControllerReceiver::toggle_limiter, receiver));
+ match_button(note, MIDIMappingBusProto::kToggleAutoMakeupGainFieldNumber, MIDIMappingProto::kToggleAutoMakeupGainBankFieldNumber,
+ bind(&ControllerReceiver::toggle_auto_makeup_gain, receiver));
}
case SND_SEQ_EVENT_PORT_START:
subscribe_to_port(seq, event->data.addr);
bool highlight_locut = false;
bool highlight_limiter_threshold = false;
bool highlight_makeup_gain = false;
+ bool highlight_toggle_limiter = false;
+ bool highlight_toggle_auto_makeup_gain = false;
for (size_t bus_idx = 0; bus_idx < size_t(mapping_proto->bus_mapping_size()); ++bus_idx) {
if (has_active_controller(
bus_idx, MIDIMappingBusProto::kLocutFieldNumber, MIDIMappingProto::kLocutBankFieldNumber)) {
bus_idx, MIDIMappingBusProto::kMakeupGainFieldNumber, MIDIMappingProto::kMakeupGainBankFieldNumber)) {
highlight_makeup_gain = true;
}
+ if (has_active_controller(
+ bus_idx, MIDIMappingBusProto::kToggleLimiterFieldNumber, MIDIMappingProto::kToggleLimiterBankFieldNumber)) {
+ highlight_toggle_limiter = true;
+ }
+ if (has_active_controller(
+ bus_idx, MIDIMappingBusProto::kToggleAutoMakeupGainFieldNumber, MIDIMappingProto::kToggleAutoMakeupGainBankFieldNumber)) {
+ highlight_toggle_auto_makeup_gain = true;
+ }
}
receiver->highlight_locut(highlight_locut);
receiver->highlight_limiter_threshold(highlight_limiter_threshold);
receiver->highlight_makeup_gain(highlight_makeup_gain);
+ receiver->highlight_toggle_limiter(highlight_toggle_limiter);
+ receiver->highlight_toggle_auto_makeup_gain(highlight_toggle_auto_makeup_gain);
// Per-bus controllers.
for (size_t bus_idx = 0; bus_idx < size_t(mapping_proto->bus_mapping_size()); ++bus_idx) {
virtual void toggle_auto_gain_staging(unsigned bus_idx) = 0;
virtual void toggle_compressor(unsigned bus_idx) = 0;
virtual void clear_peak(unsigned bus_idx) = 0;
+ virtual void toggle_limiter() = 0;
+ virtual void toggle_auto_makeup_gain() = 0;
// Signals to highlight controls to mark them to the user
// as MIDI-controllable (or not).
virtual void highlight_toggle_auto_gain_staging(unsigned bus_idx, bool highlight) = 0;
virtual void highlight_toggle_compressor(unsigned bus_idx, bool highlight) = 0;
virtual void highlight_clear_peak(unsigned bus_idx, bool highlight) = 0;
+ virtual void highlight_toggle_limiter(bool highlight) = 0;
+ virtual void highlight_toggle_auto_makeup_gain(bool highlight) = 0;
// Raw events; used for the editor dialog only.
virtual void controller_changed(unsigned controller) = 0;
optional MIDIButtonProto select_bank_3 = 16;
optional MIDIButtonProto select_bank_4 = 17;
optional MIDIButtonProto select_bank_5 = 18;
+ optional MIDIButtonProto toggle_limiter = 19;
+ optional MIDIButtonProto toggle_auto_makeup_gain = 20;
// These are also global (they belong to the master bus), and unlike
// the bank change commands, one would usually have only one of each,
// but there's no reason to limit them to one each, and the editor UI
// becomes simpler if they are the treated the same way as the bank
// commands.
- optional MIDIControllerProto locut = 19;
- optional MIDIControllerProto limiter_threshold = 20;
- optional MIDIControllerProto makeup_gain = 21;
+ optional MIDIControllerProto locut = 21;
+ optional MIDIControllerProto limiter_threshold = 22;
+ optional MIDIControllerProto makeup_gain = 23;
}
// The top-level protobuf, containing all the bus mappings, as well as
optional int32 limiter_threshold_bank = 13;
optional int32 makeup_gain_bank = 14;
- repeated MIDIMappingBusProto bus_mapping = 15;
+ // Global buttons.
+ optional int32 toggle_limiter_bank = 15;
+ optional int32 toggle_auto_makeup_gain_bank = 16;
+
+ repeated MIDIMappingBusProto bus_mapping = 17;
}
{ "Select bank 2", MIDIMappingBusProto::kSelectBank2FieldNumber, 0 },
{ "Select bank 3", MIDIMappingBusProto::kSelectBank3FieldNumber, 0 },
{ "Select bank 4", MIDIMappingBusProto::kSelectBank4FieldNumber, 0 },
- { "Select bank 5", MIDIMappingBusProto::kSelectBank5FieldNumber, 0 }
+ { "Select bank 5", MIDIMappingBusProto::kSelectBank5FieldNumber, 0 },
+ { "Toggle limiter", MIDIMappingBusProto::kToggleLimiterFieldNumber, MIDIMappingProto::kToggleLimiterBankFieldNumber },
+ { "Toggle auto makeup gain", MIDIMappingBusProto::kToggleAutoMakeupGainFieldNumber, MIDIMappingProto::kToggleAutoMakeupGainBankFieldNumber }
};
namespace {
void toggle_auto_gain_staging(unsigned bus_idx) override {}
void toggle_compressor(unsigned bus_idx) override {}
void clear_peak(unsigned bus_idx) override {}
+ void toggle_limiter() override {}
+ void toggle_auto_makeup_gain() override {}
void clear_all_highlights() override {}
void highlight_toggle_auto_gain_staging(unsigned bus_idx, bool highlight) override {}
void highlight_toggle_compressor(unsigned bus_idx, bool highlight) override {}
void highlight_clear_peak(unsigned bus_idx, bool highlight) override {}
+ void highlight_toggle_limiter(bool highlight) override {}
+ void highlight_toggle_auto_makeup_gain(bool highlight) override {}
// Raw events; used for the editor dialog only.
void controller_changed(unsigned controller) override;