connect(ui->full_prev_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0));
connect(ui->full_next_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0));
+ // And bind the same to PgUp/PgDown.
+ auto switch_page = [this]{
+ ui->audio_views->setCurrentIndex(1 - ui->audio_views->currentIndex());
+ };
+ connect(new QShortcut(QKeySequence::MoveToNextPage, this), &QShortcut::activated, switch_page);
+ connect(new QShortcut(QKeySequence::MoveToPreviousPage, this), &QShortcut::activated, switch_page);
+
last_audio_level_callback = steady_clock::now() - seconds(1);
}
setup_audio_miniview();
setup_audio_expanded_view();
+ global_audio_mixer->set_state_changed_callback(bind(&MainWindow::audio_state_changed, this));
slave_knob(ui->locut_cutoff_knob, ui->locut_cutoff_knob_2);
slave_knob(ui->limiter_threshold_knob, ui->limiter_threshold_knob_2);
peak_meter->set_max_level(0.0f);
peak_meter->set_ref_level(0.0f);
- // TODO: Set the fader position.
+ ui_audio_miniview->fader->setDbValue(global_audio_mixer->get_fader_volume(bus_index));
+
ui->faders->addWidget(channel);
connect(ui_audio_miniview->fader, &NonLinearFader::dbValueChanged,
update_eq_label(bus_index, EQ_BAND_TREBLE, global_audio_mixer->get_eq(bus_index, EQ_BAND_TREBLE));
update_eq_label(bus_index, EQ_BAND_MID, global_audio_mixer->get_eq(bus_index, EQ_BAND_MID));
update_eq_label(bus_index, EQ_BAND_BASS, global_audio_mixer->get_eq(bus_index, EQ_BAND_BASS));
- // TODO: Set the fader position.
+ ui_audio_expanded_view->fader->setDbValue(global_audio_mixer->get_fader_volume(bus_index));
ui->buses->addWidget(channel);
ui_audio_expanded_view->locut_enabled->setChecked(global_audio_mixer->get_locut_enabled(bus_index));
global_mixer->set_wb(Mixer::OUTPUT_INPUT0 + channel_number, r, g, b);
previews[channel_number]->display->updateGL();
}
+
+void MainWindow::audio_state_changed()
+{
+ post_to_main_thread([this]{
+ InputMapping mapping = global_audio_mixer->get_input_mapping();
+ for (unsigned bus_index = 0; bus_index < mapping.buses.size(); ++bus_index) {
+ const InputMapping::Bus &bus = mapping.buses[bus_index];
+ string suffix;
+ if (bus.device.type == InputSourceType::ALSA_INPUT) {
+ ALSAPool::Device::State state = global_audio_mixer->get_alsa_card_state(bus.device.index);
+ if (state == ALSAPool::Device::State::STARTING) {
+ suffix = " (busy)";
+ } else if (state == ALSAPool::Device::State::DEAD) {
+ suffix = " (dead)";
+ }
+ }
+
+ audio_miniviews[bus_index]->bus_desc_label->setFullText(
+ QString::fromStdString(bus.name + suffix));
+ audio_expanded_views[bus_index]->bus_desc_label->setFullText(
+ QString::fromStdString(bus.name + suffix));
+ }
+ });
+}