From 9841ce6b9f3b00f387a6f149221db05815f64801 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 21 Oct 2011 08:19:35 +0000 Subject: TOLTECS: Code cleanup --- engines/toltecs/music.cpp | 50 ++++++++-------------------------------------- engines/toltecs/music.h | 5 ++--- engines/toltecs/script.cpp | 2 +- 3 files changed, 11 insertions(+), 46 deletions(-) diff --git a/engines/toltecs/music.cpp b/engines/toltecs/music.cpp index 8c88c6ded9..84cb2f7148 100644 --- a/engines/toltecs/music.cpp +++ b/engines/toltecs/music.cpp @@ -28,7 +28,7 @@ namespace Toltecs { -MusicPlayer::MusicPlayer() : _isGM(false), _buffer(NULL) { +MusicPlayer::MusicPlayer(bool isGM) : _isGM(isGM), _buffer(NULL) { MidiPlayer::createDriver(); int ret = _driver->open(); @@ -50,22 +50,21 @@ void MusicPlayer::send(uint32 b) { Audio::MidiPlayer::send(b); } -void MusicPlayer::playXMIDI(const byte *data, uint32 size, MusicFlags flags) { +void MusicPlayer::playMIDI(const byte *data, uint32 size, MusicFlags flags) { Common::StackLock lock(_mutex); - if (_isPlaying) - return; - stopAndClear(); _buffer = new byte[size]; memcpy(_buffer, data, size); - // Load XMID resource data - - _isGM = true; + MidiParser *parser; + + if (!memcmp(data, "FORM", 4)) + parser = MidiParser::createParser_XMIDI(NULL); + else + parser = MidiParser::createParser_SMF(); - MidiParser *parser = MidiParser::createParser_XMIDI(NULL); if (parser->loadMusic(_buffer, size)) { parser->setTrack(0); parser->setMidiDriver(this); @@ -84,39 +83,6 @@ void MusicPlayer::playXMIDI(const byte *data, uint32 size, MusicFlags flags) { } } -void MusicPlayer::playSMF(const byte *data, uint32 size, MusicFlags flags) { - Common::StackLock lock(_mutex); - - if (_isPlaying) - return; - - stopAndClear(); - - _buffer = new byte[size]; - memcpy(_buffer, data, size); - - // Load MIDI resource data - - _isGM = true; - - MidiParser *parser = MidiParser::createParser_SMF(); - if (parser->loadMusic(_buffer, size)) { - parser->setTrack(0); - parser->setMidiDriver(this); - parser->setTimerRate(_driver->getBaseTempo()); - parser->property(MidiParser::mpCenterPitchWheelOnUnload, 1); - - _parser = parser; - - setVolume(127); - - _isLooping = flags & MUSIC_LOOP; - _isPlaying = true; - } else { - delete parser; - } -} - void MusicPlayer::pause() { setVolume(-1); _isPlaying = false; diff --git a/engines/toltecs/music.h b/engines/toltecs/music.h index 9658633b8a..45238213d8 100644 --- a/engines/toltecs/music.h +++ b/engines/toltecs/music.h @@ -36,10 +36,9 @@ enum MusicFlags { class MusicPlayer : public Audio::MidiPlayer { public: - MusicPlayer(); + MusicPlayer(bool isGM = true); - void playXMIDI(const byte *data, uint32 size, MusicFlags flags = MUSIC_NORMAL); - void playSMF(const byte *data, uint32 size, MusicFlags flags = MUSIC_NORMAL); + void playMIDI(const byte *data, uint32 size, MusicFlags flags = MUSIC_NORMAL); void pause(); void resume(); void stopAndClear(); diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp index 1104c966fe..91a3f36e83 100644 --- a/engines/toltecs/script.cpp +++ b/engines/toltecs/script.cpp @@ -1051,7 +1051,7 @@ void ScriptInterpreter::sfStartSequence() { if (!memcmp(data, "FORM", 4)) { // TODO: Looping flag - _vm->_musicPlayer->playXMIDI(data, resourceSize); + _vm->_musicPlayer->playMIDI(data, resourceSize); } else { // TODO: Where does this occur? Are these SMF MIDI files? warning("sfStartSequence: resource %d isn't XMIDI", sequenceResIndex); -- cgit v1.2.3