Humdrum lab 4
This lab introduces the digital scores of the Josquin Research Project
Contents
Download the data
First download the data by genre:
cd ~/Desktop mkdir jrp cd jrp mkdir masses (cd masses; humsplit h://jrp/Zma) mkdir motets (cd motets; humsplit h://jrp/Zmo) mkdir songs (cd songs; humsplit h://jrp/Zso)
There are three basic genres: secular songs, religious songs (motets), and music for the mass ordinary.
You can also download works by composer, such as Jean Mouton:
humsplit h://jrp/Mou
Ockeghem:
humsplit h://jrp/Ock
Josquin securely attributed works:
humsplit h://jrp/Joa
Josquin not securely attributed works:
humsplit h://jrp/Job
All of Josquin works:
humsplit h://jrp/Jos
Alternatively, the JRP database is available on github at https://github.com/josquin-research-project/jrp-scores
How much data is there?
How many files:
cd ~/Desktop/jrp ls masses motets songs | grep krn | wc -l
(Github is more recent).
How many notes:
cat */*.krn | extractx -i **kern | census -k
There are 803,046 notes
By genre:
for i in masses motets songs do echo "$i:" cat $i/*.krn | extractx -i **kern | census -k | grep "Number of notes" done
Masses | 472,034 |
Motets | 258,323 |
Songs | 72,689 |
Longest songs:
$ scordur songs/*.krn | sort -k 2 -nr | head -n 10
songs/Jos2918-Nymphes_des_bois__Requiem.krn: 1240 songs/Jos2720-La_belle_se_siet.krn: 1192 songs/Jos2713-Helas_madame.krn: 1144 songs/Jos2723-Lheure_est_venue__Circumdederunt_me.krn: 1048 songs/Jos3009-Regretz_sans_fin.krn: 1040 songs/Jos3011-Se_congie_prens.krn: 792 songs/Jos2905-Du_mien_amant.krn: 736 songs/Ort3006-La_mi_la_sol.krn: 728 songs/Ock3012-Ma_maistresse.krn: 680 songs/Jos2811-Dulces_exuviae.krn: 680
(units of quarter notes)
Shortest masses:
$ scordur masses/*.krn | sort -k 2 -nr | tail -n 10 masses/Ock1004.3a-Missa_Cuiusvis_toni-Kyrie-on_F.krn: 316 masses/Ock1004.2a-Missa_Cuiusvis_toni-Kyrie-on_E.krn: 316 masses/Ock1004.1a-Missa_Cuiusvis_toni-Kyrie-on_D.krn: 316 masses/Ock1002a-Missa_Au_travail_suis-Kyrie.krn: 304 masses/Jos0904e-Missa_Rosina-Agnus.krn: 296 masses/Rue1005f-Missa_Ave_sanctissima_Maria-Loco_Deo_Gratias.krn: 288 masses/Jos0904d-Missa_Rosina-Sanctus.krn: 276 masses/Rue1020e-Missa_Nunca_fue_pena_mayor-Agnus.krn: 264 masses/Jos1312-Crucifixus.krn: 200 masses/Ock1001a-Kyrie_Gloria_Credo_Sine_nomine-Kyrie.krn: 144
Longest Sanctus sections of masses:
$ scordur masses/*-Sanctus.krn | sort -k 2 -nr | head -n 10 masses/Ock1003d-Missa_Caput-Sanctus.krn: 2160 masses/Ock1005d-Missa_De_plus_en_plus-Sanctus.krn: 2052 masses/Agr1004d-Missa_Malheur_me_bat-Sanctus.krn: 1968 masses/Mou1020d-Missa_Da_pacem-Sanctus.krn: 1960 masses/Jos0302d-Missa_Da_pacem-Sanctus.krn: 1960 masses/Jos0902d-Missa_Mon_seul_plaisir-Sanctus.krn: 1832 masses/Rue1031d-Missa_Tous_les_regretz-Sanctus.krn: 1808 masses/Jos1102d-Missa_La_sol_fa_re_mi-Sanctus.krn: 1728 masses/Jos0901d-Missa_Malheur_me_bat-Sanctus.krn: 1728 masses/Jos0403d-Missa_Pange_lingua-Sanctus.krn: 1708
Final tone
$ finalis songs/*.krn | sortcount 58 G 36 D 27 A 13 F 10 C 7 E 1 B-
One song with a final on B-flat.
Scale degrees
The music is not in major/minor modes as modern tonal music is conceived, so there is no key designations in the files. There is a script in Humdrum Extras which will add a key designation based on the final tone of the music so that scale degree information can be extracted from the scores:
$ finalis-tonic songs/Jos2724-Madame_helas.krn | less
Calculate scale degrees patterns of length 5 in the B-flat song:
$ finalis-tonic songs/Jos2724-Madame_helas.krn | deg -at | serialize | context -n 5 | ridx -H | sortcount 6 5 4 3 2 1 4 1 7 6 5 6 4 2 3 r 2 3 4 4 3 2 1 4 3 1 7 6 7 1 3 6 5 4 3 4 3 6 5 6 5 1 3 1 7 1 7 1 3 7 6 5 6 5 3 6 2 1 7 6
Calculate scale degrees for all songs:
$ finalis-tonic songs/Jos2724-Madame_helas.krn | deg -at | serialize \ | grep -v = | context -n 5 | ridx -H | sortcount | head -n 10 6 5 4 3 2 1 4 2 3 r 2 3 4 1 7 6 5 6 4 4 3 2 1 4 3 4 3 2 1 2 3 6 5 4 3 2 3 2 1 7 6 5 3 1 7 1 7 1 3 3 4 3 2 1 3 5 6 5 4 3
Length-5 scale degree patterns in songs:
$ finalis-tonic songs/* | extractx -i **kern | deg -at | serialize -L \ | egrep -v '=|r' | context -n 5 | ridx -H | sortcount | head -n 10 427 5 4 3- 2 1 302 3- 2 1 7- 1 297 4 3- 2 1 7- 236 2 1 7- 6 5 219 2 3- 2 1 7- 219 1 2 3- 4 5 198 7- 6 5 4 5 196 1 2 3- 2 1 193 7- 1 2 3- 2 185 1 7- 6 5 4
Exercise: How do the most common scale-degree patterns compare to masses and motets?
Keyscape
The B-flat song has an interesting harmonic structure:
$ mkeyscape -ln Jos2724-Madame_helas.krn | convert - out.png; open out.png
Stronger focus on E-flat major triads in the first part, then more B-flat major chords in the second part.
You can browse keyscapes on kernscores: http://kern.humdrum.org/cgi-bin/browse?l=/jrp
(go to analysis section of individual works and then click on the entry for keyscape)
Sonority
The Humdrum Extras tool sonority can be used for basic triadic analysis of sonorities.
$ sonority Jos2724-Madame_helas.krn | ridx -H | sortcount | head -n 10 26 X 16 incmaj:0:B- 13 incmajx3:0:B- 12 incmaj:0:E- 11 maj:0:F 10 incmin:0:D 9 maj:0:B- 8 maj:0:E- 8 note::B- 7 incmin:0:G
Only roots:
sonority -ra Jos2724-Madame_helas.krn | sed 's/qual/cdata/' | pbcopy
The "roots" of the first half of the piece:
$ myank -m 1-37 Jos2724-Madame_helas.krn | sonority | ridx -H | sortcount | head -n 10 12 X 7 maj:0:E- 6 incmajx3:0:B- 6 incmin:0:D 6 incmaj:0:E- 5 note::B- 5 maj:0:F 4 incmaj:0:B- 4 incmin:0:G 4 min:0:C
The "roots" of the second half of the piece:
$ myank -m 38-$ Jos2724-Madame_helas.krn | sonority | ridx -H | sortcount | head -n 10 14 X 12 incmaj:0:B- 7 maj:0:B- 7 incmajx3:0:B- 6 maj:0:F 6 incmaj:0:E- 6 incmaj:1:E- 5 maj:1:F 4 incmin:0:D 4 note::F