From: Steinar H. Gunderson Date: Fri, 29 Jul 2016 18:05:44 +0000 (+0200) Subject: Actually activate the faders. X-Git-Tag: 1.4.0~125 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=35e2c9dbbd5899d6dd3b2f926f95eeba72d038ba;p=nageru Actually activate the faders. --- diff --git a/audio_mixer.cpp b/audio_mixer.cpp index 764d7a2..06c7f87 100644 --- a/audio_mixer.cpp +++ b/audio_mixer.cpp @@ -134,13 +134,15 @@ vector AudioMixer::get_output(double pts, unsigned num_samples, Resamplin num_samples, rate_adjustment_policy); } + + float volume = from_db(cards[card_index].fader_volume_db); if (card_index == 0) { for (unsigned i = 0; i < num_samples * 2; ++i) { - samples_out[i] = samples_card[i]; + samples_out[i] = samples_card[i] * volume; } } else { for (unsigned i = 0; i < num_samples * 2; ++i) { - samples_out[i] += samples_card[i]; + samples_out[i] += samples_card[i] * volume; } } } diff --git a/audio_mixer.h b/audio_mixer.h index f0336d2..8e15f54 100644 --- a/audio_mixer.h +++ b/audio_mixer.h @@ -42,6 +42,8 @@ public: // See comments inside get_output(). void set_current_loudness(double level_lufs) { loudness_lufs = level_lufs; } + void set_fader_volume(unsigned card_index, float level_db) { cards[card_index].fader_volume_db = level_db; } + void set_locut_cutoff(float cutoff_hz) { locut_cutoff_hz = cutoff_hz; @@ -154,6 +156,7 @@ private: std::mutex audio_mutex; std::unique_ptr resampling_queue; // Under audio_mutex. int64_t next_local_pts = 0; // Beginning of next frame, in TIMEBASE units. Under audio_mutex. + std::atomic fader_volume_db{0.0f}; }; CaptureCard cards[MAX_CARDS]; diff --git a/mainwindow.cpp b/mainwindow.cpp index d5accf3..f13b4ea 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -360,11 +360,13 @@ void MainWindow::compressor_threshold_knob_changed(int value) void MainWindow::mini_fader_changed(Ui::AudioMiniView *ui, int channel, int value) { - float volume_dbfs = value * 0.1f; + float volume_db = value * 0.1f; char buf[256]; - snprintf(buf, sizeof(buf), "%+.1f dB", volume_dbfs); + snprintf(buf, sizeof(buf), "%+.1f dB", volume_db); ui->fader_label->setText(buf); + + global_mixer->get_audio_mixer()->set_fader_volume(channel, volume_db); } void MainWindow::reset_meters_button_clicked()