>> How can I avoid the vertical alignment of a hairpin and a dynamic >> text that starts or stops the hairpin? For example, in this >> situation >> >> { f1\< | e''\p } >> >> I want to make LilyPond position the `\p` independently of the the >> crescendo – in particular, I don't want to fiddle with `padding`, >> `extra-offset`, or something similar to move the `\p' up; LilyPond >> already knows how to position the `\p` correctly.[*] >> >> In other words, how can I influence where a `DynamicLineSpanner` >> starts and end? > > Try forcing spanner-broken like this: > > > \version "2.23.1" > > { > f1\tweak spanner-broken ##t \< > e''1\p > } > > > This coerces the Dynamic_align_engraver into creating a > new DyamicLineSpanner instead of reusing the same > one (lily/dynamic-align-engraver.cc around line 93).
Thanks a lot! 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. 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. Werner