[Scummvm-cvs-logs] SF.net SVN: scummvm:[44184] scummvm/trunk/engines/scumm/imuse
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Fri Sep 18 17:12:28 CEST 2009
Revision: 44184
http://scummvm.svn.sourceforge.net/scummvm/?rev=44184&view=rev
Author: lordhoto
Date: 2009-09-18 15:12:27 +0000 (Fri, 18 Sep 2009)
Log Message:
-----------
Implement proper pan reversal for Roland MT-32 in iMuse (as desribed in bug report #1088045 "MI2: Minor problems in native MT-32 mode").
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse/imuse_internal.h
scummvm/trunk/engines/scumm/imuse/imuse_part.cpp
Modified: scummvm/trunk/engines/scumm/imuse/imuse_internal.h
===================================================================
--- scummvm/trunk/engines/scumm/imuse/imuse_internal.h 2009-09-18 12:38:53 UTC (rev 44183)
+++ scummvm/trunk/engines/scumm/imuse/imuse_internal.h 2009-09-18 15:12:27 UTC (rev 44184)
@@ -367,6 +367,9 @@
Part();
void saveLoadWithSerializer(Serializer *ser);
+
+private:
+ void setPanPosition(uint8 value);
};
Modified: scummvm/trunk/engines/scumm/imuse/imuse_part.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse/imuse_part.cpp 2009-09-18 12:38:53 UTC (rev 44183)
+++ scummvm/trunk/engines/scumm/imuse/imuse_part.cpp 2009-09-18 15:12:27 UTC (rev 44184)
@@ -136,8 +136,7 @@
void Part::set_pan(int8 pan) {
_pan_eff = clamp((_pan = pan) + _player->getPan(), -64, 63);
- if (_mc)
- _mc->panPosition(_pan_eff + 0x40);
+ setPanPosition(_pan_eff + 0x40);
}
void Part::set_transpose(int8 transpose) {
@@ -164,8 +163,7 @@
_mc->chorusLevel(value);
}
-void Part::effectLevel(byte value)
-{
+void Part::effectLevel(byte value) {
_effect_level = value;
if (_mc)
_mc->effectLevel(value);
@@ -330,7 +328,7 @@
_mc->volume(_vol_eff);
_mc->sustain(_pedal);
_mc->modulationWheel(_modwheel);
- _mc->panPosition(_pan_eff + 0x40);
+ setPanPosition(_pan_eff + 0x40);
_mc->effectLevel(_effect_level);
if (_instrument.isValid())
_instrument.send(_mc);
@@ -369,4 +367,17 @@
_mc->allNotesOff();
}
+void Part::setPanPosition(uint8 value) {
+ if (!_mc)
+ return;
+
+ // As described in bug report #1088045 "MI2: Minor problems in native MT-32 mode"
+ // the original iMuse MT-32 driver did revert the panning. So we do the same
+ // here in our code to have correctly panned sound output.
+ if (_player->_se->isNativeMT32())
+ value = 127 - value;
+
+ _mc->panPosition(value);
+}
+
} // End of namespace Scumm
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list