[Scummvm-cvs-logs] SF.net SVN: scummvm:[47290] scummvm/trunk/engines/sci/sound

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jan 13 15:46:45 CET 2010


Revision: 47290
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47290&view=rev
Author:   thebluegr
Date:     2010-01-13 14:46:45 +0000 (Wed, 13 Jan 2010)

Log Message:
-----------
The pitch wheel is now properly reset when a song is unloaded

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sound/midiparser_sci.cpp
    scummvm/trunk/engines/sci/sound/music.cpp

Modified: scummvm/trunk/engines/sci/sound/midiparser_sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/midiparser_sci.cpp	2010-01-13 13:53:31 UTC (rev 47289)
+++ scummvm/trunk/engines/sci/sound/midiparser_sci.cpp	2010-01-13 14:46:45 UTC (rev 47290)
@@ -84,13 +84,26 @@
 }
 
 void MidiParser_SCI::unloadMusic() {
+	resetTracking();
 	allNotesOff();
-	resetTracking();
 	_num_tracks = 0;
+	_active_track = 255;
+
 	if (_mixedData) {
 		delete[] _mixedData;
 		_mixedData = NULL;
 	}
+
+	// Center the pitch wheels in preparation for the next piece of music
+	// TODO: We should monitor what channels are used by each song, and only
+	// reset these channels, not all of them!
+	if (_driver) {
+		for (int i = 0; i < 16; ++i) {
+			_driver->send(0xE0 | i, 0, 0x40);
+		}
+	}
+
+	// TODO: Reset hold pedal
 }
 
 void MidiParser_SCI::parseNextEvent(EventInfo &info) {

Modified: scummvm/trunk/engines/sci/sound/music.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/music.cpp	2010-01-13 13:53:31 UTC (rev 47289)
+++ scummvm/trunk/engines/sci/sound/music.cpp	2010-01-13 14:46:45 UTC (rev 47290)
@@ -313,7 +313,6 @@
 				pSnd->pMidiParser = new MidiParser_SCI(_soundVersion);
 				pSnd->pMidiParser->setMidiDriver(_pMidiDrv);
 				pSnd->pMidiParser->setTimerRate(_dwTempo);
-				pSnd->pMidiParser->property(MidiParser::mpCenterPitchWheelOnUnload, 1);
 			}
 
 			pSnd->pauseCounter = 0;


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