lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Terminology of baseMoment, beats, groups


From: Carl Sorensen
Subject: Re: Terminology of baseMoment, beats, groups
Date: Sat, 11 Nov 2017 14:30:26 +0000
User-agent: Microsoft-MacOutlook/14.7.7.170905

On 11/11/17 4:00 AM, "lilypond-devel on behalf of Urs Liska"
<address@hidden on behalf of
address@hidden> wrote:

>
>a) from the NR section linked
>"beatStructure is a scheme list that defines the length of each beat in
>the measure in units of baseMoment. "
>
>I read this as: In the given example beatStructure is a list that
>defines the measure to consist of three beats. Beat one and two have the
>length of three baseMoments of 1/8, beat three is two baseMoments of 1/8
>long.
>
>Actually this is consistent with how I would describe that measure in
>prose: we have an 8/8 measure with three beats, with lengths 3, 3, and 2
>quavers.
>
>
>b) from beaming-pattern.cc
>
>1) line 206ff., comment to find_location()
>/*
>    Get the group start position, the next group starting position, and
>the
>    next beat starting position, given start_moment, base_moment,
>    grouping, and factor
>*/
>
>2) line 265, comment right after find_location has been called:
>// Mark the importance of stems that start at a beat or a beat group.
>
> From the actual behaviour of the code (and other comments throughout
>the code) it is clear that "beat" refers to a baseMoment unit and
>"group" refers to the entity the NR calls "beat".
>The context property "beatStructure" obviously corresponds to the C++
>variable "grouping".

Urs, you are absolutely correct about this.  As far as I know, I was the
last person to make major revisions to the beaming code (of course,
David's work to allow a music expression to enter beat structures came
after my work).

In the code that I started working on, there were beats and beat
groupings.  The beat corresponds to what is now called a baseMoment, and
the beat grouping corresponds to the musical beat.

When I was working on this, I had a very poor musical understanding of
rhythm; it was more of an engineer's understanding of rhythm.  Glue some
baseMoments together to get a beat group.  In my defense, that's what was
already in the code, so I was just building on it.

I think it would be great to move toward something that makes more sense
musically.  We ought to be able to capture the idea of simple duple,
simple triple, simple quadruple, compound duple, compound triple, compound
quadruple. Of course, to handle modern music, we also need to handle other
kinds of rhythms and beats.

The code has no inherent understanding of compound meters and how one
would treat them different from simple meters.  So we tried to fix this
with the beatStructure property.  But maybe that's not the best thing
musically.

When I look at http://openmusictheory.com/meter.html , the thing that we
call a beat in the c++ code is what openmusictheory calls a pulse.  And
what we call a beat group is what they call a beat.  In this context,
baseMoment is the length of a pulse.  And beatStructure defines the
lengths of each beat in the measure in pulses.  It would be a
straightforward first step to replace "beat" with "pulse", and "beat
group" with "beat" in both the c++ and scm code.

As far as I'm concerned, a complete refactoring of the LilyPond beaming
code and concepts is perfectly acceptable.  It's always good to get things
right, rather than to just hack them.

I'm happy to serve as a team member working with you on this, but I can
probably only spend a few hours per week.  But I think we could probably
get this to work right, which would enable us to do proper subdivision.

Thanks,

Carl




reply via email to

[Prev in Thread] Current Thread [Next in Thread]