lilypond-user
[Top][All Lists]
Advanced

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

Re: avoid alignment of hairpin and dynamic text


From: Werner LEMBERG
Subject: Re: avoid alignment of hairpin and dynamic text
Date: Sun, 31 Jan 2021 11:09:35 +0100 (CET)

>> Note that `spanner-broken` is an internal property, not to be
>> modified by the user.  A search in the code yields the command
>> `\breakDynamicSpan` as user syntax – introduced more than 10 years
>> ago in version 2.13.23...  I will document that soon.
> 
> Excellent!
> 

>> Unfortunately, it doesn't cover the case where a dynamic mark is
>> immediately followed by a hairpin:
>>
>>    {
>>      <>^\markup { \typewriter "e''2\\f\\> f2\\p" }
>>      e''2\f\> f2\p | \break
>>
>>      <>^\markup { \typewriter "e''2\\f\\breakDynamicSpan\\> f2\\p"
>>                   (doesn't work) }
>>      e''2\f\breakDynamicSpan\> f2\p | \break
>>
>>      <>^\markup { \typewriter "e''2\\f\\> f2\\breakDynamicSpan\\p"
>>                   (works) }
>>      e''2\f\> f2\breakDynamicSpan\p | \break
>>    }
>>
>> Can this be fixed easily?  This is, making the hairpin listen to a
>> `BreakDynamicSpanEvent` at the creation time of a
>> `DynamicLineSpanner`?  It's probably a special case, since the
>> dynamic mark *should* influence the horizontal position of the
>> hairpin's starting point.
> 
> At least I have not found a way to fix it easily :-(

To answer my own question: No, it can't be fixed as outlined above.
Reason is that the order of events at a given moment is not specified.
This means that it is not possible to make a reliable distinction
between

    \f \< ... \breakDynamicSpan \p \< ... \f

and

    \f \< ... \p \breakDynamicSpan \< ... \f

However, I could imagine that a property `no-dynamic-span` gets added
to the `DynamicText` grob.  The `Dynamic_align_engraver` checks this
while creating a `DynamicLineSpanner` grob; if set, the `DynamicText`
grob is not added as a child to `DynamicLineSpanner`.


    Werner

reply via email to

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