First post, by Tristan

User metadata
Rank Newbie

I found a bug in the patch cache code. When changing patches in MidiChannel::SetPatch new values are written into the patch cache however currently playing partials(on the same channel) still have a pointer to these cache entries. The end result is that currently playing partials access the new data and therefore behave incorrectly.

The bug fix I have added to my code allows each partial to have its own patch cache. The partials patch cache is only used if the partial is still playing when the channels patch is changed.

Dune 2 is known to be affected especially the end-game sequence which has a howling sound as a result of the bug. The changes I made also removed a bang/pop sound from both Ultima 7 and Kings Quest 6 (the beuty and the beast music). Other, less noticable, improvements may also be introduced by these changes.

Source files affected:
Code segment at line 1700 in my source tree.

Movement of tcache to the public section.
Addition of "patchCache cachebackup[4]" to the
public section.

The latest Linux version (includes bug fix) can be downloaded from

Reply 2 of 4, by Tristan

User metadata
Rank Newbie

Scummvm rocks.
I was plesantly surprised that Scummvm has a MT-32 option and that it will automaticly upload the necessary patches onto the module (or emulator). I expected to have to manually upload the patches like with Exult (another great program).


Reply 4 of 4, by laxdragon

User metadata
Rank Member

Fine work. Just built and tested on my Debian 'Sarge' box. I love the X interface to the MT-32. My only wish is that I could minimize it to the Gnome status tray.

I've been using it with the build of ScummVM that is in the Debian tree. Ver 0.6.1b. I set ScummVM to use ALSA, and added the line:
to the [scummvm] block of my ~/.scummvmrc

I know its working as I can see ScummVM appear on the GUI of xmt32.

Here is a screenshot for giggles!