aboutsummaryrefslogtreecommitdiff
path: root/engines/hugo/sound.cpp
diff options
context:
space:
mode:
authorHenry Bush2010-12-22 09:09:38 +0000
committerHenry Bush2010-12-22 09:09:38 +0000
commite20c9028128670f18cc741abbc2788175edf2058 (patch)
tree1e879745fcddb41ac342fc1c87a0f28eff08cede /engines/hugo/sound.cpp
parent1dde0156c23214be7776054a3aee1d04ed7201f1 (diff)
downloadscummvm-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.cpp15
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;