Moving this out of OggHandler extension to 'extension requests' generally.

I'm not sure how fully or consistently inline midi players are supported on modern browsers; if common and consistent, a MidiHandler class could probably be tossed into core pretty easily. If not, it might require jumping through some hoops to provide a player, which would be kinda uggy.

On Commons and other Mediawiki Wikis, there are uploads of MIDI files,

However, to play these 'in-browser' currently requires a non-free plugin (such as Quicktime)

By providing an 'inline' player for Midi (possibly based on Java) this dependence on a non-free plugin would be reduced.

One possible solution, but this would involve some work, is for the server side to do a one-shot rendering of MIDI files into a format like OGG (using something like FluidSynth and a suitable 'free' sample set).

A second solution would be to have a specific inline MIDI plugin.

The third solution is the current one, whereby the MIDI file is offered for
download to an external player.

FWIW the Score extension invokes /usr/bin/timidity (the TiMidity++ MIDI converter) in Score.body.php's generateOgg() to convert MIDI files generated by GNU Lilypond into .ogg files. It seems plausible to do just this part of Score's processing for other MIDI files.

A different approach is to read, process, and play MIDI files directly in sufficiently powerful recent browsers, see http://mudcu.be/midi-js/

spage, thank you for clarifying this. I hadn't looked closely at Score and only saw that the player was JS. I didn't look at the source and only saw that Bug 43388 called for MIDI and assumed that, as a result, TMH was using MIDI.

But, yes, midi.js was the other tool I looked at for this. From my tests (and information on the website), it doesn't work as well in recent Firefox as it does in Chrome. Filing a bug with Mozilla.