[Scummvm-git-logs] scummvm master -> 9670b84de36a6fbb9314dcb9318f61d5adbb19a8
athrxx
noreply at scummvm.org
Sun Aug 14 12:31:10 UTC 2022
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:
9670b84de3 KYRA :(LOK/Mac) - minor sound driver improvement
Commit: 9670b84de36a6fbb9314dcb9318f61d5adbb19a8
https://github.com/scummvm/scummvm/commit/9670b84de36a6fbb9314dcb9318f61d5adbb19a8
Author: athrxx (athrxx at scummvm.org)
Date: 2022-08-14T14:30:08+02:00
Commit Message:
KYRA :(LOK/Mac) - minor sound driver improvement
Add control change volume - I haven't seen any use case yet, though.
Changed paths:
engines/kyra/sound/drivers/halestorm.cpp
diff --git a/engines/kyra/sound/drivers/halestorm.cpp b/engines/kyra/sound/drivers/halestorm.cpp
index 47866f72e53..7201c0a5e49 100644
--- a/engines/kyra/sound/drivers/halestorm.cpp
+++ b/engines/kyra/sound/drivers/halestorm.cpp
@@ -225,6 +225,7 @@ private:
bool parseEvent(HSSong &song, TrackState *s);
void noteOnOff(HSSong &song, TrackState *s, uint8 chan, uint8 note, uint8 velo);
+ uint8 _partVolume[16];
uint8 _partPrograms[16];
uint8 _curCmd;
@@ -671,6 +672,7 @@ void HSSong::updateTempo() {
HSMidiParser::HSMidiParser(HSLowLevelDriver *driver) : _driver(driver), _trackState(nullptr), _tracks(), _data(), _curCmd(0) {
_trackState = new TrackState[24]();
memset(_partPrograms, 0, sizeof(_partPrograms));
+ memset(_partVolume, 0, sizeof(_partVolume));
}
HSMidiParser::~HSMidiParser() {
@@ -678,6 +680,7 @@ HSMidiParser::~HSMidiParser() {
}
bool HSMidiParser::loadTracks(HSSong &song) {
+ memset(_partVolume, 0x7f, sizeof(_partVolume));
for (int i = 0; i < ARRAYSIZE(_partPrograms); ++i)
_partPrograms[i] = i;
@@ -846,6 +849,8 @@ bool HSMidiParser::parseEvent(HSSong &song, TrackState *s) {
if (evt < 0xa0)
noteOnOff(song, s, chan, arg1, evt == 0x90 ? arg2 : 0);
+ else if (evt == 0xb0 && arg1 == 7)
+ _partVolume[chan] = arg2;
else if (evt == 0xc0 && (song._flags & 0x400))
s->program = _partPrograms[chan] = arg1;
@@ -866,7 +871,7 @@ void HSMidiParser::noteOnOff(HSSong &song, TrackState *s, uint8 chan, uint8 note
note += song._transpose;
if (velo)
- _driver->noteOn(chan, prg, note, velo, 10000, s);
+ _driver->noteOn(chan, prg, note, _partVolume[chan] * velo / 0x7f, 10000, s);
else
_driver->noteOff(chan, note, s);
}
More information about the Scummvm-git-logs
mailing list