Haiku MIDI Player 1.0.0 beta

This is a simple application to play MIDI songs.

To play a MIDI song, you can:

Hopefully, most of the options will be obvious, although Live Input may require a few lines of explanation.

The Live Input feature enables you to attach other applications to the Haiku software synthesizer, for example a virtual MIDI keyboard. MidiPlayer looks at the MIDI roster for compatible producer endpoints. If none are found, Live Input is not available.

Differences with the BeOS R5 MidiPlayer:

If people really really want these missing features, then feel free to add them :-)

Implementation notes

The code can be a little tricky at times, since it uses fire-and-forget threads to load new songs and to stop playback. The reason for this is the scope: we want to keep repainting the ScopeView even when fading out a song (because this looks cool), but fading blocks the calling thread. If we were to block the window's looper, then the scope wouldn't repaint during the fade-out. So we fade using a separate thread instead. Unfortunately, this makes the code much less clean as it introduces several race conditions. Yech. See the source for more details.