From bea1be71fd06888ac03fcddb47f6d497f8e07aab Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 29 Aug 2016 20:23:27 +0200 Subject: [PATCH] Hook up the EQ controls and labels. --- audio_mixer.h | 6 ++++++ mainwindow.cpp | 37 +++++++++++++++++++++++++++++++++++++ mainwindow.h | 2 ++ 3 files changed, 45 insertions(+) diff --git a/audio_mixer.h b/audio_mixer.h index c332671..1e25f52 100644 --- a/audio_mixer.h +++ b/audio_mixer.h @@ -124,6 +124,12 @@ public: eq_level_db[bus_index][band] = db_gain; } + float get_eq(unsigned bus_index, EQBand band) const + { + assert(band >= 0 && band < NUM_EQ_BANDS); + return eq_level_db[bus_index][band]; + } + float get_limiter_threshold_dbfs() const { return limiter_threshold_dbfs; diff --git a/mainwindow.cpp b/mainwindow.cpp index 2ef1da4..ea742f7 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -369,6 +369,9 @@ void MainWindow::setup_audio_expanded_view() ui_audio_expanded_view->bus_desc_label->setFullText( QString::fromStdString(mapping.buses[bus_index].name)); audio_expanded_views[bus_index] = ui_audio_expanded_view; + update_eq_label(bus_index, EQ_BAND_TREBLE, global_mixer->get_audio_mixer()->get_eq(bus_index, EQ_BAND_TREBLE)); + update_eq_label(bus_index, EQ_BAND_MID, global_mixer->get_audio_mixer()->get_eq(bus_index, EQ_BAND_MID)); + update_eq_label(bus_index, EQ_BAND_BASS, global_mixer->get_audio_mixer()->get_eq(bus_index, EQ_BAND_BASS)); // TODO: Set the fader position. ui->buses->addWidget(channel); @@ -377,6 +380,13 @@ void MainWindow::setup_audio_expanded_view() global_mixer->get_audio_mixer()->set_locut_enabled(bus_index, state == Qt::Checked); }); + connect(ui_audio_expanded_view->treble_knob, &QDial::valueChanged, + bind(&MainWindow::eq_knob_changed, this, bus_index, EQ_BAND_TREBLE, _1)); + connect(ui_audio_expanded_view->mid_knob, &QDial::valueChanged, + bind(&MainWindow::eq_knob_changed, this, bus_index, EQ_BAND_MID, _1)); + connect(ui_audio_expanded_view->bass_knob, &QDial::valueChanged, + bind(&MainWindow::eq_knob_changed, this, bus_index, EQ_BAND_BASS, _1)); + ui_audio_expanded_view->gainstaging_knob->setValue(global_mixer->get_audio_mixer()->get_gain_staging_db(bus_index)); ui_audio_expanded_view->gainstaging_auto_checkbox->setChecked(global_mixer->get_audio_mixer()->get_gain_staging_auto(bus_index)); ui_audio_expanded_view->compressor_enabled->setChecked(global_mixer->get_audio_mixer()->get_compressor_enabled(bus_index)); @@ -530,6 +540,33 @@ void MainWindow::report_disk_space(off_t free_bytes, double estimated_seconds_le }); } +void MainWindow::eq_knob_changed(unsigned bus_index, EQBand band, int value) +{ + float gain_db = value * 0.1f; + global_mixer->get_audio_mixer()->set_eq(bus_index, band, gain_db); + + update_eq_label(bus_index, band, gain_db); +} + +void MainWindow::update_eq_label(unsigned bus_index, EQBand band, float gain_db) +{ + Ui::AudioExpandedView *view = audio_expanded_views[bus_index]; + string db_string = format_db(gain_db, DB_WITH_SIGN); + switch (band) { + case EQ_BAND_TREBLE: + view->treble_label->setText(QString::fromStdString("Treble: " + db_string)); + break; + case EQ_BAND_MID: + view->mid_label->setText(QString::fromStdString("Mid: " + db_string)); + break; + case EQ_BAND_BASS: + view->bass_label->setText(QString::fromStdString("Bass: " + db_string)); + break; + default: + assert(false); + } +} + void MainWindow::limiter_threshold_knob_changed(int value) { float threshold_dbfs = value * 0.1f; diff --git a/mainwindow.h b/mainwindow.h index 73a6235..4c9d0b8 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -50,6 +50,7 @@ public slots: void gain_staging_knob_changed(unsigned bus_index, int value); void final_makeup_gain_knob_changed(int value); void cutoff_knob_changed(int value); + void eq_knob_changed(unsigned bus_index, EQBand band, int value); void limiter_threshold_knob_changed(int value); void compressor_threshold_knob_changed(unsigned bus_index, int value); void mini_fader_changed(int bus, double db_volume); @@ -61,6 +62,7 @@ private: void setup_audio_expanded_view(); bool eventFilter(QObject *watched, QEvent *event) override; void set_white_balance(int channel_number, int x, int y); + void update_eq_label(unsigned bus_index, EQBand band, float gain_db); // Called from DiskSpaceEstimator. void report_disk_space(off_t free_bytes, double estimated_seconds_left); -- 2.39.2