[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Ties over repeat boundaries
From: |
address@hidden |
Subject: |
Re: Ties over repeat boundaries |
Date: |
Sun, 5 May 2019 15:53:44 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
Thomas
Thanks for your in-depth explanations. They help me understanding
lilypond more and more.
Your tips lead me to an absolutely satisfying result:
* Use \repeatTie and \laissezVibrer - clean code, comprehensible score
* Lyrics without \repeat / \alternative (in fact: not relevant in the
context of rehearsal midi output with \unfoldReapeats)
* \tweak X-offset #-0.3 \markup \null __
Regards
Stephan
Am 05.05.2019 um 12:24 schrieb Thomas Morley:
> Am Sa., 4. Mai 2019 um 23:39 Uhr schrieb address@hidden <address@hidden>:
>>
>> Hello again
>>
>> I'm having problems with ties over the repeat bar lines when adding lyrics.
>>
>> First let's look at the melody alone - without lyrics:
>> The tie over the repeat bar line between the two volta spanners is wrong.
>
> Yep.
> It's a known limitation, in
> http://lilypond.org/doc/v2.19/Documentation/notation-big-page#repeats
> look for
> "Ties may be added to a second ending:"
>
> LilyPond can't tie notes in alternative endings back to the start of the
> repeat.
>
> This is due to how LilyPond processes repeat-alternative.
> See this minimal:
>
> \displayMusic \repeat volta 2 { b1 } \alternative { b~ bes }
>
> You will get in terminal:
>
> (make-music
> 'VoltaRepeatedMusic
> 'elements
> (list (make-music
> 'NoteEvent
> 'articulations
> (list (make-music (quote TieEvent)))
> 'duration
> (ly:make-duration 0)
> 'pitch
> (ly:make-pitch -1 6))
> (make-music
> 'NoteEvent
> 'pitch
> (ly:make-pitch -1 6 -1/2)
> 'duration
> (ly:make-duration 0)))
> 'repeat-count
> 2
> 'element
> (make-music
> 'SequentialMusic
> 'elements
> (list (make-music
> 'NoteEvent
> 'duration
> (ly:make-duration 0)
> 'pitch
> (ly:make-pitch -1 6)))))
>
> Disregarding all the subtleties and simplifying in pseudo-code this reads:
> (
> ;; alternative endings of repeat
> (list note-alt1-with-tie note-alt2)
> ;; repeat starts with
> (list note-1))
>
> LilyPond always reads from left to right, so above Tie will try to
> connect note-alt1-with-tie and note-alt2.
> This is never what we would want and fails frequently ofcourse.
>
> This limitation was discussed already, but is currently not solved.
> Which is a pity because
> \unfoldRepeats \repeat volta 2 { b1 } \alternative { b~ b }
> works fine. And the workarounds will disturb it.
>
> Part of the workaround is mentioned in the linked section of the NR.
> For the other parts see below.
>
>> When we add the lyrics, somehow unpredictable things happen:
>> * repeat barlines and volta spanners get messed up
>
> Here
> http://lists.gnu.org/archive/html/lilypond-user/2019-05/msg00062.html
> I wrote \repeat - \alternative could be removed from lyrics.
> I'd better written they _should_ be removed.
>
>> * the first g in the 2nd volta alternative (bar 4) is missing the
>> melisma line from "eight___"
>
> A consequence of the Tie-problem.
>
>>
>> Questions:
>> * How should I fix the tie(s)?
>
> Current workaround is to use \repeatTie and \laissezVibrer
>
>> * How should I best align the lyrics?
>
> Remove \repeat \alternative from lyrics.
> To get the LyricExtender in second alternative, enter something
> invisible and move it until it looks fine, see below.
>
>> * Is the tie problem similar to the glissando challenges in
>> http://lilypond.org/doc/v2.19/Documentation/notation/expressive-marks-as-lines?
>> 8-#
>
> Yep, it's the same problem.
> The proposed glissando-workaround would work with Ties as well.
> Though, would make for unneeded complex code. \repeatTie and
> \laissezVibrer is simpler.
> If it does not work sufficiently you may resort to the glissando-workaround.
>
>>
>> I still hope for a "standard default solution" - without too much
>> manual/ugly tweaking ;-)
>
> Here my proposal:
>
> global = {
> \key c \major
> \time 4/4
> }
>
> \header {
> title = "Ties over repeat boundaries"
> }
>
> myMelody = \relative c' {
> \global
> c4 d e f8 g8~ |
> \repeat volta 2 {
> g4 g g c8 g~
> }
> \alternative {
> {
> g4 r r d8 g\laissezVibrer |
> }
> {
> g4\repeatTie r c4\accent r4 |
> }
> }
> \bar "|."
> }
>
>
> myLyrics = \lyricmode {
> One, two, three, four, five, __
> six, sev -- en, eight __ a -- five
> \tweak X-offset #-0.3 \markup \null __
> yeah!
> }
>
> \score {
> <<
> \new Staff \new Voice = "mel" \myMelody
> \new Lyrics \lyricsto "mel" \myLyrics
> >>
> }
>
>
> HTH,
> Harm
>