lilypond-user
[Top][All Lists]
Advanced

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

Re: Misleading autobeaming in 3/4


From: Urs Liska
Subject: Re: Misleading autobeaming in 3/4
Date: Wed, 17 Aug 2011 12:10:41 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Lightning/1.0b2 Thunderbird/3.1.11

Am 17.08.2011 07:15, schrieb Vaughan McAlley:
Bertrand Bordage wrote:
Ok, I'll keep LilyPond's default beaming since it's the usual notation.
Thanks!
Bertrand
No! Beam it how _you_ like. Otherwise it’s like using Times font just
because it’s the Microsoft Word default :-) Just say you’re following
Debussy...

I ran into a similar problem recently with my first real-world use of
Lilypond. The music is from Mozart’s La Clemenza di Tito, and I needed
to follow Mozart’s beaming:

\relative c' {
     \key f \major
     \time 3/8
     \clef "bass"
     c8^"Default beaming (correct)" (e16 c g e) | c'8 [(\grace { d16[
c16 b c]} e16 c g e )] |
     d'8\staccato c\staccato b\staccato c r r |

     \autoBeamOff
     \times 2/3  { d,16^"Manual beaming" [f a] }
     \repeat unfold 2 { \times 2/3  { d,16 [f a] } }
     \scaleDurations #'(2 . 3) {
         g [ bes c] g [ bes c ] f, [ a c ] |
         e, [ g c ] f, [ a c ] bes, [ d g ] |
         c, [ e g ] c [ g e ] c [ bes g ] |
         f [ a c ] f, [ a c ] f, [ a c ] |
         f, [ bes d ] f [ d bes ] a [ c f ] |
         c [ f a ] c, [ f a ] c, [ e g ] |
     }
     r32 f, [ a c ] f [ a c a ] f [ c a f ] |
     r c [ e g ] c [ e g bes ] g [ e c bes ] |
     r f [ a c ] f [ a c a ] f [ c a f ] |
     r g [ b d ] g [ b d b ] g [ f d b ] |
     r c, [ e g ] c [ e g e ] c [ g e c ] |
     \autoBeamOn

     \set Timing.beatStructure = #'(1 1 1)
     \times 2/3 { d'16^"\set Timing.beatStructure doesn’t work" f a }
     \times 2/3 { d,16 f a }
     \times 2/3 { d,16 f a }
}

I now suspect \set Timing.beatStructure = #'(1 1 1) didn’t work
because Lilypond considers the beat to be a dotted quarter.
No, you have to add " \set Timing.beamExceptions = #'()" to clear the default rules for the 3/8 time signature. If you add this at the beginning you don't have to beam manually at all in your example:

Try out:

\relative c' {
    \key f \major
    \time 3/8
    \clef "bass"
    c8^"Default beaming (correct)" (e16 c g e) | c'8  (\grace { d16
c16 b c } e16 c g e )  |
    d'8\staccato c\staccato b\staccato c r r |

    \set Timing.beamExceptions = #'()
    \set Timing.beatStructure = #'(1 1 1)
    \times 2/3  { d,16^"Changed beaming"  f a  }
    \repeat unfold 2 { \times 2/3  { d,16  f a  } }
    \scaleDurations #'(2 . 3) {
        g   bes c  g   bes c   f,   a c   |
        e,   g c   f,   a c   bes,   d g   |
        c,   e g   c   g e   c   bes g   |
        f   a c   f,   a c   f,   a c   |
        f,   bes d   f   d bes   a   c f   |
        c   f a   c,   f a   c,   e g   |
    }
    r32 f,   a c   f   a c a   f   c a f   |
    r c   e g   c   e g bes   g   e c bes   |
    r f   a c   f   a c a   f   c a f   |
    r g   b d   g   b d b   g   f d b   |
    r c,   e g   c   e g e   c   g e c   |

    \times 2/3 { d'16^"\set Timing.beatStructure _does_ work" f a }
    \times 2/3 { d,16 f a }
    \times 2/3 { d,16 f a }
}

I admit I also find this chapter of the NR (1.2.4 Beams) somewhat confusing: If you're not already into the topic - and that's usually the state when starting ;-) - you don't really see what you're missing. I encourage you to delve into it, try to understand it piece by piece while experimenting with small examples. I think it's definitely worth the labour.

Two more hints to make your life easier:

1)
You don't have to write out  the \times construct for every group.
Just surround the whole section by \times { } (as you did with the \scaleDurations section).
Before this you add
    \set tupletSpannerDuration = #'(ly:make-moment 1 8)
to tell Lilypond to print the brackets and numbers every 1/8th note.

2)
I'd suggest you don't use \scaleDurations here but rather triplets.
Because that's what you have here: triplets without numbers and brackets, not a scaled duration. While it is perfectly valid what you wrote I'd suggest to keep it structurally simpler, which makes your code easier to understand (for example if you return to it next year). I'd use \scaleDuration only in more complex cases such as different tempos (e.g. 3/8 vs 4/8 in different staves).
With 1) you have come around the need to write out \times more than once.
But you will also want to add
    \override TupletBracket #'bracket-visibility = ##f
    \override TupletNumber #'stencil = ##f
While this is effectively slightly more text to type, it makes your code clearer in terms of structure, because you write what it actually means.

HTH
Urs
Beam
exceptions look quite Schemish and involving triplets would be beyond
me. For the time signature engraver there is no difference between a
"scherzo" 3/4 or 3/8 or one in three, but for musicians there is a
difference and maybe it should be easy to specify at the beginning,
something like:

\time 3/8
\setBeat 8 % ...or \setBeat 4.
Well, this is \set Timing.baseMoment, isn't it?
Also nice would be something that parses manual beaming into beam exceptions:

\specialBeaming { r32 f, [ a c ] f [ a c a ] f [ c a f ] | }
r c [ e g ] c [ e g bes ] g [ e c bes ] |
\EndSpecialBeaming

Disclaimer: I’m making all of these comments free from any knowledge
of Lilyponds internals :-)

Vaughan

_______________________________________________
lilypond-user mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user




reply via email to

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