diff options
Diffstat (limited to 'engines/gob/sound/musplayer.cpp')
-rw-r--r-- | engines/gob/sound/musplayer.cpp | 18 |
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) { |