Positioning grace notes with floating space

Setting the property strict-grace-spacing makes the musical columns for grace notes ‘floating’, i.e., decoupled from the non-grace notes: first the normal notes are spaced, then the (musical columns of the) graces are put left of the musical columns for the main notes.

Due to issue #6876, however, accidentals are ignored if this property is set. This snippet gives a workaround to circumvent the problem.

Another unfortunate side effect of this property is that LilyPond does not check whether there is enough horizontal space for grace notes (this is tracked as issue #2630). You have to make sure that enough space is available, for example, by using \newSpacingSection together with a proper value for the base-shortest-duration of the SpacingSpanner grob.

shiftedGrace =
#(define-music-function (offset music) (number? ly:music?)
   #{
     \override NoteHead.X-offset = #(- offset 0.85)
     \override Stem.X-offset = #offset
     \grace { $music }
     \revert NoteHead.X-offset
     \revert Stem.X-offset
   #})

\relative c'' <<
  { g4 \shiftedGrace #-1.3 a32 \shiftedGrace #-0.5 { bes c d } es4 }
  { f,32 e d c f e d c f4 }
>>

\layout {
  \context {
    \Score
    \override SpacingSpanner.strict-grace-spacing = ##t
  }
}
[image of music]

LilyPond snippets v2.25.32 (development-branch).