At this year’s ISMIR Conference, we presented our work on protovoices. Protovoices address the problem of how the notes are organized in a piece of music written in free polyphony. Free polyphony means that the notes are neither organized in a fixed set of voices (as in a chorale or a fugue) nor in simple chords. It is therefore hard to tell, which notes are related to each other horizontally (i.e. perceived as a sequence) and which notes are related vertically (i.e. are perceived as “sounding together”, even if they don’t occur simultaneously). In addition to the relations between individual notes, we are interested in how high-level concepts (such as harmonies or voice-leading patterns) relate exactly to these complex textures.
We model this structure through a generative process that “recreates” the piece step by step from a number of structural principles:
- Every note is an elaboration or ornament of some existing notes, i.e. it has a function (as a neighbor note, passing note, or repetition) with respect to one or two parent notes. The notes that are generated first are root notes.
- Elaboration operations are applied locally, i.e. along existing relations.
- Elaboration is recursive, i.e. a note generated as an ornament can become the parent of another note.
Along with the notes of the piece, the process generates two primitive relations: a network of horizontal relations between notes (the so-called “protovoices”), and sequence of “slices” that group notes that are simultaneous. The protovoice network is extended by inserting new child notes along existing connections. Slices can be either split
, which creates a new slice between two existing slices that can be filled with new notes, or spread
to make its notes non-simultaneous.
Let’s look at an example. We want to explain a simple cadential phrase with a suspension.
This phrase can be derived using the following steps:
- We start with the empty piece, represented by a “start” and a “stop” node with a single edge between them.
- We
split
the root edge and insert two root notes, the tonic C and its third E. - This root slice is
spread
to create the initial (C, E) and the final slice (only C). We also introduce a passing edge between E and C, which must be filled in subsequent steps. - We
split
again, filling the passing edge with the passing note D and adding a neighbor B between the two Cs. - Finally, we create the suspension through another
split
, repeating the C from the first and the D from the second slice. Thus, the upper voice already moves from E to D, while the lower voice stays on the D, resolving the dissonance in the following slice.
If you would like to see some more examples, including derivations of complete pieces, have a look at our interactive examples. You can also have a look at our video presentation from ISMIR, or directly check out the paper.
This work is part of our ERC project on principles of musical structure building and as such has received funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme, under grant agreement No 760081 – PMSB.