lilypond-devel
[Top][All Lists]
Advanced

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

Re: Allows slurs to break at barlines. (issue 7424049)


From: David Kastrup
Subject: Re: Allows slurs to break at barlines. (issue 7424049)
Date: Wed, 20 Mar 2013 16:38:51 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Werner LEMBERG <address@hidden> writes:

>> I think any further proposals should _definitely_ explain how to write
>> the given example
>> 
>> g f e d( 
>> \repeat { c d) e f ( }
>> \alternatives {
>>   { g) a b( a \fake) }
>>   { \fake( e) d c( d \fake) }
>>   { \fake( d) c d( e }
>> }
>> d c) d c
>
> Hmm.  It's not clear to me why lilypond can't handle this
> automatically:
>
>   g f e d( 
>   \repeat { c d) e f( }
>   \alternatives {
>     { g) a b( a }
>     { e) d c( d }
>     { d) c d( e }
>   }
>   d c) d c

The example actually is a bit too orthogonal to illustrate all pertinent
points.  Here are some variations:

g f e d( \fake)
\repeat { \fake( c d) e f ( }
[...]

Now the first slur will _not_ lead into the repeat unbroken, a valid
variation.

g f e d( \fake)
\repeat { \fake\single\slurDotted( c d) e f 
[...]

This is typical for lyrics where there is a melisma leading into the
first repeat but not into all subsequent ones.  If there is no melisma
into the first repeat but in some alternative, you'd write instead

g f e d
\repeat { \fake\single\slurDotted( c d) e f }
[...]

Now since \unfoldRepeats would remove all \fake slurs, the result would
be fine here.  The opposite case, where a repeat leads into only some
alternatives, would be

\repeat { c d e f\single\slurDotted( \fake) }

which works less well.  One possible way around that would be to combine
tweaks from start and end slur events, leading to

\repeat { c d e f( \fake\single\slurDotted) }

which is still not good enough for unfolding unless one starts slur-less
alternatives with something like \fake( d\single\omit).  Which would not
work for audio so for that case we probably really need an explicit slur
killing command.


Here is another example:

g f e d(
\repeat { c d) e f }
\alternatives {
  { g a b( a \fake) }
  { e d c( d \fake) }
  { d c d e }
}
d c d c

The suggested automatism would turn this into

g f e d(
\repeat { c d) e f }
\alternatives {
  { g a b( a }
  { e d c( d }
  { d c d e }
}
d c d c

which makes for a lot of visually unpaired opening parens in the source
code.  Mind you: this is pretty much what I have asked for myself.  I
just have my doubts that an automatism for some cases will not make it
harder for other cases and will leave the music source in a less
convincing state.

I have to admit that leaving _all_ automatism aside does not seem
warranted: I can think of no case where inconsistent slur orientation
across visual jumps would be desirable.

> It seems that I've *completely* misunderstood the syntax we were
> talking about, so thanks for this detailed example.  However, I still
> don't like \fake.  Looking at your syntax about, the corresponding TeX
> name would be \phantom which I do now suggest.

Well, TeX uses \phantom for something which has dimensions but no visual
appearance, whereas we would use it for something which has visual
appearance (before unfolding) but no sound.

But TeX is separate enough from LilyPond that I actually like \phantom
rather well for this purpose.

-- 
David Kastrup



reply via email to

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