Humdrum Lab 1
Contents
Bach Chorales
Download
A Humdrum Edition of the Bach Chorales is available at http://kern.ccarh.org/browse?l=371chorales
The data files can be downloaded using the humcat and humsplit commands:
mkdir chorales cd chorales humcat -s h://370chorales | humsplit
This should create 370 files in the format chor001.krn, chor002.krn, chor003.krn, etc.
MIDI rendering
Convert a particular chorale into a MIDI file with this command:
hum2mid chor001.krn -o chor001.mid
The data file can also be downloaded on demand:
hum2mid h://370chorales/chor001.krn -o chor001.mid
Once the MIDI file has been created, you can open it by double-clicking in a file browser. On OS X computers, you can type:
open chor001.mid
to do the equivalent of double-clicking. You must have a MIDI player associated with the file. For newer OS X computers, you will have to download Quicktime 7 in order to play the MIDI file (recent versions of Quicktime cannot play MIDI files).
To pan the voices in the stereo field, try the --autopan option:
hum2mid --autopan chor001.krn -o chor001pan.mid
Graphical Music Notation
These examples use muse2ps to generate graphical notation. Music can also be notated with abcm2ps via the export to ABC+ notation with hum2abc, or to MuseScore and similar notation programs which import MusicXML using hum2xml.
Printing in a 4-staff format:
autostem chor001.krn | hum2muse | muse2ps | ps2pdf - - > output.pdf
Printing in a grand-staff format:
satb2gs chor001.krn | autostem | hum2muse | muse2ps | ps2pdf - - > output.pdf
Applying formatting options to the last command for prettier graphical notation:
satb2gs chor001.krn | autostem | hum2muse | muse2ps =z21jv120,120 \ | ps2pdf - - > output.pdf
which should produce the following graphical notation:
Key
Each chorale is hand-labeled with a musical key. To generate a histogram of key designations in the chorales:
extract -f 1 *.krn | grep '\*.*:' | sort | uniq -c | sort
The regular expression "\*.*:</tt"> translates into English as: "find lines which have a subset of characters starting with '*' then any number of characters (.*) and then end with ':'.
Questions:
- What is the most common key?
- What is the most common major key?
- What is the most common minor key?
- What is the least common major key (other than zero counts)?
- What is the least common minor key (other than zero counts)?
- How many chorales are labeled as being in a modal key?
Vocal Range
To count all of the notes by pitch-class for each vocal part, use the prange command. Here is a sample command which extracts the bass part data:
extract -f 1 *.krn | prange
or alternatively extracting by text pattern (Bass, Tenor, Alto, Soprano):
extractx -g Bass *.krn | prange
For the bass part, the lowest note is CC (C2) and the highest note is e (E4), with a total vocal range of 28 semitones. The average (base-12) pitch is E- (E-flat 3), which is both the mean and median.
Do a similar vocal range analysis on the other three parts.
Questions:
- Which voice has the widest range?
- What is the highest and lowest note for each vocal part.
Melodic Intervals
Tritones can be notated as augmented 4ths (such as C-F♯) or diminished fifths (such as C–G♭).
serialize *.krn | mint | ridx -H | grep A4 | wc -l serialize *.krn | mint | ridx -H | grep d5 | wc -l
Questions:
- Which of these two spellings of the tritone are more common in the chorales?
- How often do octaves (P8) occur in the chorales?
- For the diminished fifth, what is the most common direction for the melodic interval, up or down? Here are commands to answer this question:
serialize *.krn | mint | ridx -H | grep +d5 | wc -l serialize *.krn | mint | ridx -H | grep -- -d5 | wc -l
The double dash after grep in the second command indicates the end of options for grep, so that the string "-d5" is treated as the query rather than as the option -d5.
Searching
Create a search index for the chorales:
tindex *.krn > chorales.index
Search for the melodic sequence "C D E F G A B C", counting how many chorales it occurs within:
themax -p "cdefgabc" chorales.index | wc -l
To locate the pattern within the music:
themax -p "cdefgabc" chorales.index --loc | theloc
which should return the result:
chor190.krn::1 58=10B2-65=11B3 chor325.krn::1 17=5B1-24=6B4
This means that the melodic pattern "cdefgabc" occurs in two chorales (190 and 325). In both cases, the bass part (::1) has the pattern. The pattern occurs from note 58 to 65 in the bass part to chorale 190 which is from measure 10 beat 2 until measure 11 beat 3. Similarly, the pattern occurs in the bass part of chorale 325 in measure 5 to 6.
The search matches can be marked in the original data:
themax -p "cdefgabc" chorales.index --loc | theloc -m | less
Each matched note will be prefixed with an "@" sign. Search for these marks in measure 10/11 and 5/6 in the two chorales.
To pull out the measures which contain the matched notes:
themax -p "cdefgabc" chorales.index --loc | theloc -m | myank --marks
To display matches highlighted in graphical notation:
themax -p "cdefgabc" chorales.index --loc | head -n 1 | theloc -m \ | autostem | hum2muse | muse2ps | ps2pdf - - > output.pdf
Questions:
- Search for another pattern, and report your findings.
The themax command can search for other melodic features, such as interval, contour, rhythm, meter. Here are some more example applications:
Tritone
Tritones can be notated as augmented 4ths (such as C-F♯) or diminished fifths (such as C–G♭). Which of these two versions of the tritone are more common in the chorales:
themax -I "A4" chorales.index --total themax -I "d5" chorales.index --total