Skip to content

MeasuringPolyphony/mp-sonority-analysis

 
 

Repository files navigation

Measuring Polyphony

This repository holds a group of scripts designed to manipulate data generated from the Rodan-Client, a web application developed through the SIMSSA Project. The Rodan-Client is a GUI for the VIS-Framework, allowing users to create graphical music analysis workflows using indexers created in VIS.

The scripts included in this repo were designed for Karen Desmond’s research project, Measuring Polyphony, and are used to aggregate and and generate visualizations of the Rodan-client-generated data in order to compare stylistic change in 14th-century motets.

Theoretical Background:

This research project ‘Measuring Polyphony’ investigates changes in musical style from the close of the thirteenth century (ars antiqua) to the middle of the fourteenth century when the ars nova was firmly established. Our study focuses subset of this repertory that is representative of this transitional period: the more recent motets in the last fascicle of the Montpellier codex, copied c. 1314 (24 motets, hereafter ‘Montpellier’); motets in the Fauvel manuscript (copied c. 1317-22 and Brussels Rotulus (c. 1330) (17 motets, hereafter ‘Fauv/Br’); and those motets found in the Ivrea manuscript (prob. copied 1370s though preserving a somewhat earlier repertoire) that are also listed in the Tremoille index (a further 22 motets, hereafter ‘Iv+Trem’). Our research question is: how does the deployment of particular sonorities influence the perception of meter in these pieces? In other words, according to the rules set down by medieval theorists for the most consonant or perfect intervals, where are these consonant intervals deployed in the compositions, and what sort of changes in sonority deployment take place over time?

Generating the data:

In order to address this question, we combined SIMSSA software with custom scripts suited to our specific needs. To run automated analysis on the motets, first, each motet was transcribed from the most recent modern edition using Sibelius, and the note values of the transcriptions augmented to match the note values of the original medieval notation. In other words a breve (or in some cases a dotted breve, or a dotted breve tied to a dotted semibreves) in our transcriptions signifies a breve in the original notation. In the case of the Montpellier and Fauv/Br motets these transcriptions were double-checked against the manuscript sources; in some cases the Iv/Trem motets were checked against a manuscript source, however, since many motets in this group are found in several manuscript sources, the proofreading in this group in general was against the modern edition. A further proofreading process was carried out to verify notated accidentals, and to insert suggestions for unnotated inflections (primarily to avoid augmented unisons, fourths, and diminished fifths and octaves. Some inflections were also added at significant cadential moments.

At this stage the Sibelius files were converted into to MusicXML. (A separate part of the ‘Measuring Polyphony’ project will transform these files into MEI files with the MEI mensural notation schema.) We then use the Rodan Client is used to generate CSV files for each motet: Note/Rest Indexer, Offset Indexer, and Vertical Interval Indexer jobs are built into a workflow that lets us look at sonorities at different time intervals. We used two different offsets for each motet: every downbeat (that is every two or three breves) and every breve. In Rodan, a quarter note is “1”, so a breve is at offset at either 8, 12 or 18 (depending on the breve values in the transcription) and depending on the mensuration of the motet downbeats would be at any of 16, 24, 36, or 54.

We then built custom scripts to aggregate and visualize this data, stored here on GitHub.

CSV Files on GitHub:

Stored here are the CSV files generated by Rodan for each of the motets, using the workflow below (with offset modified for each breve/downbeat of a given motet).

Rodan Workflow

These CSV files are what we used with the scripts below to aggregate and visualize our research data.

Aggregating Data:

The aggregation scripts (ending in sonorities.py) allow us to count the number of different kinds of sonorities in each of our 4-voice (4vv) and 3-voice (3vv) motets. These sonorities are identified as perfect (any combination of P5, P8, P1, and supported P4), mixed (combination of perfect and imperfect), imperfect (any combination of M6, m6, M3, and m3), dissonant (including any of d5, A4, m2, M2, m7, M7, as well as unsupported P4), and rest/solo (only one voice or no voices sounding. These are based on Fuller (1986), although Fuller called our ‘mixed’ imperfect, and our imperfect ‘doubly imperfect’. We aggregated the results based on the groups mentioned above, comparing Montpellier, Fauvel/Br, and Iv+Trem to look at changes over time.

3vv_sonorities.py

Generates a table counting sonorities of each type (perfect, mixed, imperfect, dissonant, rest/single voice passages) for any number/group of motets. Works on 3-voice motets.

  1. Make sure you are using Python 3
  2. Execute from command-line interface as follows:
    • Navigate to folder with motet file(s): cd Code/Motets/Iv-Trem\ Breves
    • Enter: python3 3vv_sonorities.py [filename(s)]
  3. Can run and aggregate all files in a given folder at once with “*.csv”

4vv_sonorities.py

This script generates lists of fourteenth-century sonority types by measuring intervals against the lowest sounding note. It only works on 4-voice textures and it offers the option of aggregating results for any number of pieces at once.

This script must be executed from your command-line interface (“PowerShell” on Windows or “Terminal” on Mac). The script will ask you for some information, and then generate results within the command-line interface. CSV files are specified as arguments when the script is executed. To run this script, follow these steps:

  1. Download the script from GitHub and put it in a folder with the CSV files you wish to process... let’s say this folder is called Motets and is located on your Desktop
  2. Open your command-line interface (Powershell or Terminal) and access that same folder using the cd command, e.g., cd Desktop\Motets
  3. Now that you are “inside” the right folder, type the name of the script followed by all the files you wish to process, all separated by spaces, e.g., 4vv_sonorities.py decens_24.csv portio_36.csv (to avoid typing mistakes, you can make a list of all the CSV file names in a separate text file, and then copy and paste them into your command-line interface)
  4. Next, the script will ask you if you want to aggregate your results
    • To generate a single table of data for all pieces, enter y
    • To generate a separate table for each piece, enter n
  5. If you want to save your results, you can copy the table(s) from your command-line interface and paste them into a text file

Visualizing Data:

3vv_timelines.py and 4vv_timelines.py

These visualization scripts (ending in timelines.py) allow us to generate an image that represents a colour-coded “timeline” of the sonorities in each piece. The resulting images (PNG files) help us identify trends in both sonority and texture at the beginning, middle, end, and other important structural points in each piece.

Adesto

Like the sonorities.py scripts, the timelines.py scripts take any number of CSV files as arguments in a command line. To run one of these scripts, follow these steps:

  1. Download the script from GitHub and put it in a folder with the CSV files you wish to process... let’s say this folder is called Motets and is located on your Desktop
  2. Open your command-line interface (PowerShell or Terminal) and access that same folder using the cd command, e.g., cd Desktop\Motets
  3. Now that you are “inside” the right folder, type the name of the script followed by all the files you wish to process, all separated by spaces, e.g., 3vv_timelines.py hugo_12.csv nazarea_18.csv (to avoid typing mistakes, you can make a list of all the CSV file names in a separate text file, and then copy and paste them into your command-line interface)
  4. Image files will appear in the same folder, one for each CSV file you processed (aggregating results is not possible with the timeline scripts)

Graphs for each of the motets can be found in the Timeline Graphs folder.

Authors:
Karen Desmond (main research project)
Emily Hopkins (emilyhopkins) (3vv_sonorities.py)
Sam Howes (slhowes) (4vv_sonorities.py, 3vv_timelines.py, 4vv_timelines.py)

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%