compressor(OUTPUT_FREQUENCY),
correlation(OUTPUT_FREQUENCY)
{
- locut.init(FILTER_HPF, 2);
-
- set_locut_enabled(global_flags.locut_enabled);
+ for (unsigned bus_index = 0; bus_index < MAX_BUSES; ++bus_index) {
+ locut[bus_index].init(FILTER_HPF, 2);
+ locut_enabled[bus_index] = global_flags.locut_enabled;
+ }
set_gain_staging_db(global_flags.initial_gain_staging_db);
set_gain_staging_auto(global_flags.gain_staging_auto);
set_compressor_enabled(global_flags.compressor_enabled);
for (unsigned bus_index = 0; bus_index < input_mapping.buses.size(); ++bus_index) {
fill_audio_bus(samples_card, input_mapping.buses[bus_index], num_samples, &samples_bus[0]);
+ // Cut away everything under 120 Hz (or whatever the cutoff is);
+ // we don't need it for voice, and it will reduce headroom
+ // and confuse the compressor. (In particular, any hums at 50 or 60 Hz
+ // should be dampened.)
+ if (locut_enabled[bus_index]) {
+ locut[bus_index].render(samples_bus.data(), samples_bus.size() / 2, locut_cutoff_hz * 2.0 * M_PI / OUTPUT_FREQUENCY, 0.5f);
+ }
+
// TODO: We should measure post-fader.
deinterleave_samples(samples_bus, &left, &right);
measure_bus_levels(bus_index, left, right);
}
}
- // Cut away everything under 120 Hz (or whatever the cutoff is);
- // we don't need it for voice, and it will reduce headroom
- // and confuse the compressor. (In particular, any hums at 50 or 60 Hz
- // should be dampened.)
- if (locut_enabled) {
- locut.render(samples_out.data(), samples_out.size() / 2, locut_cutoff_hz * 2.0 * M_PI / OUTPUT_FREQUENCY, 0.5f);
- }
-
{
lock_guard<mutex> lock(compressor_mutex);
locut_cutoff_hz = cutoff_hz;
}
- void set_locut_enabled(bool enabled)
+ void set_locut_enabled(unsigned bus, bool enabled)
{
- locut_enabled = enabled;
+ locut_enabled[bus] = enabled;
}
- bool get_locut_enabled() const
+ bool get_locut_enabled(unsigned bus)
{
- return locut_enabled;
+ return locut_enabled[bus];
}
float get_limiter_threshold_dbfs() const
AudioDevice alsa_inputs[MAX_ALSA_CARDS]; // Under audio_mutex.
std::vector<ALSAInput::Device> available_alsa_cards;
- StereoFilter locut; // Default cutoff 120 Hz, 24 dB/oct.
std::atomic<float> locut_cutoff_hz;
- std::atomic<bool> locut_enabled{true};
+ StereoFilter locut[MAX_BUSES]; // Default cutoff 120 Hz, 24 dB/oct.
+ std::atomic<bool> locut_enabled[MAX_BUSES];
// First compressor; takes us up to about -12 dBFS.
mutable std::mutex compressor_mutex;
// TODO: Fetch all of the values these for completeness,
// not just the enable knobs implied by flags.
- ui->locut_enabled->setChecked(global_mixer->get_audio_mixer()->get_locut_enabled());
+#if 0
+ // TODO: Reenable for simple audio.
+ ui->locut_enabled->setChecked(global_mixer->get_audio_mixer()->get_locut_enabled(0));
+ connect(ui->locut_enabled, &QCheckBox::stateChanged, [this](int state){
+ global_mixer->get_audio_mixer()->set_locut_enabled(0, state == Qt::Checked);
+ });
+#else
+ ui->locut_enabled->setVisible(false);
+#endif
ui->gainstaging_knob->setValue(global_mixer->get_audio_mixer()->get_gain_staging_db());
ui->gainstaging_auto_checkbox->setChecked(global_mixer->get_audio_mixer()->get_gain_staging_auto());
ui->compressor_enabled->setChecked(global_mixer->get_audio_mixer()->get_compressor_enabled());
connect(ui->locut_cutoff_knob, &QDial::valueChanged, this, &MainWindow::cutoff_knob_changed);
cutoff_knob_changed(ui->locut_cutoff_knob->value());
- connect(ui->locut_enabled, &QCheckBox::stateChanged, [this](int state){
- global_mixer->get_audio_mixer()->set_locut_enabled(state == Qt::Checked);
- });
connect(ui->gainstaging_knob, &QAbstractSlider::valueChanged, this, &MainWindow::gain_staging_knob_changed);
connect(ui->gainstaging_auto_checkbox, &QCheckBox::stateChanged, [this](int state){
// TODO: Set the fader position.
ui->buses->addWidget(channel);
+ ui_audio_expanded_view->locut_enabled->setChecked(global_mixer->get_audio_mixer()->get_locut_enabled(bus_index));
+ connect(ui->locut_enabled, &QCheckBox::stateChanged, [this, bus_index](int state){
+ global_mixer->get_audio_mixer()->set_locut_enabled(bus_index, state == Qt::Checked);
+ });
+
slave_fader(audio_miniviews[bus_index]->fader, ui_audio_expanded_view->fader);
}
}