[Scummvm-cvs-logs] SF.net SVN: scummvm:[47023] scummvm/trunk/engines/sci/sound
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Tue Jan 5 11:28:09 CET 2010
Revision: 47023
http://scummvm.svn.sourceforge.net/scummvm/?rev=47023&view=rev
Author: thebluegr
Date: 2010-01-05 10:28:09 +0000 (Tue, 05 Jan 2010)
Log Message:
-----------
Cleanup, fixed fading of digital sound effects
Modified Paths:
--------------
scummvm/trunk/engines/sci/sound/midiparser_sci.cpp
scummvm/trunk/engines/sci/sound/midiparser_sci.h
scummvm/trunk/engines/sci/sound/music.h
scummvm/trunk/engines/sci/sound/soundcmd.cpp
Modified: scummvm/trunk/engines/sci/sound/midiparser_sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/midiparser_sci.cpp 2010-01-05 10:03:55 UTC (rev 47022)
+++ scummvm/trunk/engines/sci/sound/midiparser_sci.cpp 2010-01-05 10:28:09 UTC (rev 47023)
@@ -199,7 +199,7 @@
}
}
if (info.basic.param1 == 7) // channel volume change -scale it
- info.basic.param2 = info.basic.param2 * _volume / 0x7F;
+ info.basic.param2 = info.basic.param2 * _volume / MUSIC_VOLUME_MAX;
info.length = 0;
break;
@@ -474,18 +474,16 @@
return _mixedData;
}
-void MidiParser_SCI::setVolume(byte bVolume) {
- if (bVolume > 0x7F)
- bVolume = 0x7F;
- if (_volume != bVolume) {
- _volume = bVolume;
+void MidiParser_SCI::setVolume(byte volume) {
+ assert(volume <= MUSIC_VOLUME_MAX);
+ if (_volume != volume) {
+ _volume = volume;
switch (_soundVersion) {
case SCI_VERSION_0_EARLY:
case SCI_VERSION_0_LATE: {
- MidiPlayer *SCIDriver = (MidiPlayer *)_driver;
int16 globalVolume = _volume * 15 / 127;
- SCIDriver->setVolume(globalVolume);
+ ((MidiPlayer *)_driver)->setVolume(globalVolume);
break;
}
Modified: scummvm/trunk/engines/sci/sound/midiparser_sci.h
===================================================================
--- scummvm/trunk/engines/sci/sound/midiparser_sci.h 2010-01-05 10:03:55 UTC (rev 47022)
+++ scummvm/trunk/engines/sci/sound/midiparser_sci.h 2010-01-05 10:28:09 UTC (rev 47023)
@@ -54,7 +54,7 @@
return false;
}
void unloadMusic();
- void setVolume(byte bVolume);
+ void setVolume(byte volume);
void stop() {
_abort_parse = true;
allNotesOff();
Modified: scummvm/trunk/engines/sci/sound/music.h
===================================================================
--- scummvm/trunk/engines/sci/sound/music.h 2010-01-05 10:03:55 UTC (rev 47022)
+++ scummvm/trunk/engines/sci/sound/music.h 2010-01-05 10:28:09 UTC (rev 47023)
@@ -154,6 +154,16 @@
uint16 soundGetVoices();
uint32 soundGetTempo() const { return _dwTempo; }
+ bool soundIsActive(MusicEntry *pSnd) {
+ assert(pSnd->pStreamAud != 0);
+ return _pMixer->isSoundHandleActive(pSnd->hCurrentAud);
+ }
+
+ void updateAudioStreamTicker(MusicEntry *pSnd) {
+ assert(pSnd->pStreamAud != 0);
+ pSnd->ticker = (uint16)(_pMixer->getSoundElapsedTime(pSnd->hCurrentAud) * 0.06);
+ }
+
MusicEntry *getSlot(reg_t obj);
void pushBackSlot(MusicEntry *slotEntry) {
Modified: scummvm/trunk/engines/sci/sound/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/soundcmd.cpp 2010-01-05 10:03:55 UTC (rev 47022)
+++ scummvm/trunk/engines/sci/sound/soundcmd.cpp 2010-01-05 10:28:09 UTC (rev 47023)
@@ -804,22 +804,20 @@
if (musicSlot->pStreamAud) {
// Update digital sound effect slots here
- Audio::Mixer *mixer = g_system->getMixer();
-
uint currentLoopCounter = musicSlot->pStreamAud->getNumPlayedLoops();
if (currentLoopCounter != musicSlot->sampleLoopCounter) {
// during last time we looped at least one time, update loop accordingly
musicSlot->loop -= currentLoopCounter - musicSlot->sampleLoopCounter;
musicSlot->sampleLoopCounter = currentLoopCounter;
}
- if (!mixer->isSoundHandleActive(musicSlot->hCurrentAud)) {
+ if (!_music->soundIsActive(musicSlot)) {
cmdStopSound(obj, 0);
} else {
- musicSlot->ticker = (uint16)(mixer->getSoundElapsedTime(musicSlot->hCurrentAud) * 0.06);
+ _music->updateAudioStreamTicker(musicSlot);
}
// We get a flag from MusicEntry::doFade() here to set volume for the stream
if (musicSlot->fadeSetVolume) {
- mixer->setChannelVolume(musicSlot->hCurrentAud, musicSlot->volume);
+ _music->soundSetVolume(musicSlot, musicSlot->volume);
musicSlot->fadeSetVolume = false;
}
} else {
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