[fofix-gcode-issuetracker] Issue 1268 in fofix: FoFiX doesn't correctly parse Sysex MIDI events
fofix at googlecode.com
fofix at googlecode.com
Tue Oct 4 21:40:56 UTC 2011
Status: New
Owner: ----
Labels: Priority-Low
New issue 1268 by raynebc: FoFiX doesn't correctly parse Sysex MIDI events
http://code.google.com/p/fofix/issues/detail?id=1268
Describe the problem. What did you expect? What do you see?
As described here:
http://www.fretsonfire.net/forums/viewtopic.php?f=11&t=50698&start=420#p600014
and here:
http://www.fretsonfire.net/forums/viewtopic.php?f=11&t=50698&p=600020#p600020
The user indicates that a chart that uses hi-hat control phrases added by
EOF, FoF won't play it, it will return to the song selection screen. EOF
exports them as Sysex events that should rightly be ignored by any software
that doesn't have their own handling for those events. However, it appears
FoFiX will just fail to handle the MIDI entirely.
List the steps to recreate the problem.
1. Play a chart where the MIDI has Sysex events
What version are you using? Include the FoFiX version, the Python version,
your operating system, and whether it is Git, alpha, beta, RC, or final
release. (If it's Git, please include the commit hash.)
The user indicated this occurs with FoFiX 3.121 and FoFiX 4.0.
If this is a bug report, please include the log file!
The user provided the FoFiX 4 log:
[ 0.000000] (D) Logging initialized: Tue Oct 04 16:16:39 2011
[ 0.515000] (W) Pitch bending is not supported; install john.stumpo's
pitchbend module (r7 or higher) if you want it.
[ 0.515000] (W) OggStreamer not found. Falling back to legacy
pyogg/pyvorbis based ogg streamer.
[ 0.640000] (W) Missing pyaudio or pypitch - microphone support will not be
possible
[ 0.703000] (D) GameEngine class init (GameEngine.py)...
[ 0.703000] (D) FoFiX v4.0.0 alpha 1 starting up...
[ 0.703000] (D) Python version: 2.6.6
[ 0.703000] (D) Pygame version: 1.9.1release-svn2575
[ 0.703000] (D) PyOpenGL version: 3.0.1
[ 0.703000] (D) Numpy version: 1.5.1
[ 0.703000] (D) PIL version: 1.1.7+
[ 0.703000] (D) sys.argv: ['C:\\Documents and Settings\\Joe
Santoli\\Desktop\\fofix-4.0.0alpha1-win32\\fofix-4.0.0alpha1\\FoFiX.exe']
[ 0.703000] (D) os.name: nt
[ 0.703000] (D) sys.platform: win32
[ 0.703000] (D) win32api.GetVersionEx(1): (5, 1, 2600, 2, 'Service Pack 2',
2, 0, 256, 1, 0)
[ 0.719000] (D) Disabling screensaver.
[ 0.719000] (D) Initializing audio.
[ 0.765000] (D) Audio configuration: (44100, -16, 2)
[ 0.781000] (D) Initializing pygame.mixer & audio system at 44100 Hz.
[ 0.781000] (D) Initializing video.
[ 0.859000] (D) 0 joysticks found.
[ 0.875000] (W) No MIDI input ports found.
[ 1.547000] (D) Theme font not found: title.ttf
[ 1.547000] (D) Theme font not found: streak.ttf
[ 1.547000] (D) Theme font not found: song.ttf
[ 1.562000] (D) Theme font not found: songlist.ttf
[ 1.562000] (D) Theme font not found: songlist.ttf
[ 1.562000] (D) Theme font not found: streakphrase.ttf
[ 1.562000] (D) 6 guitscw sounds found in sounds: guitscw1.ogg -
guitscw6.ogg
[ 1.562000] (D) Theme sound not found: bassdrum.ogg
[ 1.578000] (D) Theme sound not found: battleused.ogg
[ 1.578000] (D) Theme sound not found: crash.ogg
[ 1.578000] (D) Theme sound not found: clapsound.ogg
[ 1.578000] (D) Theme sound not found: coopfail.ogg
[ 1.578000] (D) Theme sound not found: failsound.ogg
[ 1.578000] (D) Theme sound not found: rescue.ogg
[ 1.578000] (D) Theme sound not found: rocksound.ogg
[ 1.578000] (D) Theme sound not found: staractivate.ogg
[ 1.578000] (D) Theme sound not found: stardeactivate.ogg
[ 1.594000] (D) Theme sound not found: starlost.ogg
[ 1.594000] (D) Theme sound not found: starpowerready.ogg
[ 1.594000] (D) Theme sound not found: tom01.ogg
[ 1.594000] (D) Theme sound not found: tom02.ogg
[ 1.594000] (D) Theme sound not found: tom03.ogg
[ 1.594000] (W) MegaLight V4/sounds/crowdcheers.ogg not found -- using
data/sounds/crowdcheers.ogg instead.
[ 1.594000] (W) No stages\ folder found, forcing None setting for Animated
Stage.
[ 1.594000] (D) theme.ini loaded
[ 1.609000] (D) Ready.
[ 1.609000] (D) 6 bassscw sounds found in sounds: bassscw1.ogg -
bassscw6.ogg
[ 1.687000] (D) 8 drumscw sounds found in sounds: drumscw1.ogg -
drumscw8.ogg
[ 4.000000] (D) View: Push: MainMenu
[ 4.000000] (D) View: Push: Menu
[ 6.281000] (W) Your theme does not appear to properly support the solo
graphical submenu. Check to be sure you have the latest version of your
theme.
[ 6.281000] (D) View: Push: Menu
[ 7.390000] (D) View: Pop all
[ 7.390000] (D) View: Pop: MainMenu
[ 7.390000] (D) View: Pop: Menu
[ 7.390000] (D) View: Pop: Menu
[ 7.390000] (D) View: Pop: MainMenu
[ 7.406000] (D) View: Pop: Menu
[ 7.515000] (D) View: Push: Lobby
[ 7.515000] (W) No theme class for themeLobby - Loading default...
[ 13.484000] (D) View: Push: LoadingSplashScreen
[ 13.484000] (W) No theme class for setlist - Loading default...
[ 13.484000] (W) Your theme does not appear to properly support the setlist
graphical submenu. Check to be sure you have the latest version of your
theme.
[ 13.484000] (D) Loading libraries in C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs
[ 13.500000] (D) Song.getAvailableLibraries function call...library =
C:\Documents and Settings\Joe Santoli\Desktop\FoFiX 3.121 Final (py 2.4
ogl2)\data\songs
[ 13.500000] (D) Loading songs in C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs
[ 13.547000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\8. Shadow Gallery - The
Crusher\song.ini was not found in the cache.
[ 13.547000] (D) Retrieving parts from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\8. Shadow
Gallery - The Crusher\notes.mid
[ 13.703000] (D) MIDI Type identified as GH
[ 13.703000] (D) Retrieving sections from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\8. Shadow
Gallery - The Crusher\notes.mid
[ 13.844000] (D) Writing out cache for song C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\8. Shadow
Gallery - The Crusher\song.ini.
[ 13.844000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Closure in Moscow - Reindeer
Age\song.ini was not found in the cache.
[ 13.844000] (D) Retrieving parts from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Closure in
Moscow - Reindeer Age\notes.mid
[ 13.969000] (D) MIDI Type identified as GH
[ 13.969000] (D) Retrieving sections from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Closure in
Moscow - Reindeer Age\notes.mid
[ 14.078000] (W) Song.py: Using auto-generated note count sections...
[ 14.078000] (D) Writing out cache for song C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Closure in
Moscow - Reindeer Age\song.ini.
[ 14.078000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Milk+ - Celadoar\song.ini was not
found in the cache.
[ 14.078000] (D) Retrieving parts from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Milk+ -
Celadoar\notes.mid
[ 14.094000] (W) Note file not parsed correctly. Selected part and/or
difficulty may not be available.
[ 14.094000] (D) Retrieving sections from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Milk+ -
Celadoar\notes.mid
[ 14.094000] (W) Song.py: Unable to retrieve section names for practice
mode selection: MidiSectionReader instance has no attribute 'sysex_event'
[ 14.094000] (D) Writing out cache for song C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Milk+ -
Celadoar\song.ini.
[ 14.328000] (D) Setlist loaded.
[ 14.328000] (D) View: Pop: LoadingSplashScreen
[ 14.328000] (W) Unable to load image file: C:\Documents and Settings\Joe
Santoli\Desktop\fofix-4.0.0alpha1-win32\fofix-4.0.0alpha1\data\themes\MegaLight
V4\setlist\item.dae
[ 14.328000] (W) Unable to load image file: C:\Documents and Settings\Joe
Santoli\Desktop\fofix-4.0.0alpha1-win32\fofix-4.0.0alpha1\data\themes\MegaLight
V4\setlist\label.dae
[ 14.328000] (W) Unable to load image file: C:\Documents and Settings\Joe
Santoli\Desktop\fofix-4.0.0alpha1-win32\fofix-4.0.0alpha1\data\themes\MegaLight
V4\setlist\library.dae
[ 14.328000] (W) Unable to load image file: C:\Documents and Settings\Joe
Santoli\Desktop\fofix-4.0.0alpha1-win32\fofix-4.0.0alpha1\data\themes\MegaLight
V4\setlist\library_label.dae
[ 14.578000] (D) View: Push: SongChoosingScene
[ 14.578000] (D) View: Pop: Lobby
[ 20.578000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Milk+ - Celadoar\song.ini successfully
loaded from cache.
[ 20.578000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Milk+ - Celadoar\song.ini successfully
loaded from cache.
[ 20.578000] (D) View: Push: PartDiffChooser
[ 20.578000] (W) No theme class for partDiff - Loading default...
[ 26.203000] (D) View: Pop: PartDiffChooser
[ 26.219000] (D) View: Pop: SongChoosingScene
[ 26.219000] (D) GuitarScene init...
[ 26.219000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Milk+ - Celadoar\song.ini successfully
loaded from cache.
[ 26.219000] (D) View: Push: LoadingSplashScreen
[ 26.250000] (D) Battle Objects Enabled: [4, 2, 3, 7, 8, 6, 5]
[ 26.250000] (E) Attempted to load theme variable fret_press - no default
found.
Traceback (most recent call last):
File "Theme.pyo", line 58, in __getattr__
KeyError: 'fret_press'
[ 26.641000] (D) themes\MegaLight V4\notes exists!
[ 27.031000] (D) Simple tails used; complex tail loading error...
[ 27.109000] (D) GuitarScene keysList: [[64, 256, 1024, 4096, 16384, 128,
512, 2048, 8192, 32768]]
[ 27.984000] (D) loadSong function call (song.py)...
[ 27.984000] (D) Song C:\Documents and Settings\Joe Santoli\Desktop\FoFiX
3.121 Final (py 2.4 ogl2)\data\songs\Milk+ - Celadoar\song.ini successfully
loaded from cache.
[ 28.000000] (D) Song with only a single audio track identified -
single-track miss volume applied: 1.0
[ 28.000000] (D) Retrieving notes from: C:\Documents and Settings\Joe
Santoli\Desktop\FoFiX 3.121 Final (py 2.4 ogl2)\data\songs\Milk+ -
Celadoar\notes.mid
[ 28.141000] (E) Terminating due to unhandled exception:
Traceback (most recent call last):
File "FoFiX.py", line 298, in <module>
File "FoFiX.py", line 253, in main
File "GameEngine.pyo", line 1119, in run
File "GameEngine.pyo", line 1083, in main
File "GameEngine.pyo", line 1111, in doRun
File "GameEngine.pyo", line 1078, in _runTask
File "Input.pyo", line 335, in run
File "Input.pyo", line 246, in broadcastEvent
File "SongChoosingScene.pyo", line 843, in keyPressed
File "SongChoosingScene.pyo", line 633, in startGame
File "World.pyo", line 127, in createScene
File "SceneFactory.pyo", line 38, in create
File "GuitarScene.pyo", line 852, in __init__
File "Resource.pyo", line 229, in load
File "Resource.pyo", line 100, in load
File "GuitarScene.pyo", line 852, in <lambda>
File "Song.pyo", line 3753, in loadSong
File "Song.pyo", line 2527, in __init__
File "midi\MidiInFile.pyo", line 48, in read
File "midi\MidiFileParser.pyo", line 173, in parseMTrkChunks
File "midi\MidiFileParser.pyo", line 135, in parseMTrkChunk
File "midi\EventDispatcher.pyo", line 67, in sysex_event
AttributeError: MidiReader instance has no attribute 'sysex_event'
The Phase Shift developers and I had decided to try to implement custom
markers with Sysex events because it wouldn't cause any conflicts with the
current system of using normal MIDI notes. However this becomes a problem
if FoFiX isn't handling the MIDI correctly. The fix should be very simple,
FoFiX's MIDI parser can just skip each Sysex event, each event explicitly
defines how many bytes large it is.
More information about the fofix-gcode-issuetracker
mailing list