[Scummvm-git-logs] scummvm master -> 20ebd47f492182d462bf4bf562adde1c7727f19c

mduggan mgithub at guarana.org
Tue May 5 11:43:07 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
20ebd47f49 ULTIMA8: Fix looping and updating balance of ambient SFX


Commit: 20ebd47f492182d462bf4bf562adde1c7727f19c
    https://github.com/scummvm/scummvm/commit/20ebd47f492182d462bf4bf562adde1c7727f19c
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-05-05T19:26:47+09:00

Commit Message:
ULTIMA8: Fix looping and updating balance of ambient SFX

Changed paths:
    engines/ultima/ultima8/audio/audio_channel.cpp
    engines/ultima/ultima8/audio/audio_channel.h


diff --git a/engines/ultima/ultima8/audio/audio_channel.cpp b/engines/ultima/ultima8/audio/audio_channel.cpp
index 376276f061..892d192fe0 100644
--- a/engines/ultima/ultima8/audio/audio_channel.cpp
+++ b/engines/ultima/ultima8/audio/audio_channel.cpp
@@ -81,12 +81,18 @@ void AudioChannel::playSample(AudioSample *sample, int loop, int priority, bool
 		DisposeAfterUse::YES
 	);
 
-	Audio::AudioStream *stream = _loop <= 1 ? (Audio::AudioStream *)audioStream :
-		new Audio::LoopingAudioStream(audioStream, _loop);
+	int loops = _loop;
+	if (loops == -1) {
+		// loop forever
+		loops = 0;
+	}
+	Audio::AudioStream *stream = (_loop <= 1 && _loop != -1) ?
+		(Audio::AudioStream *)audioStream :
+		new Audio::LoopingAudioStream(audioStream, loops);
 
 	// Play it
-	int vol = (_lVol + _rVol) / 2;
-	int balance = (_rVol - _lVol);
+	int vol = (_lVol + _rVol) / 2;		 // range is 0 ~ 255
+	int balance = (_rVol - _lVol) / 2; // range is -127 ~ +127
 	_mixer->playStream(Audio::Mixer::kPlainSoundType, &_soundHandle, stream, -1, vol, balance);
 	if (paused)
 		_mixer->pauseHandle(_soundHandle, true);
diff --git a/engines/ultima/ultima8/audio/audio_channel.h b/engines/ultima/ultima8/audio/audio_channel.h
index 2092b026dd..80d94a87a5 100644
--- a/engines/ultima/ultima8/audio/audio_channel.h
+++ b/engines/ultima/ultima8/audio/audio_channel.h
@@ -86,6 +86,8 @@ public:
 	void setVolume(int lvol, int rvol) {
 		_lVol = lvol;
 		_rVol = rvol;
+		_mixer->setChannelVolume(_soundHandle, (rvol + lvol) / 2);
+		_mixer->setChannelBalance(_soundHandle, (rvol - lvol) / 2);
 	}
 	void getVolume(int &lvol, int &rvol) const {
 		lvol = _lVol;




More information about the Scummvm-git-logs mailing list