Music Form Annotator
Introduction
Music Form Annotator is a tool to simplify the annotation of music form. It consists in a set of forms and converts the provided information into JSON files in a tree structure.
This tool's is still in alpha version and its development started in November 2022.
Tree structure
Music Form Annotator creates a JSON object with metadata
and form
attributes through a simple form. metadata
object contains title, composer and other informations about the piece movement, and form
object is a tree structure where the root is the movement and its children are the sections, subsections and phrases.
Each node contains the type (section of phrase) and start and end locations. Section-type nodes contains its name ("Exposition", "First Theme", etc.) and phrase-type contains final chord and cadence info.
Music Form Annotator renders the nodes tree with buttons to simplify edition.
This app also imports JSON data. The user can copy and paste JSON text to JSON output
field.
Finally, this app can import music form schemas such as Sonata Form.
Form fields
Metadata fields
- Title
- Composer
- Opus
- Number
- Movement
- Source. The link for the digital score source
- Filename. Score source filename
- Slug. A slug such as
haydn-op50n3-01
, for Haydn's Op. 50, number 3, movement 1.
Music form fields
1. Start/end measure and offset
The measure number and the distance from the beginning of the measure.
Offset value must be represented as a fraction or sum of fractions (see table below). The app evaluates fractions sum automatically.
Beat | Offset |
---|---|
1 | 0 |
1.25 | 1/4 |
1.5 | 1/2 |
1.75 | 3/4 or 1/2+1/4 |
2 | 1 |
2.5 | 1+1/2 |
3 | 2 |
3.5 | 2+1/2 |
4 | 3 |
2. Type
There are two types of formal units: Section and Phrase. Section units have the "name" attribute and Phrase units have "final chord" and "cadence" attributes.
3. Name
The Section unit's name. Common names are Exposition, Theme 1, Variation 1, Part 1, etc.
4. Final chord
Only Phrase units have final chords. It can be I, i, V, V/V, etc.
5. Cadence
Only Phrase units have cadences. It must be abbreviated:
Cadence | Abbreviation |
---|---|
Perfect Authentic Cadence | PAC |
Imperfect Authentic Cadence | IAC |
Half-Cadence | HC |
Deceptive Cadence | DC |
Plagal Cadence | PC |
JSON Syntax
Form Annotator returns a JSON file in a format like this:
{
"metadata": {
"title": "String Quartet in E-flat Major",
"composer": "Joseph Haydn",
"opus": "50",
"number": "3",
"movement": "1",
"filename": "op50n3-01.krn",
"slug": "op50n3-01",
"source": "https://kern.humdrum.org/cgi-bin/ksdata?l=musedata/haydn/quartet&file=op50n3-01.krn&f=kern"
},
"form": {
"name": "Movement",
"type": "Root",
"startLocation": "",
"endLocation": "",
"finalChord": "",
"cadence": "",
"children": [
{
"name": "Exposition",
"type": "Section",
"startLocation": "0, 5/8",
"endLocation": "44, 1/2",
"finalChord": "",
"cadence": "",
"children": [
{
"name": "Theme 1",
"type": "Section",
"startLocation": "0, 5/8",
"endLocation": "17, 29/56",
"finalChord": "",
"cadence": "",
"children": [
{
"name": "",
"type": "Phrase",
"startLocation": "0, 3/4",
"endLocation": "4, 1/2",
"finalChord": "I",
"cadence": "IAC",
"children": []
},
{
"name": "",
"type": "Phrase",
"startLocation": "4, 3/4",
"endLocation": "8, 1/2",
"finalChord": "I",
"cadence": "PAC",
"children": []
}
]
}
]
}
]
}
}