LATEST NEWS from my Prolatio and music21 blogs:
[September 18, 2014 00:32 am] « » [prolatio]
A few recent articles and software of interest and some older articles that might have been missed:

[July 23, 2014 21:39 pm] « » [music21]
[This is a guest post by Derek Klinge who uses music21 in his research on music and disability. I thank him for his contribution. - MSC]

I am a researcher within the Performing Arts Medicine Association. I was interested in looking at Beethoven's use of range over time in his piano sonatas. Although several previous studies have looked at the question of how Beethoven's compositions were affected by his hearing loss, the results were far less than conclusive. A study in the British Medical Journal counted the notes in the first movements of the first violin parts of Beethoven's string quartet's by hand. For a number of reasons, I thought it might be better to look at the piano sonatas, including that Beethoven wrote more piano sonatas than he did string quartets and symphonies, so the statistical power would be greater. Counting all of the notes in Beethoven's piano sonatas by hand would be a Herculean task for sure, but fortunately with scores available from the Center for Computer Assisted Humanities and music21 sufficient coding skills would do the job.

Why music21?

In addition to the number of high notes, I was also interested in Beethoven's overall use of range, the average note, average frequency, number of measures with high notes, and in calculating values based on the number of notes, as well as weighting those measures by the duration of notes. The methods available in music21 allow the collection of this data very quickly. To collect the majority of the data I needed from all 103 movements of Beethoven's piano sonatas, count over a quarter million individual notes, and organize the data into sonatas, and separating the data by movement number, takes about 11 minutes.

Some Interesting Findings

Beethoven's use of high notes was lowest around 1800 (for all the graphs below, the colors within the dots represent the Sonata Numbers, going from red to purple from 1-32):

The average frequency of each sonata follows a similar trend:

In general, as there are more notes per measure, there are more high notes per measure. This trend does not hold many of the sonatas written before 1802.

Also, the relationship between the use of high notes, and the average frequency was different between the earlier and later sonatas:


Technology like music21 is an invaluable tool for the empirical study of musicology. Relatively quickly, data gathered can be used to analyze the possible relationships between Beethoven's use of high notes and his overall range, and compare that with what we understand about his hearing loss. These data suggest that Beethoven was significantly affected by his hearing loss, though it seems that sometime around 1802 he developed strategies to cope with his progressing disability.
[June 25, 2014 20:09 pm] « » [music21]
We are proud to release music21 v1.9.3, the latest and last release in the 1.x series.
There have been 147 commits in the two months since v1.8; here are some of the highlights:
  • MUCH faster .getContextByClass (KUDOS to Josiah Oberholtzer for this). Even if you don't use .getContextByClass in your own code, you're definitely calling something that calls it. This method figures out where the most recent key signature, time signature, clef, etc. is for any given object, finds relationships between notes in different voices, etc. For analysis of medium-sized scores (say, 3 voices, 100 measures) expect a 10-fold speedup. For larger pieces, the speedup can be over 100-fold.
  • A new stream/timespans module that makes the previous speedup possible by representing m21 Streams as AVL trees -- it's used in a few places (needs more docs), forthcoming releases will use it in a lot more places
  • Python3 support (3.3 and later). The entire test/ suite passes on Python 3. N.B. to contributors -- from now on all contributions need to pass tests on both Python 2.7 and 3.3 and later. Negative -- in the past you could have made music21 run on unsupported older systems (2.6 and sometimes 2.5); now from music21 import * will fail on pre-2.7. 2.7 has been a requirement since Music21 1.7. Fewer than 30% of Macs still in use are running Lion or earlier and thus will need to update to 2.7. This version of music21 runs about 25% faster on Python 3 than Python 2, but otherwise no new features of Python3 are used. Python 2.7 will be supported throughout the Music21 2.x cycle so no panicking -- it'll be years (if ever) before Python 3.3+ is a requirement.
  • Improvements to reductions of scores. And to analyzing voiceleading motion (some of this is backwards incompatible)
  • Better, faster, and more consistent sorting of elements in a Stream
  • Changes to the derivations module that I doubt anyone else was using anyhow...
  • Removed obsolete files.
  • Stafflines import and export from musicxml (thanks Metalmike!)
  • Complete refactoring of to make it easier for users to write their own Subconverter formats (that can eventually be put into the system)
  • Complete serialization of Streams via a new version of jsonpickle. This has big implications down the line; for now it affects...
  • Vexflow output is much improved (unless you were counting on Voices; in which case do not upgrade) using the alpha version of music21j -- Javascript reimplementation of music21's core features.
  • IPython improvements, allowing for robust and persistent communication between Javascript and Python. This will eventually (once I document it...) let you use the web browser as a UI for music21 python apps including live updating of music notation. It's too complex for most users right now, but I can attest that this will be one of the biggest perks of the 2.x development.
The usual bug fixes, documentation improvements and fixes, etc. are implemented. Thanks to MIT, the NEH, and the Seaver Institute for funding the project. (and to MIT for tenuring me in part on the basis of music21). This is the last release that Josiah Oberholtzer was lead programmer for; his considerable talents will still be on display in Abjad and many other projects he works on, and the implications of the new storage system he has developed will continue to pay off for years.

What's next?

Starting work on music21 2.0 today. That release will have some backwards incompatible changes that developers will need to deal with -- just as the path to 1.0 meant that some things that were originally thought of as good ideas were thrown out, the path to 2.0 will rely on 8 years of using music21 to fix some things that really should've been done differently from the beginning. Having just spent 2 weeks making m21 compatible with Python 3, I will give my assurance that as few incompatibilities as possible will be introduced. Most of the major changes will be on the core -- so if you've never messed with Sites, SpannerStorage, etc., you'll be fine.
  • Problems with 5 quintuplets = .99999999 of a beat will disappear. Music21 2.X will store offsets and quarterLengths internally as rational numbers (actually a custom MixedNumeral class, so that the __repr__ is nicer...). All music21 objects will gain four properties: ".offsetRational, .duration.quarterLengthRational, .offsetFloat, and .duration.quarterLengthFloat" -- in music21 2.0, .offset and .duration.quarterLength will be aliases for offsetFloat and .duration.quarterLengthFloat -- so no changes will be needed to existing code. This will give a period of time (6 months?) to switch .offset either to .offsetFloat or .offsetRational. We'll have a tool to make the switch automatically. Then at a certain point, .offset will become an alias for .offsetRational. By music21 3.0 .offset will only support Rational numbers.
  • Streams will store the position of notes, etc. in them. Right now this is all stored in the Note object itself. There are some great reasons for doing it that way, but significant speedups will take place by shifting this.
  • inPlace will be False by default for all operations on Notes, Streams, etc. -- you can plan for the migration by explicitly setting inPlace for every call now.
  • Some changes to boundary cases in .getElementsByOffset will take place -- it will not change much, but for a few users this will be crucial.
  • NamedTuples and OrderedDicts will appear in a lot of places
that's all for now, but more examples to come soon. - Myke
[June 11, 2014 18:29 pm] « » [prolatio]
[This is a draft “Working Paper” of research in progress; comments are welcome, but it should not be considered published work and may be removed before this is submitted for publication and replaced with a link to the published version.] 

The Tournai Mass is one of the oldest, if not the oldest, complete polyphonic Masses. It has been dated to around 1330 (though I'm inclined to find it a bit younger, perhaps 1350? but just on a hunch). It is contained in a magnificently interesting manuscript of chant from the fourteenth century now in the Belgium city of Tournai (Bibliothèque capitulaire, MS 476).

Like some other early Masses, such as the Machaut Mass, this is a six-section Mass with a concluding Ite Missa Est set as a motet.  There are two other polyphonic works in the manuscript, placed within the Mass, a largely monophonic Sanctus with three-part "In excelsis" settings (PMFC 23, no. 72), directly after the first Sanctus, and a second Kyrie, placed after the Agnus Dei. The image from the bottom of folio 33r is below: 

(image reproduced under the assumption of limited copyright of works over 100 years old and under the Fair Use principle of a small excerpt. I will happily remove this and the following excerpt under a request from the Tournai BC)

In Reaney's notes for RISM B/IV-2, he states that this work (#7) is, like the Sanctus (#5), an independent, polyphonic Mass section and transcribes the incipit as such:

Cattin and Facchin in their monumental edition of French (& Spanish, Polish, Dutch, ... everything but Italian and English) Mass movements transcribed it as monophonic and noted that:
The well known melody...occurs in the T[enor] range in the Tournai MS; the question therefore remains whether one or more voices would have accompanied it. For this reason we decided to include this purely monodic piece in the present edition.
The opening of their transcription is shown below:

There are a few errors in this section of the transcription: the second Kyrie has three missing notes, and an incorrectly transcribed C instead of D. Together these errors account for the different lengths and incompatible harmony of the first Kyrie if the work were to be transcribed polyphonically, as I will propose below.  There are a few length errors in the third Kyrie which also could have made a polyphonic transcription difficult. However it is the Christe section that I am sure made great editors who had 130+ mass movements give up on making a polyphonic 3-fold Kyrie and instead make a monophonic 9-fold Kyrie.  The three Christe sections seem to begin on the notes A, G, and A and end on A, E, B; even if the first part is started after a breve rest (which may be interpreted as a sectional divider instead), the lengths and sonorities of this section just do not add up.

The solution comes from believing that the scribe himself did not realize where the different voices began and chose to ligate the final note of the first voice with the first note of the second voice. 

Beginning the second part on the second note of the ligature and ending the first voice on the first part gives a fully satisfying polyphonic version of the whole Kyrie:

A mediocre, generated .mp3 giving some sense of the piece is given below.

With these adjustments, the piece is almost entirely consonant, with the following breakdown of sonorities (discounting triplets in the middle of a semibreve):

36%  Perfect fifth
18   Major triad
12   Major third
12   Minor triad
 9   Minor third
 8   Minor triad as 6-3
 3   Major sixth
 2   Minor sixth
 0.5 Perfect fourth

(Numbers do not add up to 100% because of rounding)

Cattin and Facchin note that piece seems to be on the chant cantus firmus of no. 58 of Margaretha Landwehr-Melnicki's catalogue. The first Kyrie is indeed similar to this chant, but as a look at Paris, BNF lat. 14819, f. 34v. or Paris, BNF lat. 17309, f. 27v will show, the rest of the work is unrelated to this chant.

Otherwise the style of the work is similar to many French works from around 1350 (and also Spanish and Italian works from this time or slightly later). Facchin's description of these pieces, largely homophonic but with decorations, as part of a Wandering Style, or Stile Vaganti! seems quite appropriate for this work that wandered around the foot of a more famous Mass, waiting to be rediscovered.

More about the Sanctus and a fuller realization of it to come soon, thanks to an idea from Jan Janovčik. Here's a preview of his great recording with his Cantores Sancti Gregorii

Thanks to Jan Janovčik, Rob C. Wegman, and Dominique Gatté for aid and suggesting the Tournai manuscript as a source worth returning to. And to Anna Grau and Jeremy Jennings for their work on the EMMSAP project that made this work quickly possible.

For older stories visit the Prolatio (general items) or music21 (computational musicology) blogs.

Michael Scott Cuthbert (cuthbert [at] is Associate Professor of Music and Homer A. Burnell Career Development Professor at M.I.T.

Cuthbert received his A.B. summa cum laude, A.M. and Ph.D. degrees from Harvard University. He spent 2004-05 at the American Academy as a Rome Prize winner in Medieval Studies, 2009-10 as Fellow at Harvard's Villa I Tatti Center for Italian Renaissance Studies in Florence, and in 2012–13 was a Fellow at the Radcliffe Institute in 2012-13. Prior to coming to MIT, Cuthbert was Visiting Assistant Professor on the faculties of Smith and Mount Holyoke Colleges. His teaching includes early music, music since 1900, computational musicology, and music theory.

Cuthbert has worked extensively on computer-aided musical analysis, fourteenth-century music, and the music of the past forty years. He is creator and principal investigator of the music21 project. He has lectured and published on fragments and palimpsests of the late Middle Ages, set analysis of Sub-Saharan African Rhythm, Minimalism, and the music of John Zorn.

Cuthbert is writing a book on Italian sacred music from the arrival of the Black Death to the end of the Great Schism.

Download what is almost certainly an out-of-date C.V. here (last modified June 2012)

Changing Musical Time in the Renaissance (and Today), for Festschrift Joseph Connors (forthcoming)

Bologna Q15: the making and remaking of a musical manuscript, review for Notes 66.3 (March), pp. 656-60.

Ars Nova: French and Italian Music in the Fourteenth Century, edited volume with John L. Nádas (Music in the Medieval World Reference Series vol. 6). London: Ashgate. Reviewed by Gary Towne, The Medieval Review, February 2010.

"Palimpsests, Sketches, and Extracts: The Organization and Compositions of Seville 5-2-25," L’Ars Nova Italiana del Trecento 7, pp. 57–78.

Der Mensural Codex St. Emmeram: Faksimile der Handschift Clm 14274 der Bayerischen Staatsbibliothek München, review for Notes 65.4 (June), pp. 252–4.

"A New Trecento Source of a French Ballade (Je voy mon cuer)," in Golden Muse: The Loeb Music Library at 50. Harvard Library Bulletin, new series 18, pp. 77–81.

"Esperance and the French Song in Foreign Sources," Studi Musicali 36.1, pp. 1–19.

"Trecento Fragments and Polyphony Beyond the Codex", Ph.D. Dissertation, Harvard University (unpublished).

"Generalized Set Analysis and Sub-Saharan African Rhythm? Evaluating and Expanding the Theories of Willie Anku," Journal of New Music Research (formerly Interface) 35.3, pp. 211–19. [.pdf]

"Zacara’s D’amor Languire and Strategies for Borrowing in the Early Fifteenth-Century Italian Mass," in Antonio Zacara da Teramo e il suo tempo, edited by Francesco Zimei. Lucca: LIM, pp. 337–57 and plates 10–13.

"Free Improvisation: John Zorn and the Construction of Jewish Identity through Music," in Studies in Jewish Musical Traditions, edited by Kay Kaufman Shelemay (Cambridge, Mass.: Harvard College Library). pp. 1-31. [.pdf]

Creative Commons License Unless otherwise mentioned, the writings, compositions and recordings on this site are licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License.

Copyright 2010-14, Michael Scott Cuthbert. Web design by M.S.C.