Reproductions steps
- Install the Score extension on a Windows machine (I was able to reproduce on Windows XP and Windows 7)
- Create a page with the following wikitext:
<score midi="1">\relative c' { d }</score>
- Click "Show Preview". The following error appears:
No MIDI file generated despite being requested. If you are working in raw LilyPond mode, make sure to provide a proper \midi block.
Cause
- Score.body.php uses ".midi" throughout the file as the extension for MIDI files
- However, on Windows, Lilypond treats ".mid" as the default extension for MIDI files. See the following Lilypond page (http://lilypond.org/doc/v2.15/Documentation/notation/creating-midi-files):
Due to some limitations on Windows, the default extension for MIDI files on Windows is .mid.
Recommendation
- Add the "-dmidi-extension=midi" command line arg as per http://www.lilypond.org/doc/v2.17/Documentation/usage/command_002dline-usage
Specifically:
midi-extension "midi" Set the default file extension for MIDI output file to given string.
The recommended area of change would be here:
$cmd = wfEscapeShellArg( $wgScoreLilyPond )
. ' ' . wfEscapeShellArg( '-dsafe=#t' ) . ' -dmidi-extension=midi' . ' -dbackend=ps --png --header=texidoc ' . wfEscapeShellArg( $factoryLy ) . ' 2>&1';
The above change allows me to generate MIDI files on my Windows XP box.
I've also tested the "-dmidi-extension=midi" command-line argument on Windows XP, Windows 7, and Linux Mint Nadia. In each case, the output MIDI file has an extension of ".midi" (i.e.: manually specifying "midi" on Linux seems to be benign)
Version: unspecified
Severity: major
OS: Windows XP