From 4700902551f80769b54cb452b0fcb794669c553b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sat, 17 Aug 2019 20:47:41 +0200 Subject: [PATCH] fix qaudio volume --- include/aoblipplayer.h | 5 +++-- include/aosfxplayer.h | 8 +++++--- src/aoblipplayer.cpp | 30 ++++++++++++++++++++++-------- src/aosfxplayer.cpp | 24 +++++++++++++++++------- 4 files changed, 47 insertions(+), 20 deletions(-) diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h index 102a040..68dca19 100644 --- a/include/aoblipplayer.h +++ b/include/aoblipplayer.h @@ -21,15 +21,16 @@ public: void set_blips(QString p_sfx); void blip_tick(); - void set_volume(int p_volume); + void set_volume(qreal p_volume); + void set_volume_internal(qreal p_volume); int m_cycle = 0; private: QWidget *m_parent; AOApplication *ao_app; + qreal m_volume; - int m_volume; #if defined(BASSAUDIO) HSTREAM m_stream_list[5]; #elif defined(QTAUDIO) diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 4b97685..5b4b41d 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -20,17 +20,19 @@ public: void play(QString p_sfx, QString p_char = "", QString shout = ""); void stop(); - void set_volume(int p_volume); + void set_volume(qreal p_volume); + void set_volume_internal(qreal p_volume); private: QWidget *m_parent; AOApplication *ao_app; + qreal m_volume = 0; + #if defined(BASSAUDIO) HSTREAM m_stream; #elif defined(QTAUDIO) - QSoundEffect m_sfx; + QSoundEffect m_sfx; #endif - int m_volume = 0; }; #endif // AOSFXPLAYER_H diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 4dfb895..1c668ab 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -18,7 +18,7 @@ void AOBlipPlayer::set_blips(QString p_sfx) m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); } - set_volume(m_volume); + set_volume_internal(m_volume); } void AOBlipPlayer::blip_tick() @@ -34,11 +34,15 @@ void AOBlipPlayer::blip_tick() BASS_ChannelPlay(f_stream, false); } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) { - m_volume = p_value; + m_volume = p_value / 100; + set_volume_internal(m_volume); +} - float volume = p_value / 100.0f; +void AOBlipPlayer::set_volume_internal(qreal p_value) +{ + float volume = p_value; for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { @@ -61,7 +65,7 @@ void AOBlipPlayer::set_blips(QString p_sfx) m_blips.setSource(QUrl::fromLocalFile(f_path)); } - set_volume(m_volume); + set_volume_internal(m_volume); } void AOBlipPlayer::blip_tick() @@ -74,9 +78,14 @@ void AOBlipPlayer::blip_tick() m_blips.play(); } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) +{ + m_volume = p_value / 100; + set_volume_internal(m_volume); +} + +void AOBlipPlayer::set_volume_internal(qreal p_value) { - m_volume = p_value; m_blips.setVolume(m_volume); } #else //No audio @@ -96,7 +105,12 @@ void AOBlipPlayer::blip_tick() } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) +{ + +} + +void AOBlipPlayer::set_volume_internal(qreal p_value) { } diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 710d7a8..3faaad4 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -44,11 +44,16 @@ void AOSfxPlayer::stop() BASS_ChannelStop(m_stream); } -void AOSfxPlayer::set_volume(int p_value) +void AOSfxPlayer::set_volume(qreal p_value) { - m_volume = p_value; - float volume = p_value / 100.0f; - BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); + m_volume = p_value / 100; + set_volume_internal(m_volume); +} + +void AOSfxPlayer::set_volume_internal(qreal p_value) +{ + float volume = p_value; + BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); } #elif defined(QTAUDIO) //Using Qt's QSoundEffect class AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) @@ -83,7 +88,7 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { m_sfx.setSource(QUrl::fromLocalFile(f_path)); - set_volume(m_volume); + set_volume_internal(m_volume); m_sfx.play(); } @@ -94,9 +99,14 @@ void AOSfxPlayer::stop() m_sfx.stop(); } -void AOSfxPlayer::set_volume(int p_value) +void AOSfxPlayer::set_volume(qreal p_value) +{ + m_volume = p_value/100; + set_volume_internal(m_volume); +} + +void AOSfxPlayer::set_volume_internal(qreal p_value) { - m_volume = p_value; m_sfx.setVolume(m_volume); } #else