A MIDI file being played through and visualized by a web app in Google Chrome via the Web MIDI API.
QMidi plays the MIDI file and sends the MIDI data to VMPK, which is set up to forward its input to its output. (VMPK is only being used to provide an output port to pick up from.) The My MIDI Keyboard web app picks up the MIDI data from VMPK, displays the notes being played on four different layouts (traditional, Jankó, Wicki-Hayden, and Harmonic Table), and finally forwards the MIDI data to qsynth. That's a total of four apps involved, one of which is a web app written in JavaScript.
Currently only Google Chrome supports the Web MIDI API, and only through setting a flag. For other browsers, you can use the Jazz-Soft.net Jazz-Plugin and the Web MIDI API Shim by Chris Wilson to add the same functionality.
My MIDI Keyboard: http://www.kreativekorp.com/app/mymidikeyboard/
Google Chrome: https://www.google.com/intl/en/chrome/browser/
Web MIDI API: http://www.w3.org/TR/webmidi/
Jazz-Soft.net Jazz-Plugin: http://jazz-soft.net/
Web MIDI API Shim: https://github.com/cwilso/WebMIDIAPIShim
QMidi: http://www.mixagesoftware.com/
VMPK: http://vmpk.sourceforge.net/
Qsynth: http://qsynth.sourceforge.net/
Jankó keyboard: http://en.wikipedia.org/wiki/Jank%C3%B3_keyboard
Wicki-Hayden: http://en.wikipedia.org/wiki/Wicki-Hayden_note_layout
Harmonic Table: http://en.wikipedia.org/wiki/Harmonic_table_note_layout