Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot find the encoding of mixed meters #5

Open
davidrizo opened this issue Apr 4, 2020 · 8 comments
Open

Cannot find the encoding of mixed meters #5

davidrizo opened this issue Apr 4, 2020 · 8 comments

Comments

@davidrizo
Copy link
Collaborator

The section Time Signatures does not include how to encode meters such as:

image
or
image

(I don't know if it's possible, I haven't found anywhere how to do it ;)

@craigsapp
Copy link
Member

I haven't seen anyone using mixed meters in Humdrum, but I would think that they should be encoded as:

*M2+2+2/8
*M1/4+3/8
*M1+2+3/8+3/4

I did have a proposal for time signatures a while ago that no one was interested in: https://groups.google.com/d/msg/starstarhug/HtRY9oOfl7A/lIKiqiW06_IJ

This was only for resolving the metric patterns inside of 6/8 to resolve beat ambiguity (is the beat the eighth or the dotted quarter). Your first example would be:

*M6/8:4,4,4

But this system is not designed for the second or third cases, so perhaps the first encoding example is best when you want the visual groupings in the time signature, while the bottom example is better if you want to show a simple time signature, but break it into non-standard groupings (for automatic beaming or metric analysis).

I think mixed meters are possible in verovio. If you can figure out an example in MEI, I can add it to the humdrum2mei converter.

@davidrizo
Copy link
Collaborator Author

Verovio does not support yet:

Regarding the **kern encoding, I think the *M1+2+3/8+3/4 form is valid, but there must be a way to indicate whether it is mixed or alternating.
I've prepared an example of what could be generated (recall Verovio cannot deal with it yet)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="https://music-encoding.org/schema/4.0.0/mei-all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<mei xmlns="http://www.music-encoding.org/ns/mei" meiversion="4.0.0">
    <meiHead>
        <fileDesc>
            <titleStmt>
                <title>Examples of meter encodings</title>
                <respStmt>
                    <persName role="encoder">David Rizo</persName>
                </respStmt>
            </titleStmt>
            <pubStmt>
                <date>2020-04-05 17:15:00</date>
            </pubStmt>
        </fileDesc>
        <encodingDesc>
            <projectDesc>
                <p>MEI encoding example</p>
            </projectDesc>
        </encodingDesc>
    </meiHead>
    <music>
        <body>
            <mdiv>
                <score>
                    <scoreDef meter.count="4" meter.unit="4" meter.sym="common">
                        <staffGrp>
                            <staffDef lines="5" clef.shape="G" clef.line="2" n="1"/>
                        </staffGrp>
                    </scoreDef>
                    <section>
                        <measure>
                            <staff n="1">
                                <layer n="1">
                                    <note dur="1" oct="4" pname="c" />
                                </layer>
                            </staff>
                        </measure>
                        <scoreDef meter.count="2" meter.unit="2" meter.sym="cut"/>                        
                        <measure>
                            <staff n="1">
                                <layer n="1">                                    
                                    <note dur="1" oct="4" pname="d" />
                                </layer>
                            </staff>
                        </measure>
                        <scoreDef meter.count="7" meter.unit="4"/>
                        <measure>
                            <staff n="1">
                                <layer n="1">                                    
                                    <note dur="1" oct="4" pname="e"/>
                                    <note dur="2" oct="4" dots="1" pname="e"/>
                                </layer>
                            </staff>
                        </measure>                        
                        <scoreDef meter.count="3+2" meter.unit="4"/>
                        <measure>
                            <staff n="1">
                                <layer n="1">                                    
                                    <note dur="2" oct="4" dots="1" pname="f"/>
                                    <note dur="2" oct="4" pname="f"/>
                                </layer>
                            </staff>
                        </measure>
                        <scoreDef>
                            <meterSigGrp func="alternating">
                                <meterSig count="2" unit="4"/>
                                <meterSig count="6" unit="8"/>
                            </meterSigGrp>                            
                        </scoreDef>
                        <measure>
                            <staff n="1">
                                <layer n="1">
                                    <!-- apply first 2/4 -->
                                    <beam>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>                                   
                                    </beam>
                                    <beam>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>                                   
                                    </beam>
                                </layer>
                            </staff>
                        </measure>
                        <measure>
                            <staff n="1">
                                <layer n="1">
                                    <!-- alternate to 6/8 -->
                                    <beam>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>
                                    </beam>         
                                    <beam>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>
                                        <note dur="8" oct="4" pname="g"/>
                                    </beam>                                        
                                </layer>
                            </staff>
                        </measure>
                        <scoreDef>
                            <meterSigGrp func="mixed">
                                <meterSig count="2" unit="4"/>
                                <meterSig count="1" unit="8"/>
                            </meterSigGrp>                            
                        </scoreDef>
                        <measure>
                            <staff n="1">
                                <layer n="1">
                                    <note dur="2" oct="4" pname="a"/>
                                    <note dur="8" oct="4" pname="a"/>
                                </layer>
                            </staff>
                        </measure>                        
                    </section>
                </score>
            </mdiv>
        </body>
    </music>
</mei>

@craigsapp
Copy link
Member

Yes, this one is weird:

*M1+2+3/8+3/4

I was thinking about putting parentheses in for clarification, but they are not necessary provided that parsing of + has priority over / (which is opposite from standard algebraic parsing in math).

For mixed and alternating time signatures, things get more complicated. The general aesthetic of Humdrum is for analysis, and mixed/alternating time signatures are a ambiguous shorthand for showing the time signature for every bar. Therefore, there would need to be an "invisible" time signature that would apply to only the current measure (and following if not qualified), and a "printed" time signature that shows what is seen in the printed score. The invisible time signatures would probably need to be encoded by hand, at least in the general case.

A good example is the "sunken cathedral" prelude by Debussy:
https://en.wikipedia.org/wiki/La_cath%C3%A9drale_engloutie
http://conquest.imslp.info/files/imglnks/usimg/c/c0/IMSLP00509-Debussy_-_Preludes,_Book_1.pdf

Screen Shot 2020-04-05 at 09 44 08

The only way to figure out the time signatures is to listen to the composer play the music (via piano roll):
https://www.youtube.com/watch?v=levGISzDmjs

Since all alternate/mixed time signatures would automatically be visual, maybe something like this:

*M6/4|3/2

for this case. In other words, the individual time signatures would be separated by | which makes sense as the measure is either in 6/4 or 3/2 time. | would have a lower precedence than / or + I presume.

Maybe for invisible the yy marker (which can be used on notes but is not yet defined for interpretations) could be used:

*M4/4yy

This would mean that the time signature should be 4/4 if shown, but it is not to be displayed on the graphical notation. An alternate method which seems more elegant is to use a negative sign:

*M-4/4

I think I might like that one better.

@davidrizo
Copy link
Collaborator Author

Then, given the examples, the different encodings would be?

Additive meter

M(1+2+2)/4
See dance rhythm Zortziko

Mixed meter

M2/4+1/8
M2/4+(1+2+3)/8

Alternating meter

*M6/4|3/2: i.e.6/4 and 3/2 that alternate repeatedly.
See an example in the main theme of America (West Side Story), or Tchaikovsky's String Quartet No. 2 in F major

Interchanging meter

I think the "sunken cathedral" seems to be an interchanging meter.
I would encode as:
*M6/4=3/2

Invisible meter

*M-4/4

@craigsapp
Copy link
Member

What is the difference between alternating and interchanging meter? Alternating is predictable (one measure in first, then next measure in second, then next measure in first, etc.) and interchanging is not predictable as to when the switch happens?

Maybe using | for interchanging meter (but can be notated with = in the score), since that maps better to the indeterministic behavior of the meter (it could be A or B).

For the alternating meter, that is equal to (A then B), so maybe use : as a divider between the separate meters:

*M6/4:3/2

Then if there is a case where the meter alternation is not a 1:1 repetition, it could be encoded like this:

*M6/4;2:3/2;3

which would mean that this is an alternating time signature where the first two measures are in 6/4, then there are three measures in 3/2 before the cycle is repeated.

For parentheses:

M(1+2+2)/4

I would prefer not to have them:

M1+2+2/4

Since I do not want to use Antlr :-). If there is a case requiring parentheses to disambiguate, then they could be allowed.

@davidrizo
Copy link
Collaborator Author

I agree with everything ;)

@davidrizo
Copy link
Collaborator Author

Something I don't know is whether in the case of interchanging meter (e.g. *M6/4|3/2), the duration implied by both meters must be the same

@craigsapp
Copy link
Member

I think the Debussy prelude case is rare and quite ambiguous, since it is difficult to determine which time signature should be applied without listening to the piece played by someone else (such as the composer). All other cases of interchanging meter that I have seen have different durations for each meter, making it obvious which meter should be applied to the measure.

Another metric case might be hypermeter:

https://josquin.stanford.edu/cgi-bin/jrp?a=notationEditText&f=Jos2311
Screen Shot 2020-04-06 at 03 25 53

The modern time signature for the tenor part might best be expressed as:

*M2/1;3

which is a metric cycle of three measures of 2/1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants