[Scummvm-git-logs] scummvm master -> 755e6222bb3baf08e1dc0d80e43e54ed5fc9fd43

athrxx noreply at scummvm.org
Wed Sep 7 16:57:56 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:
755e6222bb SCUMM: (DOTT) - properly set detune for new midi parts


Commit: 755e6222bb3baf08e1dc0d80e43e54ed5fc9fd43
    https://github.com/scummvm/scummvm/commit/755e6222bb3baf08e1dc0d80e43e54ed5fc9fd43
Author: athrxx (athrxx at scummvm.org)
Date: 2022-09-07T18:56:57+02:00

Commit Message:
SCUMM: (DOTT) - properly set detune for new midi parts

(after changing the detune handling a bit, we also need to
have it in Part::sendAll())

Changed paths:
    engines/scumm/imuse/imuse_internal.h
    engines/scumm/imuse/imuse_part.cpp


diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h
index 2f5fa71d108..462e5a5f30d 100644
--- a/engines/scumm/imuse/imuse_internal.h
+++ b/engines/scumm/imuse/imuse_internal.h
@@ -380,6 +380,7 @@ struct Part : public Common::Serializable {
 private:
 	void sendPitchBend();
 	void sendTranspose();
+	void sendDetune();
 	void sendPanPosition(uint8 value);
 	void sendEffectLevel(uint8 value);
 };
diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp
index d035a616bc6..04a8ec89b74 100644
--- a/engines/scumm/imuse/imuse_part.cpp
+++ b/engines/scumm/imuse/imuse_part.cpp
@@ -117,9 +117,10 @@ void Part::set_detune(int8 detune) {
 	} else {
 		_detune_eff = clamp((_detune = detune) + _player->getDetune(), -128, 127);
 		// Some drivers handle the transpose and the detune in pitchBend()...
-		if (_mc && _player->isAdLibOrFMTowns())
-			_mc->detune(_detune_eff);
-		sendPitchBend();
+		if (_player->isAdLibOrFMTowns())
+			sendDetune();
+		else
+			sendPitchBend();
 	}
 }
 
@@ -348,6 +349,7 @@ void Part::sendAll() {
 	if (!_player->isGM())
 		_mc->pitchBendFactor(_pitchbend_factor);
 	sendTranspose();
+	sendDetune();
 	sendPitchBend();
 	_mc->volume(_vol_eff);
 	_mc->sustain(_pedal);
@@ -412,6 +414,17 @@ void Part::sendTranspose() {
 	_mc->transpose(_transpose_eff);
 }
 
+void Part::sendDetune() {
+	if (!_mc)
+		return;
+
+	// Some drivers handle the transpose and the detune in pitchBend()...
+	if (!_player->isAdLibOrFMTowns())
+		return;
+
+	_mc->detune(_detune_eff);
+}
+
 void Part::programChange(byte value) {
 	_bank = 0;
 	_instrument.program(value, _player->isMT32());




More information about the Scummvm-git-logs mailing list