Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#5525 closed defect (fixed)

MIDI channel aftertouch ignored in SCI (patch inside)

Reported by: SF/sven3000 Owned by: bluegr
Priority: normal Component: Engine: SCI
Keywords: Cc:
Game: King's Quest 4

Description

In King's Quest 4 SCI, I repeatedly encountered the message "WARNING: Ignoring MIDI event d0". This MIDI command is the MIDI "channel aftertouch" message, and for some reason it is ignored by the SCI MIDI driver. This is because "case 0xd0" is not handled in the MidiPlayer_Midi::send function.

Although I have only seen this problem in KQ4 so far, I suppose it could occur in any SCI game that uses the channel aftertouch messages.

Attached is a patch that fixes this issue. It simply forwards the channel aftertouch messages to the driver as is. Further testing might be needed to see if this cause 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.

Ticket imported from: #3116614. Ticket imported from: bugs/5525.

Attachments (1)

midi_aftertouch.patch (352 bytes ) - added by SF/sven3000 9 years ago.
Patch to enable handing of channel aftertouch messages in the SCI MIDI code.

Download all attachments as: .zip

Change History (5)

by SF/sven3000, 9 years ago

Attachment: midi_aftertouch.patch added

Patch to enable handing of channel aftertouch messages in the SCI MIDI code.

comment:1 by SF/sven3000, 9 years ago

Component: Engine: SCI
Game: King's Quest 4

comment:2 by SF/sven3000, 9 years ago

I just noticed the function also ignores case 0xA0, which is the polyphonic aftertouch message. Although I've not yet seen a situation in any SCI game that I've played with ScummVM where those are actually used, you might want to consider handling these properly as well (live with D0, forwarding them directly to the driver should probably work).

comment:3 by bluegr, 9 years ago

Just talked this over with waltervn, and we're now ignoring these in the MIDI driver, like with the Adlib driver

SSCI originally didn't handle aftertouch, so we shouldn't either. MT-32 doesn't support aftertouch anyway, according to its manual, so this shouldn't make any audible difference. The only place where it would make a difference is in GM, but this might make the music different in GM, so again, I believe that the best thing to do is disable these instead of supporting them

comment:4 by bluegr, 9 years ago

Owner: set to bluegr
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.