Web Midifile Performer

An online assisted musical interpretation tool

The Midifile Performer web app has a long history, originating from Jean Haury's Metapiano project, a digital and far more sophisticated version of the 1846 Unitouche system from Jean-Baptiste Acklin.

MusicXML and MIDI views of the Midifile Performer web app

Midifile Performer is a Digital Musical Instrument composed of :

  • a hardware part, usually a MIDI keyboard controller with velocity
  • a software part allowing to loads scores and perform expressive interpretations of them

In other words, it is an instrument that contains the score and lets you play everything but the notes : the rythm, the nuances, and the articulations. The notes are always played in the order specified by the score, each new key press triggering the next note or chord.

The Metapiano has been thouroughly described by Jean Haury, along with his pianotechnie method (a way of noting interactive scores that is behind the Metapiano). It exists as a Max/MSP application and the notation of the scores' interactivity is authored manually, event by event, from within the application.

While this approach provides great flexibility in the specification of the interaction, it is a tedious process, especially for long scores, and there's an even more tedious, separate manual process to encode the synchronization of a graphical cursor with the score if one wants to know where they are while playing.

Midifile Performer, a Java application created by Dr Bernard P. Serpette at INRIA Bordeaux in collaboration with Jean Haury, addresses this limitation by providing an automated way to make scores interactive from their MIDI representations. While this approach is not as flexible as the pianotechnie process, it works great enough to be used by a large number of people, and opens the principle of the Metapiano to new musical repertoires. This research took place at the SCRIME and there is a publication about the formalism defined by Bernard P. Serpette in the framework of this project. The software can be downloaded from the github releases.

Web Midifile Performer aims to make the Midifile Performer application available to an even greater number of people. It is the outcome of the SCRIME asking me to port the original Java application to the web. What a mission ! I didn't find any straightforward way to get some Java application to be served in a browser so I thought about the most flexible way to achieve the mission. The web app ended up being based on a core C++ library transpiled to WASM by Emscripten, consumed by a VueJS application served by a lightweight ExpressJS server. The whole source code is on github. I met Raphaƫl Blard while I was working on the first versions of the project. He was doing an internship at the SCRIME. He helped me a lot to spot some bugs and fix some of them in the core library, and he made a C++ plugin for OSSIA Score out of it (that was the goal of his internship). We even co-authored a paper to describe our work on the web app. Later he worked as a freelance developer for the SCRIME and he improved a lot the web app's GUI, notably he implemented all the MusicXML functionalities that are real game changers !

Lately I've been lurking to reimplement the C++ library in Typescript as we mostly use the web app, and also because Bernard P. Serpette created a new formalism he included in his Java application, which would justify an update of the library.

last modification date : 2025-10-15 12:35:46