Opened 13 years ago

Closed 11 years ago

#2678 closed defect (fixed)

KYRA1: Crash on exceeded polyphony

Reported by: SF/noizert Owned by: lordhoto
Priority: normal Component: Engine: Kyra
Keywords: Cc:
Game: Kyrandia 1


When changing rooms from pool of sorrow to dark forrest
(both sides) I often get: WARNING:
MidiParser::hangingNote(): Exceeded polyphony!
Wich sometimes crashes ScummVM.

Using Jun 14 17:52 build. With mp3 compressed emc files
and cm-32l emulation enabled on Win x64.

Ticket imported from: #1506583. Ticket imported from: bugs/2678.

Change History (24)

comment:1 by eriktorbjorn, 13 years ago

MIDI music is known to not work right in The Legend of
Kyrandia, though this particular problem was new to me. I
haven't been able to reproduce it myself.

Adlib music should be well supported, however, and sounds
surprisingly good.

comment:2 by lordhoto, 13 years ago

A little question what is cm-32l emulation and how did you
compress the script files with mp3 (or did you mean the .VRM
files instead of .EMC)?

comment:3 by lordhoto, 13 years ago

Component: Engine: Kyra
Game: Kyrandia 1

comment:4 by lordhoto, 13 years ago

Summary: kyrandia: crash on exceeded polyphonyKYRA1: Crash on exceeded polyphony

comment:5 by SF/noizert, 13 years ago

Meant .vrm yes. CM-32L is the follow up for the MT-32.
ScummVM supports it roms for quite a while now via munt.
Check out for more info.

comment:6 by lordhoto, 13 years ago

Ok I tried today, I couldn't reproduce it with my (real)
MT-32 (with Linux/ALSA), I also didn't got any warnings like
that. I guess it's not kyra what crashes ScummVM but the
MT-32 emulator, try to use a native MIDI output on your
system and check if you can still confirm the described

comment:7 by SF/noizert, 13 years ago

When using Windows MIDI I get the following messages
whenever changing rooms:

WARNING: MM System Error 'There is not enough memory
available for this task. Q
uit one or more applications to increase available memory,
and then try again.'!

Again on the same location I get MidiParser::hangingNote():
Exceeded polyphony! and the message written above.

Which now doesn't result in a crash, but garbled MIDI music
for a second. Then the music continues playing.

I'm using the standard Windows MIDI Synth.

comment:8 by lordhoto, 13 years ago

Ok I think we can safly say here that it's a XMIDI parser
and maybe (C)MT-32(l) emulation problem. I won't have time
to look at this before the 0.9.0 release but since I'll work
on fixing MT-32 specific problems in the nearer future I'll
try to look at the problems with the XMIDI parser too.
(Whoever is in charge of the MT-32 emulator please take a
look at the specific problems with it).

comment:9 by lordhoto, 13 years ago

Owner: set to lordhoto

comment:10 by SF/noizert, 13 years ago

Kingguppy who did a lot of work for mt32/cm32l emulation
seems to have resided his work, although I can not say this
for sure. A today's post of canadacow, the orignal developer
of mt32 emulator, posted some good news today:
Maybe it's wise to enlighten him about problems with the

comment:11 by eriktorbjorn, 13 years ago

I've had this happen at startup a couple of times now with
the ALSA driver. For whatever reason, MidiParser::onTimer()
is parsing a bunch of MIDI events telling it to hang notes.

Perhaps there's a threading issue? I noticed some engines
use a mutex in combination with the MIDI parser. I'm not
familiar enough with the problems involved.

comment:12 by lordhoto, 13 years ago

I commited a possible fix today, could you try again? Since
I was never able to reproduce this. So if it's gone I'll
close this.

comment:13 by lordhoto, 13 years ago

Status: newpending

comment:14 by eriktorbjorn, 13 years ago

I just got the "exceeded polyphony" warning from the Kyra 2
intro (using MIDI music). There was a very short cacophony
of notes, and I don't think I actually heard it play the
tune it was supposed to.

How's this for a wild guess? Perhaps it thought - for
whatever perverted reason - that it was really behind on
processing MIDI events, and that it had to handle them all
at once just to catch up?

But why would it do that? Uninitialized variable? Memory
corruption? Something else?

comment:15 by eriktorbjorn, 13 years ago

Status: pendingnew

comment:16 by fingolfin, 13 years ago

What is the status of this item?

comment:17 by fingolfin, 13 years ago

Status: newpending

comment:18 by lordhoto, 13 years ago

Status: pendingnew

comment:19 by lordhoto, 13 years ago

Still occurs, I guess a threading issue.

comment:20 by sev-, 12 years ago

What is the status of this item?

comment:21 by lordhoto, 12 years ago

Still happens from time to time, someone with more knowledge of MIDI and threading would have to rewrite the MIDI player code. Together with this bug #1497961 "KYRA1: music/sfx volume settings not working" could be fixed, also MT-32 initializing code could be added.

comment:22 by raziel-, 12 years ago

ScummVM 0.12.0svn (Mar 12 2008 19:33:29)
Features compiled in: Vorbis FLAC MP3 zLib MPEG2

I got the exact same behaviour as the OP while wandering
Serpent's Grotto except it didn't crash, it just shut down
MIDI playback (background music - effects were still
working) until i loaded a saved game. (which brought back
MIDI background music)

Same behaviour as eriktorbjoern posted:
"There was a very short cacophony of notes"

comment:23 by lordhoto, 11 years ago

Resolution: fixed
Status: newclosed

comment:24 by lordhoto, 11 years ago

I just recently played through Kyrandia 1 German with MIDI (to be precise MT-32) and didn't encounter anything like that anymore, so I must have been fixed by my MIDI changes to KYRA before 0.13.0.

Note: See TracTickets for help on using tickets.