]> git.sesse.net Git - nageru/commitdiff
Actually activate the faders.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 29 Jul 2016 18:05:44 +0000 (20:05 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 19 Oct 2016 22:55:44 +0000 (00:55 +0200)
audio_mixer.cpp
audio_mixer.h
mainwindow.cpp

index 764d7a2217fbbdfa6a7122960beb29668b5e207d..06c7f870fcae75203eb75749ebf8c568e44d5bf9 100644 (file)
@@ -134,13 +134,15 @@ vector<float> 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;
                        }
                }
        }
index f0336d29d57368ae3dbbe247594c24b8817b4b24..8e15f543d48ac7921a7da0b6e98a3855436167fc 100644 (file)
@@ -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<ResamplingQueue> resampling_queue;  // Under audio_mutex.
                int64_t next_local_pts = 0;  // Beginning of next frame, in TIMEBASE units. Under audio_mutex.
+               std::atomic<float> fader_volume_db{0.0f};
        };
        CaptureCard cards[MAX_CARDS];
 
index d5accf3ac0684d6f15b1a704ef6e6aff33458a5a..f13b4ea355249ce59f8688bd381454befb279ea4 100644 (file)
@@ -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()