aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/sound/musplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/sound/musplayer.cpp')
-rw-r--r--engines/gob/sound/musplayer.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/engines/gob/sound/musplayer.cpp b/engines/gob/sound/musplayer.cpp
index 7001a5724b..bf90d44735 100644
--- a/engines/gob/sound/musplayer.cpp
+++ b/engines/gob/sound/musplayer.cpp
@@ -27,7 +27,7 @@
namespace Gob {
-MUSPlayer::MUSPlayer(Audio::Mixer &mixer) : AdLib(mixer),
+MUSPlayer::MUSPlayer(Audio::Mixer &mixer) : AdLib(mixer, 60),
_songData(0), _songDataSize(0), _playPos(0), _songID(0) {
}
@@ -43,15 +43,6 @@ void MUSPlayer::unload() {
unloadMUS();
}
-uint32 MUSPlayer::getSampleDelay(uint16 delay) const {
- if (delay == 0)
- return 0;
-
- uint32 freq = (_ticksPerBeat * _tempo) / 60;
-
- return ((uint32)delay * getSamplesPerSecond()) / freq;
-}
-
void MUSPlayer::skipToTiming() {
while (*_playPos < 0x80)
_playPos++;
@@ -67,7 +58,7 @@ uint32 MUSPlayer::pollMusic(bool first) {
}
if (first)
- return getSampleDelay(*_playPos++);
+ return *_playPos++;
uint16 delay = 0;
while (delay == 0) {
@@ -100,6 +91,7 @@ uint32 MUSPlayer::pollMusic(bool first) {
uint32 denom = *_playPos++;
_tempo = _baseTempo * num + ((_baseTempo * denom) >> 7);
+ setTimerFrequency((_ticksPerBeat * _tempo) / 60);
_playPos++;
} else {
@@ -182,7 +174,7 @@ uint32 MUSPlayer::pollMusic(bool first) {
delay += *_playPos++;
}
- return getSampleDelay(delay);
+ return delay;
}
void MUSPlayer::rewind() {
@@ -193,6 +185,8 @@ void MUSPlayer::rewind() {
setPercussionMode(_soundMode != 0);
setPitchRange(_pitchBendRange);
+
+ setTimerFrequency((_ticksPerBeat * _tempo) / 60);
}
bool MUSPlayer::loadSND(Common::SeekableReadStream &snd) {