[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