This document describes the SVG extensions that are written and read by the latest versions of my
It is being tracked in the Assistant Performer's GitHub repository at https://github.com/notator/assistant-performer
N.B.: this document is not currently up to date (22.03.2017). For the current description, see Moritz' issue#2.
This version introduces continuous controller settings (ccSettings
), that can be attached to Input
It also contains a major revision of the trkOptions
Status of this document
: Moritz' Assistant Composer application writes the file format, and its code is therefore the final authority. The Assistant Performer is tested exhaustively with scores created by the latest version of the Assistant Composer, and both programs are changed if any difficulty arises. So, those two programs should agree on the file format.
This document is kept up to date, but if there is any discrepancy between the programsí code and this document, this document should be updated accordingly.
It was last checked in March 2016.
Unanswered question: (see trkRef.msPosition)
In all the test scores until now, Input Chords are aligned vertically with the first Output Chord
in the Trks to which they refer. But is that always necessary? Could a Trk's msPositionInScore actually be
different from that of its containing InputChord ? If that were possible, would there be any useful consequences?
Elements that are SVG <g> elements with a class attribute are written in normal italics.
For example: an OutputStaff is: <g class="outputStaff" ...>...</g> in the SVG.
Elements and attributes that are members of the score namespace are written in blue code.
For example: OutputVoice has a score:midiChannel attribute.
The namespace is omitted inside elements that are themselves inside the score namespace.
For example:score:midiChord contains a basicChords element.
There is a complete, more formal description of the extensions below
, but first
At the top level, a System
contains one or more OutputStaff
, and zero or more InputStaff
contains one or two Output Voice
elements, which in turn contain Output Chord
Each Output Chord
contains a midiChord
element containing midi information that is ultimately
sent to a midi output
The Assistant Performer deals with Track objects. A Track contains the
complete sequence of midi chord
and rest objects for a particular midiChannel in the score, and is constructed from the midiChords and Rests
in OutputVoices that are at the same vertical position in successive
Systems in the score. Such OutputVoices have the same score:midiChannel.
A Trk is a subsection of a Track, and contains a limited sequence of
chords and rests.
Names such as trkRef, trkOptions, trkOffs.
etc. refer to Trks.
elements contain one or two Input Voice
s, which in turn contain Input Chord
s. Each Input
contains a list of inputNote
handle midi information coming from
a midi input
can also contain a ccSettings
and/or a trkOptions
element is a switch that defines the behaviour of the standard midi keyboard
continuous controllers (pressure, pitchWheel and modWheel), with respect to each output track, from
this point on in a performance. (The Assistant Composer never writes synchronous ccSettings
The behaviour can be different for different output tracks.
The Assistant Performer treats controllers individually
within the ccSettings
: If a particular
not set for a particular track, the current setting persists.
The Assistant Performer's default, before the score is
loaded, is for all three
controllers to be switched off for all tracks.
element defines options that are applied to a Trk
a performance begins.
that apply are the result of cascading the trkOptions
in the Input
elements (see below). The Assistant Performer does
the cascading, and overrides higher level
. It also persists the trkOptions
defined in an Input
, as if they are defined in all subsequent Input
s until the next Input
that contains an explicit trkOptions
element. The persistence over time is also
The Assistant Performer's default trkOptions
are such that the score plays as written in
element can contain a trkOptions
and/or a noteOn
and/or a noteOff
, and noteOff
elements can contain a trkOptions
and/or a seq
and/or a trkOffs
element can contain a trkOptions
element, and it must
contain a list of trkRef
defines a Trk (a section of an output track). It can contain a trkOptions
must have the
following attributes: midiChannel
element defines an output track to which a trackOff message will be sent when the
arrives. A trkOffs
element has a single attribute (midiChannels
which is a string of midi channel indices separated by space characters.
This file definition allows very complex output events to be triggered using single noteOn
but it also allows a single noteOn
to trigger a single
— which would be like playing a "prepared piano", except that
can change during the performance.
Different scores can be created for performing the same output
information at different levels of control. Recordings are performed by pressing
a single button. Piano pieces are traditionally played by pressing a single
key for each note...