In music21 you can easily plot the position of notes as a piano roll:
which preserves pitch names, measure numbers, etc. But the case we're asking for requires a plot more like this:
The numbers at the left are midi numbers while the bottom is number of quarter notes from the beginning. Here's some code to help you achieve this:
With this sort of graph it's easy to isolate each voice (not much overlap of voices in this chorale) and to see the preponderance of similar motion among the Soprano, Alto, and Tenor, but lack of coordination with the Bass (which would create forbidden parallels if it coordinated). More sophisticated examples with better labels are easily created by those with knowledge of matplotlib, but this simple demonstration will suffice to get things started.
In the three months since v. 1.6 some good changes and improvements have been introduced. We focused primarily on stabilizing features that were already in music21 in some form but were too experimental to advertise widely.
A noCorpus version of music21 has also been released, the first since v.1.0. This version can be used in pure Free/Libre projects since files that were licensed for music21 only or non-commercial use have been removed. If you are not sure which version to download, definitely get the full version. But maintainers of Debian Linux and others can update to 1.7 noCorpus.
Music21 v 1.7 (actually 1.7.1) will be the last version to support Python 2.6. Python 2.7 is over three years old and is supported by other flavors of Python including Jython (which skipped 2.6), PyPy, IronPython and is an easy upgrade for Python on Windows. Mac users have had 2.7 since Mountain Lion and we're happy to report that with Mavericks being free and supporting systems that can run Snow Leopard, we're happy to be able to use this opportunity to take advantage of the latest features and start a roadmap to supporting Python 3.3 as well. This is also the last release to use SVN. We are moving to GitHub. Updates soon.
The most important improvement for users is a much improved system of metadata searching (thanks to Josiah Oberholtzer). See:
for more details. LocalCorpus objects are elevated to equal status as the Core corpus so you can now build searchable indexes on any data you have and find the file you want much faster. Try corpus.search('haydn') and read the docs above to see what's possible.
Among the other 150+ changes since 1.6 include:
- Chord.inversion(2) will take a root position chord and put it in second inversion. (this is a change of behavior from before, where .inversion(2) would specify that the chord was in second inversion and override default inversion reporting (for things like Jazz 6 chords). To get the old behavior, use .inversion(2, transposeOnSet=False)
- Fixes for abc parsing (N.B. the next version will rename the "abc" module to "abcNotation" to avoid the occasional name clash with the python AbstractBaseClass (abc) module).
- Stream.getElementsByOffset(4.0) can now find a zero-length object at 4.0 -- bug fix.
- Many modules are now packages (Stream, for instance). This should not affect your code. Existing packages with X/base.py can now find their files in X/__init__.py. Again, this should not affect your code.
- Page break support in Lilypond.
- MIDI translate works better with instruments (thanks to Christopher Antilla)
- Improvements to Braille Music Code output (thanks to Mario Lang; more to come)
- Bug fixes in measure copying involving pivot chords and secondary dominants in RomanText
- Roman numerals for VII, VI, viio/vii, vi/vio in minor are made more robust. It6, Ger65, Fr43, are now supported.
- Many many many bug fixes. Thanks to community help!
OCW has recently written a wonderful article about me and why I believe OCW is doing a great thing for the world. Please take some time to read it if you'd like.
We also talked in the seminar earlier in the semester about medieval "dot groups." These are not symbols found in actual medieval music, but things that are really useful for transcribing medieval music, where 9/8, 9/16, 9/4, 9/2, etc. are commonly implied meters. There is no single note that can fill up a measure of 9/X where X is a power of two. So we tend to use things such as a dotted quarter note tied to a dotted eighth note ( ♩. ⁀♪. ) for 9/16, and so on. But consider that that figure comprises two notes, the second of which is half the length of the first, and they are tied together. That is the basic definition of a dotted note: a dotted half note is a half note tied to the note half the length of a half note, or a quarter. So what ♩. ⁀♪. needs is a way of "dotting" a dotted quarter note, or ( ♩. ) . ––note that this note has a different length than a double-dotted quarter note (which is worth 7/16, not 9/16) and this "dotted-dotted-quarter note" is worth more than a half note. When it is used, it is usually written with two dots vertically aligned: ♩:
Formulas and Extensions to negative numbersWorking out the length of notes with multiple dots can be hard work. In this screen capture from the "Reimagined" Battlestar Galactica, Kara "Starbuck" Thrace doesn't get it right even though the fate of humanity rests on her deciphering the secrets of a mysterious melody:
♩ = 1 beat
♩. = 1.5 beats
♩.. = 1.75 beats
♩... = 1.875 beats
and so on to
lim (d ⃗ ∞ ) = 2
So, what's the pattern?
1 + 1/2
1 + 3/4
1 + 7/8
1 + (n – 1)/n
Where n = 2d
Given that, we can work out that –1 dots is: 1 + (2–1– 1) / 2–1 or 1 + (–½) / ½ or 1 – 1 or 0. So a note with negative 1 dots has no length.
For d = –2 we get –2 beats. I don't know what that would mean. I suppose play the note backwards beginning two beats before it should start? (David Lewin has written about the uselessness of negative note lengths).
Just to round it all out:
d = –3, implies duration –6 beats.
d = –4, implies duration –14 beats.
But before trying to figure those out (an exercise for the reader...), there are still lots of rational number lengths that cannot be notated with fractional (i.e. rational number) dots. Is there a way to get any other rational length instead of just the ones based on powers of 2 that are standard? Can we, for instance, notate a triplet only with partial or negative or partial negative dots? Yes, we can, by making the number of dots a logarithm! For instance, to get a note that is 5/3 the basic length, we set the number of dots to log2(3). That's a triplet half note. To get a triplet quarter, we subtract two dots from that, or (log2(3) – 2) dots. Or for a quintuplet, use (log2(5) – log2(3) – 1) dots.
Trying to come up with a way of notating this makes me understand why someone decided that a triplet mark was simpler. But since it is not too hard to prove that any nested tuplet can be written as a single tuplet, we find that any rational duration can be notated as a single note with different numbers of, possibly irrational, dots. Something for the new complexity school to pursue next. Or hopefully not.
[*] an earlier version of this post referred to "Colon Nancarrow" who is neither a piece of punctuation nor a part of the digestive tract. He is also not the same as Loren Nancarrow, a really great weatherman in San Diego, that I've always wanted an excuse to make a shoutout to in a Conlon Nancarrow post.
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)
Bologna Q15: the making and remaking of a musical manuscript, review for Notes 66.3 (March), pp. 656-60.
"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.
"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]
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-11, Michael Scott Cuthbert. Web design by M.S.C.
Fonts for musicology: Ciconia (14th/15th c.) and ClarFinger (clarinet music).
In my copious spare time as a junior faculty member on tenure track, I do web design and programming consulting for the National Bureau of Economic Research.
Lectures on the web
enChanting: Musical Artifacts in Unlikely Places, lecture March 3, 2009
Ambiguity, Process, and Information Content in Minimal Music, podcast of a lecture to Comparative Media Studies at M.I.T.
Just for fun...
Mondrian meets Finding Aids in a map of books in my former apartment.
Numeric Deathmatch, a game I coded that was taught to me by Jon Wild. More fun in person, but the web interface encourages trashtalking.
Musicology Buzzword Bingo, useful for AMS meetings (requires Bach and Futura fonts)
Automatic New Musicology Paper Generator based on the Dada engine