Hi Jacques,
Is there a more natural way of obtaining this result than with a
sequence of shorter and shorter skips?
The following seems to work here:
\version "2.23.5"
\relative c''' {
\time 6/8
<<
{
g8 ^\markup {\italic "rit." } g4 g8
g4 | % 16
c8 [ bes8 ( g8 )
e8 ( c8 ) bes8 _\laissezVibrer ]
}
{
\once\override TextSpanner.style = #'trill % wave zigzag
\once\override TextSpanner.minimum-length = #8
\once\override TextSpanner.Y-offset = #-4
\once\override TextSpanner.springs-and-rods =
#ly:spanner::set-spacing-rods
{ <> \startTextSpan s2.*2 <> \stopTextSpan }
}
>>
}
If you want the stopTextSpan to happen before the next bar starts, feel
free to replace *2 in s2.*2 by a fraction slightly less than 2, for
example 127/64.
In general, I never liked the technique of attaching events that occur
at the start of a timestep to spacer rests, and I already changed this
in the documentation at some points I think: To me,
s2\f s2\> s1\p
always reads as "before skipping 2, put a \f; then, before skipping
another 2, start a diminuendo; then, before skipping a 1, put a \p"
which feels like mental roller coaster. It seems much more natural to do
<>\f s2 <>\> s2 <>\p
allowing us to read in the natural order: put a \f, then skip 2, then
start a diminuendo, etc.
And of course, with recent development versions, you can even do
<>\f \after 2 \> \after 1 \p s1*2
or something like that.
Lukas