bug-lilypond
[Top][All Lists]
Advanced

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

Re: Automatic beaming fails with tuplets


From: Urs Liska
Subject: Re: Automatic beaming fails with tuplets
Date: Sat, 11 Nov 2017 22:29:03 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0



Am 11.11.2017 um 22:11 schrieb Hans Åberg:

On 11 Nov 2017, at 21:32, Urs Liska <address@hidden> wrote:

AFAICS a tuplet suspends/shadows/interrupts the beatStructure. The regular 
processing of the measure should ignore a tuplet, and the tuplet should be 
handled separately.
Each full tuplet group behaves like a mini-measure with its own beaming 
pattern, though the general structure is the same. The beaming is then as of 
the written notes values, not the actual timing values implied.

Exactly. And that's what LilyPond currently (explicitly) does wrong.


 From the results I assume that the beaming code suffers from the same misconception as 
the code in beaming-pattern: tuplets are recalculated and processed according to their 
*absolute position* in the measure. That means that an event that happens to occur on a 
beat of the measure's beat structure is treated like an event on a beat, which is 
incorrect. Instead the tuplet should get a "virtual" beat structure.

In the example we have a 3/2 tuplet giving three crotchets over two. So any 
beaming (and subdivisions) should be based on an assumed beatStructure of three 
crotchets. That way the eight notes would automatically beamed together because 
they represent one crotchet.
Each tuplet should have its own local beatStructure. A sextuplet should have by 
default a 3 3 beatStructure, if not explicitly overridden.

With sextuplets I've come to the conclusion that it's possible to shorten the fractions - together with the tupletSpannerDuration.

\tuplet 6/4 4 is equivalent (in terms of beaming) to \tuplet 3/2 8. The same is true for \tuplet 12/8 4 => \tuplet 3/2 16, so I think it's a general rule.


Generally speaking a tuplet should be treated according to the 
visible/generic/unscaled durations of the content while the remaining parts of 
the measure simply ignore it, i.e. pick up at their usual Moment after the 
tuplet.
Indeed, the beaming is as if the tuplet group did not exist but with a local 
beatStructure, taking up the amount notation space as indicated by the tuplet 
total time.

This local beatStructure can be inferred from the tuplet definition. If the tuplet is \tuplet 3/2 4 (as in my initial example) the resulting local beatStructure is:
- baseMoment 1/4 / 2 = 1/8
- beatStructure #'(3)
A single tuplet always has such an unary beatStructure whose baseMoment is derived from the tuplet denominator and span, and whose repetition (beatStructure entry) is the tuplet numerator.

Multiple identical tuplets can either be considered as sequential elements or as a larger "local measure":

\tuplet 3/2 4 {
  c8 c c c c c
}

can also be seen as
- baseMoment 1/8
- beatStructure #'(3 3)



reply via email to

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