[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[pygame] MIDI player selecting wrong instruments



Hello.  I'm having a problem with pykaraoke which the developer says must be something to do with pygame.  For certain .kar files, the wrong instruments are selected, compared with playing back using timidity (Linux), and this can make music either hard or impossible to listen to.

I'm using the command line

strace <command> <filename> 2>&1 | grep 'open.*\.pat' | grep -v 'No'

With "Boyzone - When The Going Gets Tough", for <command> = "timidity", I get

open("/usr/share/midi/eawpats/acpiano.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/percorg.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/cleangtr.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/odguitar.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/distgtr.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/synbass1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/marcato.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/synstr1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/doo.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/hitbrass.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/altosax.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/sqrwave.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/syntom.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/revcym.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/kick1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/stickrim.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/snare1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/claps.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/snare2.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/hihatcl.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tomlo1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tommid2.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/hihatop.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tommid1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tomhi2.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/cymcrsh1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tomhi1.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/tamborin.pat", O_RDONLY) = 8
open("/usr/share/midi/eawpats/cymcrsh2.pat", O_RDONLY) = 8

but for <command> = "pykaraoke" I get

open("/usr/share/midi/eawpats/acpiano.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/percorg.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/cleangtr.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/odguitar.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/distgtr.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/synbass1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/marcato.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/synstr1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/doo.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/hitbrass.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/altosax.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/syntom.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/revcym.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/kick1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/stickrim.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/snare1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/claps.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/snare2.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/hihatcl.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tomlo1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tommid2.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/hihatop.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tommid1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tomhi2.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/cymcrsh1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tomhi1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/tamborin.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/cymcrsh2.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/congalo.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/timbalel.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/agogohi.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/cabasa.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/maracas.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/whistle1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/guiro1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/guiro2.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/woodblk1.pat", O_RDONLY) = 14
open("/usr/share/midi/eawpats/cuica1.pat", O_RDONLY) = 14

Timidity opens "sqrwave" which pykaraoke doesn't.  Pykaraoke opens "congalo", "timbale1", "agogohi", "cabasa", "maracas", "whistle1", "guiro1", "guiro2", "woodblk1" and "cuica1" which timidity doesn't.

The most obvious result is that the first swooshing percussive sound is a machine gun, and the "vocal" is a piercing football whistle, which is of the wrong pitch and doesn't stop, making the track unusable.

Any ideas why?  Or where I could look to find out?  I first noticed this a couple of years ago but since it persists in a clean install of Ubuntu 9.10 I thought I'd ask again.  Many thanks.