Re: duration-length becomes duration-moment, but script no longer works

Lukas-Fabian Moser <[email protected]>
Newsgroups gmane.comp.gnu.lilypond.general
Message-ID <[email protected]>
Dear Richard,

Am 12.08.26 um 12:35 schrieb Richard Shann:
>> Could you please provide the original, working (with an older
>> LilyPond
>> version) state of your code before convert-ly changed it?
> Thank you for getting back to me:
>
> This is the code working in 2.24

Ah, I see. That code makes assumptions on the internal representation of 
grace music that are no longer valid in 2.26.

But the original code is also more involved than necessary. If I'm not 
mistaken, it can be replaced by something as simple as:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.24"

#(define (after-grace-factor? x)
    (and (rational? x)
         (< 0 x 1)))

#(define (grace-music? m)
    (and (ly:music? m)
         (music-is-of-type? m 'grace-music)))

attachGraces =
#(define-music-function (frac note graces) (after-grace-factor? 
ly:music? grace-music?)
     #{
       <<
         #note
         {
           \skip $(make-duration-of-length (ly:music-length note)) * #frac
           #graces
         }
       >>
     #})

\score {
   \new Staff
   {
     \attachGraces #3/4 g''4 \grace { f'8 }
   }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Incidentally, this version should work out of the box in 2.26 as in 
2.24. It behaves a bit differently from your original, though: Your 
original (I think) strips away the additional code that make up, for 
instance, an \appoggiatura in contrast to a simple \grace. The code I'm 
proposing doesn't touch the inner structure of the grace music.

But actually, are you aware that stock LilyPond \afterGrace accepts an 
optional argument that (I think) does just what your code achieves, 
without you having to enter \grace explicitly? Try:

\afterGrace #3/4 g''4 f'8

Lukas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.