[ scummvm-Bugs-3116608 ] Hanging notes in KQ4 SCI with MT-32 (patch inside)

SourceForge.net noreply at sourceforge.net
Tue Nov 23 15:10:03 CET 2010


Bugs item #3116608, was opened at 2010-11-23 23:10
Message generated for change (Tracker Item Submitted) made by sven3000
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=3116608&group_id=37116

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: iMuse/Music
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Sven (sven3000)
Assigned to: Nobody/Anonymous (nobody)
Summary: Hanging notes in KQ4 SCI with MT-32 (patch inside)

Initial Comment:
In King's Quest 4 SCI, if the music played when the unicorn is interrupted prematurely some notes can hang. This was observed with a real Roland MT-32 connected via USB MIDI cable, and with the built-in MT-32 emulator.

This is caused because a MIDI sustain controller message is sent on the channel in question (in this case channel 4; the MIDI data is B4 40 7F) to turn the sustain on full. The sustain message is not cancelled when the music is interrupted; only an "all notes off" message (Bn 7B 00; where n in the channel) is sent on all channels.

The issue could occur in any SCI game with a music track containing sustain messages, and probably also with other MIDI devices than the MT-32. I have only observed it in this specific scenario so far, however.

Since this issue did not occur with DOSBox, I captured the MIDI data it sent to the MT-32 by DOSBox. I observed that it paired a sustain off (Bn 40 00) message with each all notes off message.

Attached is a patch that modifies the MidiParser_SCI::allNotesOff function to send a sustain off message on all channels. This appears to fix the issue, but further testing may be needed to see if this doesn't have any side-effects.

This issue was observed on ScummVM 1.2 and 1.3svn54422 on Windows 7 x64, with game versions 1.000.111 and 1.006.004. 

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=3116608&group_id=37116




More information about the Scummvm-tracker mailing list