Opened 13 years ago

Closed 10 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

Description

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 Changed 13 years ago by eriktorbjorn

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 Changed 13 years ago by lordhoto

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 Changed 13 years ago by lordhoto

Component: Engine: Kyra
Game: Kyrandia 1

comment:4 Changed 13 years ago by lordhoto

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

comment:5 Changed 13 years ago by SF/noizert

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 http://vogons.zetafleet.com for more info.

comment:6 Changed 13 years ago by lordhoto

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
behaviour.

comment:7 Changed 13 years ago by SF/noizert

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 Changed 13 years ago by lordhoto

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 Changed 13 years ago by lordhoto

Owner: set to lordhoto

comment:10 Changed 13 years ago by SF/noizert

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:
http://vogons.zetafleet.com/viewtopic.php?t=12448
Maybe it's wise to enlighten him about problems with the
emulator.

comment:11 Changed 13 years ago by eriktorbjorn

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 Changed 13 years ago by lordhoto

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 Changed 13 years ago by lordhoto

Status: newpending

comment:14 Changed 13 years ago by eriktorbjorn

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 Changed 13 years ago by eriktorbjorn

Status: pendingnew

comment:16 Changed 13 years ago by fingolfin

What is the status of this item?

comment:17 Changed 13 years ago by fingolfin

Status: newpending

comment:18 Changed 13 years ago by lordhoto

Status: pendingnew

comment:19 Changed 13 years ago by lordhoto

Still occurs, I guess a threading issue.

comment:20 Changed 12 years ago by sev-

What is the status of this item?

comment:21 Changed 12 years ago by lordhoto

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 Changed 11 years ago by raziel-

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 Changed 10 years ago by lordhoto

Resolution: fixed
Status: newclosed

comment:24 Changed 10 years ago by lordhoto

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.