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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Fri Jan 1 19:57:14 CET 2010


Revision: 46842
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46842&view=rev
Author:   m_kiewitz
Date:     2010-01-01 18:57:14 +0000 (Fri, 01 Jan 2010)

Log Message:
-----------
SCI/newmusic: set speech soundtype for audio resources played by kDoSound, cmdVolume is supposed to set music and sfx volume only - this whole fixes volume issues in lb2cd and others

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sfx/music.cpp
    scummvm/trunk/engines/sci/sfx/music.h
    scummvm/trunk/engines/sci/sfx/soundcmd.cpp

Modified: scummvm/trunk/engines/sci/sfx/music.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/music.cpp	2010-01-01 17:53:37 UTC (rev 46841)
+++ scummvm/trunk/engines/sci/sfx/music.cpp	2010-01-01 18:57:14 UTC (rev 46842)
@@ -333,10 +333,12 @@
 				delete pSnd->pStreamAud;
 			pSnd->pStreamAud = Audio::makeLinearInputStream(channelData, track->digitalSampleSize, track->digitalSampleRate,
 					Audio::Mixer::FLAG_UNSIGNED, 0, 0);
+			pSnd->soundType = Audio::Mixer::kSFXSoundType;
 			pSnd->hCurrentAud = Audio::SoundHandle();
 		} else {
 			// play MIDI track
 			_mutex.lock();
+			pSnd->soundType = Audio::Mixer::kMusicSoundType;
 			if (pSnd->pMidiParser == NULL) {
 				pSnd->pMidiParser = new MidiParser_SCI();
 				pSnd->pMidiParser->setMidiDriver(_pMidiDrv);
@@ -385,7 +387,7 @@
 			pSnd->pStreamAud->setNumLoops(loop);
 		else
 			pSnd->pStreamAud->setNumLoops(1);
-		_pMixer->playInputStream(Audio::Mixer::kSFXSoundType, &pSnd->hCurrentAud,
+		_pMixer->playInputStream(pSnd->soundType, &pSnd->hCurrentAud,
 				pSnd->pStreamAud, -1, pSnd->volume, 0, false);
 	} else if (pSnd->pMidiParser) {
 		_mutex.lock();
@@ -486,10 +488,9 @@
 void SciMusic::soundSetMasterVolume(uint16 vol) {
 	vol = vol & 0xF; // 0..15
 	vol = vol * Audio::Mixer::kMaxMixerVolume / 0xF;
+	// "master volume" is music and SFX only, speech (audio resources) are supposed to be unaffected
 	_pMixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, vol);
 	_pMixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, vol);
-	_pMixer->setVolumeForSoundType(Audio::Mixer::kSpeechSoundType, vol);
-	_pMixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, vol);
 }
 
 void SciMusic::printPlayList(Console *con) {
@@ -528,6 +529,8 @@
 
 	status = kSoundStopped;
 
+	soundType = Audio::Mixer::kMusicSoundType;
+
 	pStreamAud = 0;
 	pMidiParser = 0;
 }

Modified: scummvm/trunk/engines/sci/sfx/music.h
===================================================================
--- scummvm/trunk/engines/sci/sfx/music.h	2010-01-01 17:53:37 UTC (rev 46841)
+++ scummvm/trunk/engines/sci/sfx/music.h	2010-01-01 18:57:14 UTC (rev 46842)
@@ -92,6 +92,8 @@
 
 	SoundStatus status;
 
+	Audio::Mixer::SoundType soundType;
+
 #ifndef USE_OLD_MUSIC_FUNCTIONS
 //protected:
 #endif

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-01 17:53:37 UTC (rev 46841)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-01 18:57:14 UTC (rev 46842)
@@ -296,6 +296,7 @@
 		// Found a relevant audio resource, play it
 		int sampleLen;
 		newSound->pStreamAud = _audio->getAudioStream(number, 65535, &sampleLen);
+		newSound->soundType = Audio::Mixer::kSpeechSoundType;
 	} else {
 		if (newSound->soundRes)
 			_music->soundInitSnd(newSound);
@@ -590,9 +591,10 @@
 
 	_acc = make_reg(0, _state->sfx_getVolume());
 #else
-		if (value > 0)
-			_music->soundSetMasterVolume(obj.toSint16());
-		_acc = make_reg(0, _music->soundGetMasterVolume());
+	debugC(2, kDebugLevelSound, "cmdVolume: %d", value);
+	if (value > 0)
+		_music->soundSetMasterVolume(obj.toSint16());
+	_acc = make_reg(0, _music->soundGetMasterVolume());
 #endif
 }
 


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