aboutsummaryrefslogtreecommitdiff
path: root/src/aomusicplayer.cpp
diff options
context:
space:
mode:
authoriamgoofball <iamgoofball@gmail.com>2019-01-19 21:01:19 -0800
committerCrystalwarrior <varsash@gmail.com>2019-09-14 00:28:27 +0300
commit1139bf5cd0473817ba223ac8a9fe9d193575206a (patch)
tree802acb96d305982e3d550a2e73faf680675ad049 /src/aomusicplayer.cpp
parentf9b3bd5bb5fdbb739e806d004af09443bdbb2aac (diff)
Bass.dll functionality-based clientside music looping system by using channel loopable flags (no use of QTimer required)
Implement Goofball's AOV loopable music server message where any value that's not -1 when the length of the handle_message packet is longer than 3 will not loop the music (still confused about this but w/e)
Diffstat (limited to 'src/aomusicplayer.cpp')
-rw-r--r--src/aomusicplayer.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp
index 27918092..781a90c9 100644
--- a/src/aomusicplayer.cpp
+++ b/src/aomusicplayer.cpp
@@ -17,22 +17,42 @@ void AOMusicPlayer::play(QString p_song)
BASS_ChannelStop(m_stream);
QString f_path = ao_app->get_music_path(p_song);
-
- m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE);
+ unsigned int flags = BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE;
+ m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
this->set_volume(m_volume);
-
+ this->set_looping(m_looping);
if (ao_app->get_audio_output_device() != "default")
BASS_ChannelSetDevice(m_stream, BASS_GetDevice());
BASS_ChannelPlay(m_stream, false);
}
+void AOMusicPlayer::stop()
+{
+ BASS_ChannelStop(m_stream);
+}
+
void AOMusicPlayer::set_volume(int p_value)
{
m_volume = p_value;
float volume = m_volume / 100.0f;
BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume);
}
+
+void AOMusicPlayer::set_looping(bool toggle)
+{
+ m_looping = toggle;
+ if (BASS_ChannelFlags(m_stream, 0, 0) & BASS_SAMPLE_LOOP)
+ {
+ if (m_looping == false)
+ BASS_ChannelFlags(m_stream, 0, BASS_SAMPLE_LOOP); // remove the LOOP flag
+ }
+ else
+ {
+ if (m_looping == true)
+ BASS_ChannelFlags(m_stream, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag
+ }
+}
#elif defined(QTAUDIO)
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app)
{