Added speed slider. Minor improvements

This commit is contained in:
2026-07-07 05:19:50 +02:00
parent 02bbf5cc2e
commit 71ce142351
4 changed files with 45 additions and 27 deletions

View File

@@ -53,26 +53,53 @@ Soundboard::Soundboard(QWidget* parent/* = nullptr */) :
main_layout->addLayout(top_layout);
// Volume slider
QHBoxLayout* volume_slider_layout = new QHBoxLayout();
m_volume_label = new QLabel("Volume: 80%");
m_volume_label->setFixedWidth(100);
volume_slider_layout->addWidget(m_volume_label);
m_volume_slider = new QSlider(Qt::Horizontal);
m_volume_slider->setToolTip("Adjust the output volume");
m_volume_slider->setRange(0, 80);
m_volume_slider->setRange(0, 100);
m_volume_slider->setValue(80);
m_volume_slider->setSingleStep(5);
main_layout->addWidget(m_volume_slider);
volume_slider_layout->addWidget(m_volume_slider);
connect(m_volume_slider, &QSlider::valueChanged, this, &Soundboard::set_volume);
main_layout->addLayout(volume_slider_layout);
// Speed slider
QHBoxLayout* speed_slider_layout = new QHBoxLayout();
m_speed_label = new QLabel("Speed: 100%");
m_speed_label->setFixedWidth(100);
speed_slider_layout->addWidget(m_speed_label);
m_speed_slider = new QSlider(Qt::Horizontal);
m_speed_slider->setToolTip("Adjust the audio speed");
m_speed_slider->setRange(0, 100);
m_speed_slider->setValue(100);
m_speed_slider->setSingleStep(5);
speed_slider_layout->addWidget(m_speed_slider);
connect(m_speed_slider, &QSlider::valueChanged, this, &Soundboard::set_speed);
main_layout->addLayout(speed_slider_layout);
// Middle
m_sound_list = new QListWidget();
m_sound_list->setSelectionMode(QAbstractItemView::SingleSelection);
main_layout->addWidget(m_sound_list);
connect(m_sound_list, &QListWidget::itemSelectionChanged, this, &Soundboard::play_sound);
connect(m_sound_list, &QListWidget::itemClicked, this, &Soundboard::play_sound);
// Bottom
QHBoxLayout* bottom_layout = new QHBoxLayout();
m_stop_button = new QPushButton("Stop");
m_stop_button->setToolTip("Stop all audio streams");
bottom_layout->addWidget(m_stop_button);
m_stop_button->setIcon(style()->standardIcon(QStyle::SP_MediaStop));
bottom_layout->addWidget(m_stop_button, 1);
connect(m_stop_button, &QPushButton::pressed, this, &Soundboard::stop_sounds);
m_monitor_toggle = new QCheckBox("Monitor");
@@ -194,7 +221,7 @@ void Soundboard::play_sound()
QString sound = item->text();
QString full_path = QDir(m_audio_directory).filePath(sound);
m_player.play_file(full_path, m_sink->get_name());
m_player.play_file(full_path, m_sink->get_name(), m_speed);
std::cout << "[INFO] Playing: " << sound << std::endl;
}
@@ -211,7 +238,13 @@ void Soundboard::set_volume(int value)
}
Pipewire::set_volume(m_sink->get_name(), value);
std::cout << "[INFO] Set volume to " << value << '%' << std::endl;
m_volume_label->setText(QString("Volume: ") + QString::number(value) + "%");
}
void Soundboard::set_speed(int value)
{
m_speed = static_cast<float>(value) / 100.0f;
m_speed_label->setText(QString("Speed: ") + QString::number(value) + "%");
}
void Soundboard::toggle_monitor(Qt::CheckState state)