diff options
author | Henry Bush | 2010-12-22 09:09:38 +0000 |
---|---|---|
committer | Henry Bush | 2010-12-22 09:09:38 +0000 |
commit | e20c9028128670f18cc741abbc2788175edf2058 (patch) | |
tree | 1e879745fcddb41ac342fc1c87a0f28eff08cede /engines/hugo/sound.cpp | |
parent | 1dde0156c23214be7776054a3aee1d04ed7201f1 (diff) | |
download | scummvm-rg350-e20c9028128670f18cc741abbc2788175edf2058.tar.gz scummvm-rg350-e20c9028128670f18cc741abbc2788175edf2058.tar.bz2 scummvm-rg350-e20c9028128670f18cc741abbc2788175edf2058.zip |
HUGO: Add music debug level, some cleanup when opening driver
svn-id: r54999
Diffstat (limited to 'engines/hugo/sound.cpp')
-rw-r--r-- | engines/hugo/sound.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/hugo/sound.cpp b/engines/hugo/sound.cpp index 2d674ce31d..a0cb0082d9 100644 --- a/engines/hugo/sound.cpp +++ b/engines/hugo/sound.cpp @@ -58,6 +58,7 @@ MidiPlayer::~MidiPlayer() { } void MidiPlayer::play(uint8 *stream, uint16 size) { + debugC(3, kDebugMusic, "MidiPlayer::play"); if (!stream) { stop(); return; @@ -76,6 +77,7 @@ void MidiPlayer::play(uint8 *stream, uint16 size) { } void MidiPlayer::stop() { + debugC(3, kDebugMusic, "MidiPlayer::stop"); _mutex.lock(); if (_isPlaying) { _isPlaying = false; @@ -109,10 +111,12 @@ void MidiPlayer::updateTimer() { } void MidiPlayer::adjustVolume(int diff) { + debugC(3, kDebugMusic, "MidiPlayer::adjustVolume"); setVolume(_masterVolume + diff); } void MidiPlayer::setVolume(int volume) { + debugC(3, kDebugMusic, "MidiPlayer::setVolume"); _masterVolume = CLIP(volume, 0, 255); _mutex.lock(); for (int i = 0; i < NUM_CHANNELS; ++i) { @@ -124,7 +128,13 @@ void MidiPlayer::setVolume(int volume) { } int MidiPlayer::open() { - _driver->open(); + if (!_driver) + return 255; + int ret = _driver->open(); + if (ret) + return ret; + + _driver->sendGMReset(); _parser = MidiParser::createParser_SMF(); _parser->setMidiDriver(this); @@ -149,14 +159,17 @@ void MidiPlayer::close() { void MidiPlayer::send(uint32 b) { byte volume, ch = (byte)(b & 0xF); + debugC(9, kDebugMusic, "MidiPlayer::send, channel %d (volume is %d)", ch, _channelsVolume[ch]); switch (b & 0xFFF0) { case 0x07B0: // volume change volume = (byte)((b >> 16) & 0x7F); _channelsVolume[ch] = volume; volume = volume * _masterVolume / 255; b = (b & 0xFF00FFFF) | (volume << 16); + debugC(8, kDebugMusic, "Volume change, channel %d volume %d", ch, volume); break; case 0x7BB0: // all notes off + debugC(8, kDebugMusic, "All notes off, channel %d", ch); if (!_channelsTable[ch]) { // channel not yet allocated, no need to send the event return; |