MarkGotham / When-in-Rome

meta-corpus of and code library for the functional harmonic analysis of music
58 stars 12 forks source link

Inconsistent use of slow and fast 3/8 #35

Closed malcolmsailor closed 2 years ago

malcolmsailor commented 2 years ago

Among the analyses in 3/8, some are notated in "slow" 3/8 (3 beats to the measure), while others are notated in "fast" 3/8 (1 beat to the measure).

Slow 3/8 causes the music21 RomanText parser to raise an exception for b2 or b3, as it assumes fast 3/8 (see this issue). But in any case, a parser has no way of knowing whether slow or fast 3/8 is intended, so probably this should either be specified explicitly, or else a consistent choice made across files.

I haven't manually inspected all the files below, but I can attest that at least the following two files are inconsistent:

slow 3/8: Corpus/Quartets/Beethoven,_Ludwig_van/Op132/3/analysis.txt fast 3/8: Corpus/Quartets/Beethoven,_Ludwig_van/Op018_No4/2/analysis.txt

Files that may use slow 3/8 include (output of the command rg -l '3/8' . | rg 'analysis.txt' | xargs rg -l 'b[2-9]\s'):

./Piano_Sonatas/Beethoven,_Ludwig_van/Op026/1/analysis.txt
./Etudes_and_Preludes/Bach,_Johann_Sebastian/The_Well-Tempered_Clavier_I/03/analysis.txt
./OpenScore-LiederCorpus/Paradis,_Maria_Theresia_von/12_Lieder,_1786/05_Die_Tanne_(Sieh_Doris,_wie_vom_Mond_bestrahlt_)/analysis.txt
./OpenScore-LiederCorpus/Chaminade,_Cécile/_/Berceuse/analysis.txt
./OpenScore-LiederCorpus/Schumann,_Robert/Frauenliebe_und_Leben,_Op.42/3_Ich_kann’s_nicht_fassen/analysis.txt
./OpenScore-LiederCorpus/Reichardt,_Louise/Zwölf_Gesänge,_Op.3/04_Wachtelwacht/analysis.txt
./OpenScore-LiederCorpus/Schubert,_Franz/Op.59/3_Du_bist_die_Ruh/analysis.txt
./OpenScore-LiederCorpus/Coleridge-Taylor,_Samuel/_/Oh,_the_Summer/analysis.txt
./OpenScore-LiederCorpus/Schubert,_Franz/Winterreise,_D.911/09_Irrlicht/analysis.txt
./Quartets/Haydn,_Franz_Joseph/Op20_No1/3/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op018_No6/4/analysis.txt
./OpenScore-LiederCorpus/Schumann,_Robert/Dichterliebe,_Op.48/09_Das_ist_ein_Flöten_und_Geigen/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op132/3/analysis.txt

Files that may use fast 3/8 include (output of the command rg -l '3/8' . | rg 'analysis.txt' | xargs rg -l 'b1\.\d+\s'):

./Quartets/Haydn,_Franz_Joseph/Op20_No1/3/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op018_No4/2/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op130/4/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op132/3/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op018_No6/4/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op074/2/analysis.txt
./Quartets/Beethoven,_Ludwig_van/Op059_No1/2/analysis.txt
MarkGotham commented 2 years ago

Hi! Thanks for flagging this up. I'm happy to implement and / or accept a PR on necessary changes, though it sounds like this may need attention higher up (in music21) before any such action here. I'll reply to your issue there to that effect. Thanks again!

MarkGotham commented 2 years ago

Cancel that – no higher power needed here.

Romantext accepts slow 3/8 as a time signature string, so on this (corpus) end, it's simply a matter of specifying what's been used where. Am I right in thinking that this a safe and comprehensive solution:

I think that would reliably catch every case except for the unlikely eventuality of a slow 3/8 that never changes chord within the measure.

Are you happy to implement that? I'll gladly then check the PR.

Finally, are there any related issues? E.g. use of slow 6/8 or 9/8?

malcolmsailor commented 2 years ago

I can submit a pull request, yes.

I am not aware of related issues concerning slow 6/8 or 9/8. I only became aware of this issue because of the music 21 parser raising an exception.

jacobtylerwalls commented 2 years ago

E.g. use of slow 6/8 or 9/8?

In music21 these also default to fast, which I think is assumed in the examples from the Roman Text spec, and music21 also supports setting fast or slow to be explicit.

https://github.com/cuthbertLab/music21/blob/6255321e15473791a8f3f6e7983605aeb39af658/music21/meter/base.py#L538-L543

malcolmsailor commented 2 years ago

I just ripgrep'd the files for beats 3+ in 6/8 and beats 4+ in 9/8 and manually inspected the results. From these, it appears that there is no slow 6/8 or 9/8 in the corpus.