The Assistant Performer (2025) is a development of the original Assistant Performer. It implements new functionality made possible by the use of a new score format.
The new format, written by Moritz (2025), changes the way chord and rest symbols store MIDI information.
These are breaking changes, so not all the original scores are supported.
For this reason, the original Assistant Performer is going to remain online, with all its scores.
When ready, the Assistant Performer (2025) will be uploaded at a different, parallel address.
The chord format has changed as follows:
-
Multiple interpretations of a particular score are now supported. The Study 1 (2025) and Pianola Music (2025) scores include such alternative, predefined interpretations. Such interpretations will be selectable from the Assistant Performer (2025) user interface.
The Pianola Music (2025) score now repeats automatically, relating each repeat to a particular interpretation. -
There is now a one to one correspondence between chord symbols and performed events (key presses).
This is important when the score is being played or recorded live by a human performer using the ResidentSynthHost.
In future, it should be possible to copy such live MIDI recordings into the score, in order to develop performance practice.
So Moritz 2025 no longer uses palettes as a way to define ornaments. (They are now implemented internally by the ResidentSynth.)
Scores containing embedded ornaments, such as Study 2, are therefore not supported by the Assistant Performer (2025).
This application is an experimental music score player with conducting options.
Its purpose is to test and develop
1. the SVG-MIDI format in which the scores are stored
2. the ways in which users can interact with playback.
This repository has two major branches:
dev: the unstable development application.
stable: the current stable application.
The dev branch has been fully merged into the stable branch in May 2024, and the two online web applications are now identical. There is, however, no guarantee that this will always be the case.
The Assistant Performer now uses the ResidentSynth (GitHub, Documentation) as its only MIDI output device. This means that it no longer requires use of the Web MIDI API. The ResidentSynth is a MIDI output device that is implemented using the Web Audio API .
This project is designed to be an investigation of the concepts involved. It is not intended to be a finished product. Its top-level architecture and what it does is much more important than the actual code. Both the Assistant Performer and the ResidentSynth are working prototypes whose actual code might well be improved.
Neither the Assistant Performer nor the ResidentSynth require use of the Web MIDI API. The synthesizer implements the Web MIDI MIDIOutput interface using the Web Audio API.
The SVG-MIDI format is SVG containing embedded MIDI information.
Code for event symbols in the scores contain both spatial (SVG) and temporal (MIDI) information. This allows the Assistant Performer to
1. synchronize the position of running cursors with live audio output
2. give the user control over the start- and end-points of playback.
Currently, the scores are all written using a simplified version of standard Western music notation. This could, in principle, change in future: All music notations contain event symbols whose appearance (in space) is independent of their meaning (in time), so any music notation (designed for writing on paper) could be extended (when stored in a computer file) to contain temporal information.
The Assistant Performer ´s main documentation can be found here.
James Ingram
April 2025