Soundd: Give each alert a volume (#29767)

* Give each alert a volume

* Update sound.h
pull/29773/head
Harald Schäfer 2 years ago committed by GitHub
parent f4f92f1a2f
commit 75ead2c389
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      selfdrive/ui/soundd/sound.cc
  2. 21
      selfdrive/ui/soundd/sound.h
  3. 2
      selfdrive/ui/tests/test_sound.cc

@ -15,12 +15,13 @@
Sound::Sound(QObject *parent) : sm({"controlsState", "microphone"}) {
qInfo() << "default audio device: " << QAudioDeviceInfo::defaultOutputDevice().deviceName();
for (auto &[alert, fn, loops] : sound_list) {
for (auto &[alert, fn, loops, volume] : sound_list) {
QSoundEffect *s = new QSoundEffect(this);
QObject::connect(s, &QSoundEffect::statusChanged, [=]() {
assert(s->status() != QSoundEffect::Error);
});
s->setSource(QUrl::fromLocalFile("../../assets/sounds/" + fn));
s->setVolume(volume);
sounds[alert] = {s, loops};
}

@ -9,18 +9,21 @@
#include "system/hardware/hw.h"
#include "selfdrive/ui/ui.h"
const std::tuple<AudibleAlert, QString, int> sound_list[] = {
const float MAX_VOLUME = 1.0;
const std::tuple<AudibleAlert, QString, int, float> sound_list[] = {
// AudibleAlert, file name, loop count
{AudibleAlert::ENGAGE, "engage.wav", 0},
{AudibleAlert::DISENGAGE, "disengage.wav", 0},
{AudibleAlert::REFUSE, "refuse.wav", 0},
{AudibleAlert::ENGAGE, "engage.wav", 0, MAX_VOLUME},
{AudibleAlert::DISENGAGE, "disengage.wav", 0, MAX_VOLUME},
{AudibleAlert::REFUSE, "refuse.wav", 0, MAX_VOLUME},
{AudibleAlert::PROMPT, "prompt.wav", 0},
{AudibleAlert::PROMPT_REPEAT, "prompt.wav", QSoundEffect::Infinite},
{AudibleAlert::PROMPT_DISTRACTED, "prompt_distracted.wav", QSoundEffect::Infinite},
{AudibleAlert::PROMPT, "prompt.wav", 0, MAX_VOLUME},
{AudibleAlert::PROMPT_REPEAT, "prompt.wav", QSoundEffect::Infinite, MAX_VOLUME},
{AudibleAlert::PROMPT_DISTRACTED, "prompt_distracted.wav", QSoundEffect::Infinite, MAX_VOLUME},
{AudibleAlert::WARNING_SOFT, "warning_soft.wav", QSoundEffect::Infinite},
{AudibleAlert::WARNING_IMMEDIATE, "warning_immediate.wav", QSoundEffect::Infinite},
{AudibleAlert::WARNING_SOFT, "warning_soft.wav", QSoundEffect::Infinite, MAX_VOLUME},
{AudibleAlert::WARNING_IMMEDIATE, "warning_immediate.wav", QSoundEffect::Infinite, MAX_VOLUME},
};
class Sound : public QObject {

@ -31,7 +31,7 @@ void controls_thread(int loop_cnt) {
const int DT_CTRL = 10; // ms
for (int i = 0; i < loop_cnt; ++i) {
for (auto &[alert, fn, loops] : sound_list) {
for (auto &[alert, fn, loops, volume] : sound_list) {
printf("testing %s\n", qPrintable(fn));
for (int j = 0; j < 1000 / DT_CTRL; ++j) {
MessageBuilder msg;

Loading…
Cancel
Save