Humdrum lab 5
This lab is about the wikifonia data.
Contents
Update Humdrum tools
The beat command has some new options (-C and -U), so you will need to update humdrum extras:
cd $(which beat | sed 's/humdrum-tools.*/humdrum-tools/') make update make
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
Bibliographic information
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) | sort -k2 WF2190.krn:!!!OTL: 'S Wonderful! WF2191.krn:!!!OTL: A FOGGY DAY WF2267.krn:!!!OTL: A Foggy Day WF2186.krn:!!!OTL: A Woman Is A Sometime Thing WF2192.krn:!!!OTL: Bidin' My Time WF2178.krn:!!!OTL: Blues WF2193.krn:!!!OTL: But Not For Me WF2194.krn:!!!OTL: By Strauss WF2195.krn:!!!OTL: Clap yo' hands WF2185.krn:!!!OTL: Do It Again! WF2196.krn:!!!OTL: Embraceable You WF2197.krn:!!!OTL: Fascinating Rhythm WF2268.krn:!!!OTL: For You, For Me, For Evermore WF2198.krn:!!!OTL: How Long Has This Been Going On WF2199.krn:!!!OTL: I Got Plenty o' Nuttin' WF2103.krn:!!!OTL: I Got Rhythm WF2200.krn:!!!OTL: I Got Rhythm WF2222.krn:!!!OTL: I Loves You Porgy WF2201.krn:!!!OTL: I Was Doing All Right WF2202.krn:!!!OTL: I Was Doing All Right WF2179.krn:!!!OTL: I loves you Porgy WF2184.krn:!!!OTL: I'll Build A Stairway To Paradise WF2203.krn:!!!OTL: I've Got A Crush On You WF2204.krn:!!!OTL: Isn't It A Pity WF2221.krn:!!!OTL: It Ain't Necessarily So WF2205.krn:!!!OTL: Let's Call the Whole Thing Off WF2220.krn:!!!OTL: Liza WF2219.krn:!!!OTL: Liza (All the clouds'll roll away) WF2269.krn:!!!OTL: Love Is Here To Stay WF2206.krn:!!!OTL: Love Walked In WF2223.krn:!!!OTL: My Man's Gone Now WF2207.krn:!!!OTL: Nice Work If You Can Get It WF2208.krn:!!!OTL: Oh Lady Be Good WF2189.krn:!!!OTL: SUMMERTIME WF2995.krn:!!!OTL: Shoes With Wings On WF2183.krn:!!!OTL: Somebody Loves Me WF2209.krn:!!!OTL: Someone To Watch Over Me WF2210.krn:!!!OTL: Soon WF2211.krn:!!!OTL: Strike Up The Band WF2180.krn:!!!OTL: Summertime WF2181.krn:!!!OTL: Summertime WF2187.krn:!!!OTL: Summertime WF2212.krn:!!!OTL: Summertime WF2224.krn:!!!OTL: Swanee WF2213.krn:!!!OTL: That Certain Feeling WF2214.krn:!!!OTL: The Man I Love WF2225.krn:!!!OTL: The Simple Life WF2188.krn:!!!OTL: There's A Boat Dat's Leaving Soon For New York 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
Texture
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.
How many songs have chords (this takes a long time to calculate -- 70 songs per second = 95 seconds):
for i in *.krn do extractx -i kern $i | serialize | ridx -H | grep " " | wc -l done | grep -v " ^0$" | wc -l 365
How many songs do not have chords:
for i in *.krn do extractx -i kern $i | serialize | ridx -H | grep " " | wc -l done | grep " ^0$" | wc -l 6345
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
How many chord qualities:
extractx -i mxhm * | ridx -H | sed 's/[^ ]* //; s/\/.*//' | sortcount | wc -l 80
Here are the 80 qualities:
93061 major 64155 dominant 31402 minor 27490 minor-seventh 8594 major-seventh 5861 dominant-ninth 5733 major-sixth 4138 diminished 2943 min 2912 7 2816 minor-sixth 2159 half-diminished 2154 suspended-fourth 1884 diminished-seventh 1738 augmented-seventh 1408 augmented 1208 C 1102 dominant-13th 1082 min7 1008 F 1008 maj7 967 dominant-seventh 892 G 878 minor-ninth 705 D 650 B- 592 major-ninth 355 E- 352 A 280 E 249 power 237 dominant-11th 222 suspended-second 202 minor-11th 165 minor-major 157 dim 129 maj 128 A- 96 augmented-ninth 84 9 71 other 66 B 62 6 62 major-minor 58 sus47 46 aug 46 D- 46 min9 36 G- 29 m7b5 23 major-13th 21 maj9 19 min6 19 none 17 pedal 16 dim7 16 maj69 15 F# 12 major B- major 8 major F major 7 C# 6 major . 5 minor D minor D minor 4 minor-13th 3 minor G minor 3 C- 3 minMaj7 3 D# 2 minor . 2 major F major F major 2 dominant C dominant 2 5b 2 major C major C major 1 major E- major 1 ma 1 major . . 1 major G major G major 1 minor . . 1 7sus 1
extractx -i mxhm * | ridx -H | sed 's/ .*//' | sortcount 48078 C 45001 G 38459 F 33577 D 24361 A 23237 B- 16334 E- 15587 E 8279 A- 7869 B 3487 D- 3365 F# 1701 C# 1316 G- 824 G# 187 D# 168 C- 52 A# 28 F- 6 B-- 4 B# 4 . F 3 B/D# 3 E# 3 C/G 1 . B- 1 A--