aboutsummaryrefslogtreecommitdiff
path: root/src/aomusicplayer.cpp
diff options
context:
space:
mode:
authorCrystalwarrior <varsash@gmail.com>2020-05-22 01:18:24 +0300
committerCrystalwarrior <varsash@gmail.com>2020-05-22 01:18:24 +0300
commitc8e12558cdd3fd0769b81679ad09edf1f29b780f (patch)
tree7dae2225e574c3ee55d6b82a1d2f399db4ace5c0 /src/aomusicplayer.cpp
parentdfac0652c8eb9bd48ceea7ae755e9c2f7e5cb1a2 (diff)
Clang-ify the code with this styling using Visual Studio Code:
{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Stroustrup, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All } (this is the Visual Studio preset with only "BreakBeforeBraces" changed from Allman to Stroustrup)
Diffstat (limited to 'src/aomusicplayer.cpp')
-rw-r--r--src/aomusicplayer.cpp262
1 files changed, 123 insertions, 139 deletions
diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp
index 9a96b3eb..77222e1d 100644
--- a/src/aomusicplayer.cpp
+++ b/src/aomusicplayer.cpp
@@ -3,108 +3,102 @@
#ifdef BASSAUDIO
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app)
{
- m_parent = parent;
- ao_app = p_ao_app;
+ m_parent = parent;
+ ao_app = p_ao_app;
}
AOMusicPlayer::~AOMusicPlayer()
{
- for (int n_stream = 0 ; n_stream < m_channelmax ; ++n_stream)
- {
- BASS_ChannelStop(m_stream_list[n_stream]);
- }
+ for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
+ BASS_ChannelStop(m_stream_list[n_stream]);
+ }
}
void AOMusicPlayer::play(QString p_song, int channel, bool loop, int effect_flags)
{
- channel = channel % m_channelmax;
- if (channel < 0) //wtf?
- return;
- QString f_path = ao_app->get_music_path(p_song);
-
- unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE;
- if (loop)
- flags |= BASS_SAMPLE_LOOP;
-
- DWORD newstream;
- if (f_path.endsWith(".opus"))
- newstream = BASS_OPUS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
- else
- newstream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
-
- if (ao_app->get_audio_output_device() != "default")
- BASS_ChannelSetDevice(m_stream_list[channel], BASS_GetDevice());
-
- QString d_path = f_path + ".txt";
-
- loop_start = 0;
- loop_end = BASS_ChannelGetLength(newstream, BASS_POS_BYTE);
- if (loop && file_exists(d_path)) //Contains loop/etc. information file
- {
- QStringList lines = ao_app->read_file(d_path).split("\n");
- foreach (QString line, lines)
- {
- QStringList args = line.split("=");
- if (args.size() < 2)
- continue;
- QString arg = args[0].trimmed();
-
- float sample_rate;
- BASS_ChannelGetAttribute(newstream, BASS_ATTRIB_FREQ, &sample_rate);
-
- //Grab number of bytes for sample size
- int sample_size = 16/8;
-
- //number of channels (stereo/mono)
- int num_channels = 2;
-
- //Calculate the bytes for loop_start/loop_end to use with the sync proc
- QWORD bytes = static_cast<QWORD>(args[1].trimmed().toFloat() * sample_size * num_channels);
- if (arg == "loop_start")
- loop_start = bytes;
- else if (arg == "loop_length")
- loop_end = loop_start + bytes;
- else if (arg == "loop_end")
- loop_end = bytes;
- }
- qDebug() << "Found data file for song" << p_song << "length" << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" << loop_start << "loop end" << loop_end;
- }
+ channel = channel % m_channelmax;
+ if (channel < 0) //wtf?
+ return;
+ QString f_path = ao_app->get_music_path(p_song);
+
+ unsigned int flags = BASS_STREAM_PRESCAN | BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE;
+ if (loop)
+ flags |= BASS_SAMPLE_LOOP;
+
+ DWORD newstream;
+ if (f_path.endsWith(".opus"))
+ newstream = BASS_OPUS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
+ else
+ newstream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, flags);
- if (BASS_ChannelIsActive(m_stream_list[channel]) == BASS_ACTIVE_PLAYING)
- {
- DWORD oldstream = m_stream_list[channel];
+ if (ao_app->get_audio_output_device() != "default")
+ BASS_ChannelSetDevice(m_stream_list[channel], BASS_GetDevice());
- if (effect_flags & SYNC_POS)
+ QString d_path = f_path + ".txt";
+
+ loop_start = 0;
+ loop_end = BASS_ChannelGetLength(newstream, BASS_POS_BYTE);
+ if (loop && file_exists(d_path)) //Contains loop/etc. information file
{
- BASS_ChannelLock(oldstream, true);
- //Sync it with the new sample
- BASS_ChannelSetPosition(newstream, BASS_ChannelGetPosition(oldstream, BASS_POS_BYTE), BASS_POS_BYTE);
- BASS_ChannelLock(oldstream, false);
+ QStringList lines = ao_app->read_file(d_path).split("\n");
+ foreach (QString line, lines) {
+ QStringList args = line.split("=");
+ if (args.size() < 2)
+ continue;
+ QString arg = args[0].trimmed();
+
+ float sample_rate;
+ BASS_ChannelGetAttribute(newstream, BASS_ATTRIB_FREQ, &sample_rate);
+
+ //Grab number of bytes for sample size
+ int sample_size = 16 / 8;
+
+ //number of channels (stereo/mono)
+ int num_channels = 2;
+
+ //Calculate the bytes for loop_start/loop_end to use with the sync proc
+ QWORD bytes = static_cast<QWORD>(args[1].trimmed().toFloat() * sample_size * num_channels);
+ if (arg == "loop_start")
+ loop_start = bytes;
+ else if (arg == "loop_length")
+ loop_end = loop_start + bytes;
+ else if (arg == "loop_end")
+ loop_end = bytes;
+ }
+ qDebug() << "Found data file for song" << p_song << "length" << BASS_ChannelGetLength(newstream, BASS_POS_BYTE) << "loop start" << loop_start << "loop end" << loop_end;
}
- if (effect_flags & FADE_OUT)
- {
- //Fade out the other sample and stop it (due to -1)
- BASS_ChannelSlideAttribute(oldstream, BASS_ATTRIB_VOL|BASS_SLIDE_LOG, -1, 4000);
+ if (BASS_ChannelIsActive(m_stream_list[channel]) == BASS_ACTIVE_PLAYING) {
+ DWORD oldstream = m_stream_list[channel];
+
+ if (effect_flags & SYNC_POS) {
+ BASS_ChannelLock(oldstream, true);
+ //Sync it with the new sample
+ BASS_ChannelSetPosition(newstream, BASS_ChannelGetPosition(oldstream, BASS_POS_BYTE), BASS_POS_BYTE);
+ BASS_ChannelLock(oldstream, false);
+ }
+
+ if (effect_flags & FADE_OUT) {
+ //Fade out the other sample and stop it (due to -1)
+ BASS_ChannelSlideAttribute(oldstream, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1, 4000);
+ }
+ else
+ BASS_ChannelStop(oldstream); //Stop the sample since we don't need it anymore
}
else
- BASS_ChannelStop(oldstream); //Stop the sample since we don't need it anymore
- }
- else
- BASS_ChannelStop(m_stream_list[channel]);
+ BASS_ChannelStop(m_stream_list[channel]);
+
+ m_stream_list[channel] = newstream;
+ BASS_ChannelPlay(m_stream_list[channel], false);
+ if (effect_flags & FADE_IN) {
+ //Fade in our sample
+ BASS_ChannelSetAttribute(newstream, BASS_ATTRIB_VOL, 0);
+ BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, static_cast<float>(m_volume[channel] / 100.0f), 1000);
+ }
+ else
+ this->set_volume(m_volume[channel], channel);
- m_stream_list[channel] = newstream;
- BASS_ChannelPlay(m_stream_list[channel], false);
- if (effect_flags & FADE_IN)
- {
- //Fade in our sample
- BASS_ChannelSetAttribute(newstream, BASS_ATTRIB_VOL, 0);
- BASS_ChannelSlideAttribute(newstream, BASS_ATTRIB_VOL, static_cast<float>(m_volume[channel] / 100.0f), 1000);
- }
- else
- this->set_volume(m_volume[channel], channel);
-
- this->set_looping(loop); //Have to do this here due to any crossfading-related changes, etc.
+ this->set_looping(loop); //Have to do this here due to any crossfading-related changes, etc.
}
void AOMusicPlayer::stop(int channel)
@@ -114,105 +108,95 @@ void AOMusicPlayer::stop(int channel)
void AOMusicPlayer::set_volume(int p_value, int channel)
{
- m_volume[channel] = p_value;
- float volume = m_volume[channel] / 100.0f;
- if (channel < 0)
- {
- for (int n_stream = 0 ; n_stream < m_channelmax ; ++n_stream)
- {
- BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume);
+ m_volume[channel] = p_value;
+ float volume = m_volume[channel] / 100.0f;
+ if (channel < 0) {
+ for (int n_stream = 0; n_stream < m_channelmax; ++n_stream) {
+ BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume);
+ }
+ }
+ else {
+ BASS_ChannelSetAttribute(m_stream_list[channel], BASS_ATTRIB_VOL, volume);
}
- }
- else
- {
- BASS_ChannelSetAttribute(m_stream_list[channel], BASS_ATTRIB_VOL, volume);
- }
}
void CALLBACK loopProc(HSYNC handle, DWORD channel, DWORD data, void *user)
{
- QWORD loop_start = *(static_cast<unsigned *>(user));
- BASS_ChannelLock(channel, true);
- BASS_ChannelSetPosition(channel, loop_start, BASS_POS_BYTE);
- BASS_ChannelLock(channel, false);
+ QWORD loop_start = *(static_cast<unsigned *>(user));
+ BASS_ChannelLock(channel, true);
+ BASS_ChannelSetPosition(channel, loop_start, BASS_POS_BYTE);
+ BASS_ChannelLock(channel, false);
}
void AOMusicPlayer::set_looping(bool toggle, int channel)
{
- m_looping = toggle;
- if (!m_looping)
- {
- if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP)
- BASS_ChannelFlags(m_stream_list[channel], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag
- BASS_ChannelRemoveSync(m_stream_list[channel], loop_sync[channel]);
- loop_sync[channel] = 0;
- }
- else
- {
- BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag
- if (loop_sync[channel] != 0)
- {
- BASS_ChannelRemoveSync(m_stream_list[channel], loop_sync[channel]); //remove the sync
- loop_sync[channel] = 0;
+ m_looping = toggle;
+ if (!m_looping) {
+ if (BASS_ChannelFlags(m_stream_list[channel], 0, 0) & BASS_SAMPLE_LOOP)
+ BASS_ChannelFlags(m_stream_list[channel], 0, BASS_SAMPLE_LOOP); // remove the LOOP flag
+ BASS_ChannelRemoveSync(m_stream_list[channel], loop_sync[channel]);
+ loop_sync[channel] = 0;
}
- if (loop_start > 0)
- {
- if (loop_end == 0)
- loop_end = BASS_ChannelGetLength(m_stream_list[channel], BASS_POS_BYTE);
- if (loop_end > 0) //Don't loop zero length songs even if we're asked to
- loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_POS | BASS_SYNC_MIXTIME, loop_end, loopProc, &loop_start);
+ else {
+ BASS_ChannelFlags(m_stream_list[channel], BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP); // set the LOOP flag
+ if (loop_sync[channel] != 0) {
+ BASS_ChannelRemoveSync(m_stream_list[channel], loop_sync[channel]); //remove the sync
+ loop_sync[channel] = 0;
+ }
+ if (loop_start > 0) {
+ if (loop_end == 0)
+ loop_end = BASS_ChannelGetLength(m_stream_list[channel], BASS_POS_BYTE);
+ if (loop_end > 0) //Don't loop zero length songs even if we're asked to
+ loop_sync[channel] = BASS_ChannelSetSync(m_stream_list[channel], BASS_SYNC_POS | BASS_SYNC_MIXTIME, loop_end, loopProc, &loop_start);
+ }
}
- }
}
#elif defined(QTAUDIO)
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app)
{
- m_parent = parent;
- ao_app = p_ao_app;
+ m_parent = parent;
+ ao_app = p_ao_app;
}
AOMusicPlayer::~AOMusicPlayer()
{
- m_player.stop();
+ m_player.stop();
}
void AOMusicPlayer::play(QString p_song)
{
- m_player.stop();
+ m_player.stop();
- QString f_path = ao_app->get_music_path(p_song);
+ QString f_path = ao_app->get_music_path(p_song);
- m_player.setMedia(QUrl::fromLocalFile(f_path));
+ m_player.setMedia(QUrl::fromLocalFile(f_path));
- this->set_volume(m_volume);
+ this->set_volume(m_volume);
- m_player.play();
+ m_player.play();
}
void AOMusicPlayer::set_volume(int p_value)
{
- m_volume = p_value;
- m_player.setVolume(m_volume);
+ m_volume = p_value;
+ m_player.setVolume(m_volume);
}
#else
AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app)
{
- m_parent = parent;
- ao_app = p_ao_app;
+ m_parent = parent;
+ ao_app = p_ao_app;
}
AOMusicPlayer::~AOMusicPlayer()
{
-
}
void AOMusicPlayer::play(QString p_song)
{
-
}
void AOMusicPlayer::set_volume(int p_value)
{
-
}
#endif