Humdrum lab 5
This lab is about the wikifonia data.
Basic information
How many files
ls *.krn | wc -l 6710
How many have lyrics:
grep -l "\*\*text" *.krn | wc -l
5460
How many have chords:
grep -l "\*\*text" *.krn | wc -l
6282
How many have two or more verses:
grep -l "\*\*text.*\*\*text" *.krn | wc -l
2006
Polyphonic versus monophonic
How many contain more than one **kern spine (i.e., are polyphonic, probably piano):
grep -l "\*\*kern.*\*\*kern" *.krn | wc -l 58
WF5118.krn is an example:

Duration
What is the duration of all songs if played back-to-back and at the specified tempo without repeats?
gettime -T *.krn | tail -n 1 286:50:23.1354 hours
What are the longest songs:
gettime --simple -T *.krn | sort -k2 -nr | head -n 10
WF6618.krn: 3120
WF0181.krn: 3120
WF0182.krn: 1864
WF3616.krn: 1420
WF6336.krn: 1134
WF5131.krn: 909
WF6068.krn: 785
WF5004.krn: 696
WF3226.krn: 671
WF1249.krn: 664
The -k2 option means to sort by the second column of data. -n means to sort numerically rather than alphabetically, and -r means to sort by highest first.
What are the shortest songs:
gettime --simple -T *.krn | sort -k2 -nr | tail -n 10
WF2814.krn: 16
WF2806.krn: 16
WF2795.krn: 16
WF2785.krn: 16
WF2856.krn: 14
WF2852.krn: 12
WF2799.krn: 12
WF6338.krn: 8
WF5609.krn: 8
The shortest song in VHV:
cat WF5609.krn | pbcopy

Meter
What sort of meters are in the database and how much of each type?
beat -Ca *.krn | beat -Ua | extractx -s '$1-$' | ridx -H | sortcount -p
65.89 4 4
15.44 3 4
11.67 2 2
3.24 2 4
2.78 6 8
0.52 12 8
0.16 5 4
0.14 9 8
0.09 6 4
0.06 3 8
0.01 3 2
0.01 7 4
0 2 8
0 7 8
0 9 4
0 10 8
0 17 16
0 1 2
0 5 8
0 1 4
0 4 8
The most common meter is 4/4, where 65% of the music is in that meter.
-C means extract the count of the meter (the top number).
-U means extract the duration unit from the meter (the bottom number).
-C and -U are output once for each measure, so using these are a simple way of counting the number of measures in the scores. If you add -F option with these two options, every data line will display the metrical information.
-a means to append the analysis to the end of the lines (keeping the original input score).
The extract option:
-s '$1-$'
means to extract from one before the last spine to the last spine. $1 is one before the last spine, $2 is two before the last spine, and so on.
Chord labels
How many unique chord labels are there?
extractx -i mxhm * | ridx -H | sortcount | wc -l 1399
What are the most common ones:
extractx -i mxhm * | ridx -H | sortcount -p | head -n 10 7.21 C major 6.14 F major 4.94 G major 4.83 G dominant 4.07 C dominant 3.55 D dominant 3.28 B- major 2.81 E- major 2.3 D major 2.25 F dominant