X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mainwindow.cpp;h=b20e3222cda213e1cc994f128996aa5a5cf90975;hb=8d846a0cf80b24e9189389b1d0e126a0a717c86d;hp=839f1b359e1a9060fdb64a8cfdd942b0f42c26ea;hpb=0c04688622b24b3388743bbe73e529c4d5d8c1bc;p=nageru diff --git a/mainwindow.cpp b/mainwindow.cpp index 839f1b3..b20e322 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -557,6 +557,7 @@ void MainWindow::setup_audio_expanded_view() ui_audio_expanded_view->bus_desc_label->setFullText( QString::fromStdString(get_bus_desc_label(mapping.buses[bus_index]))); audio_expanded_views[bus_index] = ui_audio_expanded_view; + update_stereo_knob_and_label(bus_index, lrintf(100.0f * global_audio_mixer->get_stereo_width(bus_index))); 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)); @@ -572,6 +573,9 @@ void MainWindow::setup_audio_expanded_view() midi_mapper.refresh_lights(); }); + connect(ui_audio_expanded_view->stereo_width_knob, &QDial::valueChanged, + bind(&MainWindow::stereo_width_knob_changed, this, bus_index, _1)); + 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, @@ -805,6 +809,14 @@ void MainWindow::report_disk_space(off_t free_bytes, double estimated_seconds_le }); } +void MainWindow::stereo_width_knob_changed(unsigned bus_index, int value) +{ + float stereo_width = value * 0.01f; + global_audio_mixer->set_stereo_width(bus_index, stereo_width); + + update_stereo_label(bus_index, value); +} + void MainWindow::eq_knob_changed(unsigned bus_index, EQBand band, int value) { float gain_db = value * 0.1f; @@ -813,6 +825,34 @@ void MainWindow::eq_knob_changed(unsigned bus_index, EQBand band, int value) update_eq_label(bus_index, band, gain_db); } +void MainWindow::update_stereo_knob_and_label(unsigned bus_index, int stereo_width_percent) +{ + Ui::AudioExpandedView *view = audio_expanded_views[bus_index]; + + if (global_audio_mixer->is_mono(bus_index)) { + view->stereo_width_knob->setEnabled(false); + view->stereo_width_label->setEnabled(false); + } else { + view->stereo_width_knob->setEnabled(true); + view->stereo_width_label->setEnabled(true); + } + view->stereo_width_knob->setValue(stereo_width_percent); + update_stereo_label(bus_index, stereo_width_percent); +} + +void MainWindow::update_stereo_label(unsigned bus_index, int stereo_width_percent) +{ + Ui::AudioExpandedView *view = audio_expanded_views[bus_index]; + + if (global_audio_mixer->is_mono(bus_index)) { + view->stereo_width_label->setText("Mono"); + } else { + char buf[256]; + snprintf(buf, sizeof(buf), "Stereo: %d%%", stereo_width_percent); + view->stereo_width_label->setText(buf); + } +} + void MainWindow::update_eq_label(unsigned bus_index, EQBand band, float gain_db) { Ui::AudioExpandedView *view = audio_expanded_views[bus_index]; @@ -1098,6 +1138,11 @@ void MainWindow::set_makeup_gain(float value) set_relative_value(ui->makeup_gain_knob, value); } +void MainWindow::set_stereo_width(unsigned bus_idx, float value) +{ + set_relative_value_if_exists(bus_idx, &Ui::AudioExpandedView::stereo_width_knob, value); +} + void MainWindow::set_treble(unsigned bus_idx, float value) { set_relative_value_if_exists(bus_idx, &Ui::AudioExpandedView::treble_knob, value); @@ -1220,6 +1265,11 @@ void MainWindow::highlight_makeup_gain(bool highlight) }); } +void MainWindow::highlight_stereo_width(unsigned bus_idx, bool highlight) +{ + highlight_control_if_exists(bus_idx, &Ui::AudioExpandedView::stereo_width_knob, highlight); +} + void MainWindow::highlight_treble(unsigned bus_idx, bool highlight) { highlight_control_if_exists(bus_idx, &Ui::AudioExpandedView::treble_knob, highlight);