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
Who are the top 10 represented composer in the data:
grep -h COM *.krn | sortcount | head -n 10 132 !!!COM: Unknown 121 !!!COM: Hungarian folk song 119 !!!COM: Traditional 91 !!!COM: Richard Rodgers 75 !!!COM: Irving Berlin 67 !!!COM: Hungarian song 65 !!!COM: Cole Porter 46 !!!COM: Harry Warren 45 !!!COM: George Gershwin 40 !!!COM: Harold Arlen
List the titles of all pieces where George Gershwin is the composer:
grep OTL $(grep -li COM.*Gershwin *.krn)
WF2103.krn:!!!OTL: I Got Rhythm
WF2178.krn:!!!OTL: Blues
WF2179.krn:!!!OTL: I loves you Porgy
WF2180.krn:!!!OTL: Summertime
WF2181.krn:!!!OTL: Summertime
WF2183.krn:!!!OTL: Somebody Loves Me
WF2184.krn:!!!OTL: I'll Build A Stairway To Paradise
WF2185.krn:!!!OTL: Do It Again!
WF2186.krn:!!!OTL: A Woman Is A Sometime Thing
WF2187.krn:!!!OTL: Summertime
WF2188.krn:!!!OTL: There's A Boat Dat's Leaving Soon For New York
WF2189.krn:!!!OTL: SUMMERTIME
WF2190.krn:!!!OTL: 'S Wonderful!
WF2191.krn:!!!OTL: A FOGGY DAY
WF2192.krn:!!!OTL: Bidin' My Time
WF2193.krn:!!!OTL: But Not For Me
WF2194.krn:!!!OTL: By Strauss
WF2195.krn:!!!OTL: Clap yo' hands
WF2196.krn:!!!OTL: Embraceable You
WF2197.krn:!!!OTL: Fascinating Rhythm
WF2198.krn:!!!OTL: How Long Has This Been Going On
WF2199.krn:!!!OTL: I Got Plenty o' Nuttin'
WF2200.krn:!!!OTL: I Got Rhythm
WF2201.krn:!!!OTL: I Was Doing All Right
WF2202.krn:!!!OTL: I Was Doing All Right
WF2203.krn:!!!OTL: I've Got A Crush On You
WF2204.krn:!!!OTL: Isn't It A Pity
WF2205.krn:!!!OTL: Let's Call the Whole Thing Off
WF2206.krn:!!!OTL: Love Walked In
WF2207.krn:!!!OTL: Nice Work If You Can Get It
WF2208.krn:!!!OTL: Oh Lady Be Good
WF2209.krn:!!!OTL: Someone To Watch Over Me
WF2210.krn:!!!OTL: Soon
WF2211.krn:!!!OTL: Strike Up The Band
WF2212.krn:!!!OTL: Summertime
WF2213.krn:!!!OTL: That Certain Feeling
WF2214.krn:!!!OTL: The Man I Love
WF2215.krn:!!!OTL: They All Laughed
WF2216.krn:!!!OTL: They Can't Take That Away From Me
WF2217.krn:!!!OTL: They Can't Take That Away From Me
WF2218.krn:!!!OTL: Who Cares
WF2219.krn:!!!OTL: Liza (All the clouds'll roll away)
WF2220.krn:!!!OTL: Liza
WF2221.krn:!!!OTL: It Ain't Necessarily So
WF2222.krn:!!!OTL: I Loves You Porgy
WF2223.krn:!!!OTL: My Man's Gone Now
WF2224.krn:!!!OTL: Swanee
WF2225.krn:!!!OTL: The Simple Life
WF2267.krn:!!!OTL: A Foggy Day
WF2268.krn:!!!OTL: For You, For Me, For Evermore
WF2269.krn:!!!OTL: Love Is Here To Stay
WF2995.krn:!!!OTL: Shoes With Wings On
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:

This one is interesting because it has invisible chords in the top staff which are realizing the harmonic chords above the staff.
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