diff --git a/src/common/config.cpp b/src/common/config.cpp index 4a8effbdf..0d9ff093d 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -32,6 +32,7 @@ namespace Config { static bool isNeo = false; static bool isFullscreen = false; static bool playBGM = false; +static int BGMvolume = 50; static u32 screenWidth = 1280; static u32 screenHeight = 720; static s32 gpuId = -1; // Vulkan physical device index. Set to negative for auto select @@ -89,6 +90,10 @@ bool getPlayBGM() { return playBGM; } +int getBGMvolume() { + return BGMvolume; +} + u32 getScreenWidth() { return screenWidth; } @@ -249,6 +254,10 @@ void setPlayBGM(bool enable) { playBGM = enable; } +void setBGMvolume(int volume) { + BGMvolume = volume; +} + void setLanguage(u32 language) { m_language = language; } @@ -412,6 +421,7 @@ void load(const std::filesystem::path& path) { isNeo = toml::find_or(general, "isPS4Pro", false); isFullscreen = toml::find_or(general, "Fullscreen", false); playBGM = toml::find_or(general, "playBGM", false); + BGMvolume = toml::find_or(general, "BGMvolume", 50); logFilter = toml::find_or(general, "logFilter", ""); logType = toml::find_or(general, "logType", "sync"); userName = toml::find_or(general, "userName", "shadPS4"); @@ -513,6 +523,7 @@ void save(const std::filesystem::path& path) { data["General"]["isPS4Pro"] = isNeo; data["General"]["Fullscreen"] = isFullscreen; data["General"]["playBGM"] = playBGM; + data["General"]["BGMvolume"] = BGMvolume; data["General"]["logFilter"] = logFilter; data["General"]["logType"] = logType; data["General"]["userName"] = userName; @@ -565,6 +576,7 @@ void setDefaultValues() { isNeo = false; isFullscreen = false; playBGM = false; + BGMvolume = 50; screenWidth = 1280; screenHeight = 720; logFilter = ""; diff --git a/src/common/config.h b/src/common/config.h index f2b5187f8..eeeff0b2e 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -14,6 +14,8 @@ void save(const std::filesystem::path& path); bool isNeoMode(); bool isFullscreenMode(); bool getPlayBGM(); +int getBGMvolume(); + std::string getLogFilter(); std::string getLogType(); std::string getUserName(); @@ -49,6 +51,7 @@ void setScreenWidth(u32 width); void setScreenHeight(u32 height); void setFullscreenMode(bool enable); void setPlayBGM(bool enable); +void setBGMvolume(int volume); void setLanguage(u32 language); void setNeoMode(bool enable); void setUserName(const std::string& type); diff --git a/src/qt_gui/background_music_player.cpp b/src/qt_gui/background_music_player.cpp index 37d877098..a40c5bfae 100644 --- a/src/qt_gui/background_music_player.cpp +++ b/src/qt_gui/background_music_player.cpp @@ -10,6 +10,12 @@ BackgroundMusicPlayer::BackgroundMusicPlayer(QObject* parent) : QObject(parent) m_mediaPlayer->setLoops(QMediaPlayer::Infinite); } +void BackgroundMusicPlayer::setVolume(int volume) { + float linearVolume = QAudio::convertVolume(volume / 100.0f, QAudio::LogarithmicVolumeScale, + QAudio::LinearVolumeScale); + m_audioOutput->setVolume(linearVolume); +} + void BackgroundMusicPlayer::playMusic(const QString& snd0path) { if (snd0path.isEmpty()) { stopMusic(); diff --git a/src/qt_gui/background_music_player.h b/src/qt_gui/background_music_player.h index 52f44f431..6d70fe68c 100644 --- a/src/qt_gui/background_music_player.h +++ b/src/qt_gui/background_music_player.h @@ -16,6 +16,7 @@ public: return instance; } + void setVolume(int volume); void playMusic(const QString& snd0path); void stopMusic(); @@ -25,4 +26,4 @@ private: QMediaPlayer* m_mediaPlayer; QAudioOutput* m_audioOutput; QUrl m_currentMusic; -}; \ No newline at end of file +}; diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 759c6992e..18cbdac56 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -527,7 +527,11 @@ void MainWindow::PlayBackgroundMusic() { int itemID = isTableList ? m_game_list_frame->currentItem()->row() : m_game_grid_frame->crtRow * m_game_grid_frame->columnCnt + m_game_grid_frame->crtColumn; - + if (itemID > m_game_info->m_games.size() - 1) { + // Can happen in grid mode + BackgroundMusicPlayer::getInstance().stopMusic(); + return; + } QString snd0path; Common::FS::PathToQString(snd0path, m_game_info->m_games[itemID].snd0_path); BackgroundMusicPlayer::getInstance().playMusic(snd0path); @@ -619,6 +623,7 @@ void MainWindow::ConfigureGuiFromSettings() { } else { ui->setlistModeGridAct->setChecked(true); } + BackgroundMusicPlayer::getInstance().setVolume(Config::getBGMvolume()); } void MainWindow::SaveWindowState() const { diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index e02aeed9e..f8214f298 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -140,8 +140,17 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge checkUpdate->exec(); }); - connect(ui->playBGMCheckBox, &QCheckBox::stateChanged, this, - [](int val) { Config::setPlayBGM(val); }); + connect(ui->playBGMCheckBox, &QCheckBox::stateChanged, this, [](int val) { + Config::setPlayBGM(val); + if (val == Qt::Unchecked) { + BackgroundMusicPlayer::getInstance().stopMusic(); + } + }); + + connect(ui->BGMVolumeSlider, &QSlider::valueChanged, this, [](float val) { + Config::setBGMvolume(val); + BackgroundMusicPlayer::getInstance().setVolume(val); + }); } // GPU TAB @@ -231,6 +240,7 @@ void SettingsDialog::LoadValuesFromConfig() { ui->nullGpuCheckBox->setChecked(Config::nullGpu()); ui->dumpPM4CheckBox->setChecked(Config::dumpPM4()); ui->playBGMCheckBox->setChecked(Config::getPlayBGM()); + ui->BGMVolumeSlider->setValue((Config::getBGMvolume())); ui->fullscreenCheckBox->setChecked(Config::isFullscreenMode()); ui->showSplashCheckBox->setChecked(Config::showSplash()); ui->ps4proCheckBox->setChecked(Config::isNeoMode()); @@ -371,4 +381,4 @@ bool SettingsDialog::eventFilter(QObject* obj, QEvent* event) { } } return QDialog::eventFilter(obj, event); -} \ No newline at end of file +} diff --git a/src/qt_gui/settings_dialog.ui b/src/qt_gui/settings_dialog.ui index ca71d5ca4..2ca22253d 100644 --- a/src/qt_gui/settings_dialog.ui +++ b/src/qt_gui/settings_dialog.ui @@ -52,7 +52,7 @@ 0 0 836 - 442 + 446 @@ -369,7 +369,7 @@ 10 30 241 - 41 + 71 @@ -386,6 +386,55 @@ + + + + + + + + Volume + + + + + + + Set the volume of the background music. + + + 100 + + + 10 + + + 20 + + + 50 + + + Qt::Orientation::Horizontal + + + false + + + false + + + QSlider::TickPosition::NoTicks + + + 10 + + + + + + + diff --git a/src/qt_gui/translations/ar.ts b/src/qt_gui/translations/ar.ts index b62125a7a..0294dd138 100644 --- a/src/qt_gui/translations/ar.ts +++ b/src/qt_gui/translations/ar.ts @@ -534,6 +534,11 @@ Play title music تشغيل موسيقى العنوان + + + Volume + الصوت + MainWindow diff --git a/src/qt_gui/translations/da_DK.ts b/src/qt_gui/translations/da_DK.ts index c41b34431..da8ab5901 100644 --- a/src/qt_gui/translations/da_DK.ts +++ b/src/qt_gui/translations/da_DK.ts @@ -534,6 +534,11 @@ Play title music Afspil titelsang + + + Volume + Lydstyrke + MainWindow diff --git a/src/qt_gui/translations/de.ts b/src/qt_gui/translations/de.ts index 028f448bc..486b3ce02 100644 --- a/src/qt_gui/translations/de.ts +++ b/src/qt_gui/translations/de.ts @@ -534,6 +534,11 @@ Play title music Titelmusik abspielen + + + Volume + Lautstärke + MainWindow diff --git a/src/qt_gui/translations/el.ts b/src/qt_gui/translations/el.ts index ed3e0336d..35d2ddbea 100644 --- a/src/qt_gui/translations/el.ts +++ b/src/qt_gui/translations/el.ts @@ -534,6 +534,11 @@ Play title music Αναπαραγωγή μουσικής τίτλου + + + Volume + ένταση + MainWindow diff --git a/src/qt_gui/translations/en.ts b/src/qt_gui/translations/en.ts index b0da5bde2..3310ba1ca 100644 --- a/src/qt_gui/translations/en.ts +++ b/src/qt_gui/translations/en.ts @@ -534,6 +534,11 @@ Play title music Play title music + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/es_ES.ts b/src/qt_gui/translations/es_ES.ts index 730346d84..740624aea 100644 --- a/src/qt_gui/translations/es_ES.ts +++ b/src/qt_gui/translations/es_ES.ts @@ -534,6 +534,11 @@ Play title music Reproducir la música de apertura + + + Volume + Volumen + MainWindow diff --git a/src/qt_gui/translations/fa_IR.ts b/src/qt_gui/translations/fa_IR.ts index 217edb780..5c566dab3 100644 --- a/src/qt_gui/translations/fa_IR.ts +++ b/src/qt_gui/translations/fa_IR.ts @@ -534,6 +534,11 @@ Play title music پخش موسیقی عنوان + + + Volume + صدا + MainWindow diff --git a/src/qt_gui/translations/fi.ts b/src/qt_gui/translations/fi.ts index 68e47a6b6..02202ed20 100644 --- a/src/qt_gui/translations/fi.ts +++ b/src/qt_gui/translations/fi.ts @@ -534,6 +534,11 @@ Play title music Soita otsikkomusiikkia + + + Volume + Äänenvoimakkuus + MainWindow diff --git a/src/qt_gui/translations/fr.ts b/src/qt_gui/translations/fr.ts index e47299964..6572f303b 100644 --- a/src/qt_gui/translations/fr.ts +++ b/src/qt_gui/translations/fr.ts @@ -534,6 +534,11 @@ Play title music Lire la musique du titre + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/hu_HU.ts b/src/qt_gui/translations/hu_HU.ts index 0d0d45262..05973faf0 100644 --- a/src/qt_gui/translations/hu_HU.ts +++ b/src/qt_gui/translations/hu_HU.ts @@ -534,6 +534,11 @@ Play title music Címzene lejátszása + + + Volume + Hangerő + MainWindow diff --git a/src/qt_gui/translations/id.ts b/src/qt_gui/translations/id.ts index 9efa123fe..49abf2371 100644 --- a/src/qt_gui/translations/id.ts +++ b/src/qt_gui/translations/id.ts @@ -534,6 +534,11 @@ Play title music Putar musik judul + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/it.ts b/src/qt_gui/translations/it.ts index e3203862b..e83e15838 100644 --- a/src/qt_gui/translations/it.ts +++ b/src/qt_gui/translations/it.ts @@ -534,6 +534,11 @@ Play title music Riproduci musica del titolo + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/ja_JP.ts b/src/qt_gui/translations/ja_JP.ts index 4e079f1d3..290b6be9e 100644 --- a/src/qt_gui/translations/ja_JP.ts +++ b/src/qt_gui/translations/ja_JP.ts @@ -534,6 +534,11 @@ Play title music タイトル音楽を再生する + + + Volume + 音量 + MainWindow diff --git a/src/qt_gui/translations/ko_KR.ts b/src/qt_gui/translations/ko_KR.ts index 1476a893d..fba167632 100644 --- a/src/qt_gui/translations/ko_KR.ts +++ b/src/qt_gui/translations/ko_KR.ts @@ -534,6 +534,11 @@ Play title music Play title music + + + Volume + 음량 + MainWindow diff --git a/src/qt_gui/translations/lt_LT.ts b/src/qt_gui/translations/lt_LT.ts index abf084e0b..52fdbbc50 100644 --- a/src/qt_gui/translations/lt_LT.ts +++ b/src/qt_gui/translations/lt_LT.ts @@ -534,6 +534,11 @@ Play title music Groti antraštės muziką + + + Volume + Garsumas + MainWindow diff --git a/src/qt_gui/translations/nb.ts b/src/qt_gui/translations/nb.ts index b3797ae05..2dd1b431e 100644 --- a/src/qt_gui/translations/nb.ts +++ b/src/qt_gui/translations/nb.ts @@ -534,6 +534,11 @@ Play title music Spill tittelmusikk + + + Volume + Volum + MainWindow diff --git a/src/qt_gui/translations/nl.ts b/src/qt_gui/translations/nl.ts index cf659acbe..9636037cc 100644 --- a/src/qt_gui/translations/nl.ts +++ b/src/qt_gui/translations/nl.ts @@ -534,6 +534,11 @@ Play title music Titelmuziek afspelen + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/pl_PL.ts b/src/qt_gui/translations/pl_PL.ts index 810971804..ae7e5cfae 100644 --- a/src/qt_gui/translations/pl_PL.ts +++ b/src/qt_gui/translations/pl_PL.ts @@ -534,6 +534,11 @@ Play title music Odtwórz muzykę tytułową + + + Volume + Głośność + MainWindow diff --git a/src/qt_gui/translations/pt_BR.ts b/src/qt_gui/translations/pt_BR.ts index 4676dfff6..a1e5d77ca 100644 --- a/src/qt_gui/translations/pt_BR.ts +++ b/src/qt_gui/translations/pt_BR.ts @@ -534,6 +534,11 @@ Play title music Reproduzir música de abertura + + + Volume + Volume + MainWindow diff --git a/src/qt_gui/translations/ro_RO.ts b/src/qt_gui/translations/ro_RO.ts index ac298469d..3667f699d 100644 --- a/src/qt_gui/translations/ro_RO.ts +++ b/src/qt_gui/translations/ro_RO.ts @@ -534,6 +534,11 @@ Play title music Redă muzica titlului + + + Volume + Volum + MainWindow diff --git a/src/qt_gui/translations/ru_RU.ts b/src/qt_gui/translations/ru_RU.ts index ca828c433..fbbe07f45 100644 --- a/src/qt_gui/translations/ru_RU.ts +++ b/src/qt_gui/translations/ru_RU.ts @@ -534,6 +534,11 @@ Play title music Воспроизведение заглавной музыки + + + Volume + Громкость + MainWindow diff --git a/src/qt_gui/translations/sq.ts b/src/qt_gui/translations/sq.ts index 710de63f9..ea377808e 100644 --- a/src/qt_gui/translations/sq.ts +++ b/src/qt_gui/translations/sq.ts @@ -534,6 +534,11 @@ Play title music Luaj muzikën e titullit + + + Volume + Volumi + MainWindow diff --git a/src/qt_gui/translations/tr_TR.ts b/src/qt_gui/translations/tr_TR.ts index a4fa289f2..87ebee69e 100644 --- a/src/qt_gui/translations/tr_TR.ts +++ b/src/qt_gui/translations/tr_TR.ts @@ -534,6 +534,11 @@ Play title music Başlık müziğini çal + + + Volume + Ses seviyesi + MainWindow diff --git a/src/qt_gui/translations/vi_VN.ts b/src/qt_gui/translations/vi_VN.ts index af5eb5249..485997019 100644 --- a/src/qt_gui/translations/vi_VN.ts +++ b/src/qt_gui/translations/vi_VN.ts @@ -534,6 +534,11 @@ Play title music Phát nhạc tiêu đề + + + Volume + Âm lượng + MainWindow diff --git a/src/qt_gui/translations/zh_CN.ts b/src/qt_gui/translations/zh_CN.ts index 638fa08cb..2505e8acc 100644 --- a/src/qt_gui/translations/zh_CN.ts +++ b/src/qt_gui/translations/zh_CN.ts @@ -534,6 +534,11 @@ Play title music 播放标题音乐 + + + Volume + 音量 + MainWindow diff --git a/src/qt_gui/translations/zh_TW.ts b/src/qt_gui/translations/zh_TW.ts index 4d508d2ad..826f843f4 100644 --- a/src/qt_gui/translations/zh_TW.ts +++ b/src/qt_gui/translations/zh_TW.ts @@ -534,6 +534,11 @@ Play title music 播放標題音樂 + + + Volume + 音量 + MainWindow