[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