Jump to content

Positioning grace notes with floating space: Difference between revisions

From LilyPond wiki
Import snippet from LSR
 
mNo edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Setting the property <code>'strict-grace-spacing</code> 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.
Setting the property <code>strict-grace-spacing</code> 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.


<lilypond version="2.24.0">
Due to {{Issue|6876}}, however, accidentals are ignored if this property is set.  This snippet gives a workaround to circumvent the problem.
\relative c'' {
 
  <<
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 <code>\newSpacingSection</code> together with a proper value for the <code>base-shortest-duration</code> of the <code>SpacingSpanner</code> grob.
    \override Score.SpacingSpanner.strict-grace-spacing = ##t
 
    \new Staff \new Voice {
<lilypond version="2.24">
      \afterGrace c4 { c16[ c8 c16] }
shiftedGrace =
      c8[ \grace { b16 d } c8]
#(define-music-function (offset music) (number? ly:music?)
      c4 r
  #{
    }
    \override NoteHead.X-offset = #(- offset 0.85)
    \new Staff {
    \override Stem.X-offset = #offset
      c16 c c c c c c c c4 r
    \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
   }
}
}
</lilypond>
</lilypond>


[[Category:Rhythms]]
[[Category:Rhythms]]
[[Category:Scheme]]
[[Category:Workaround]]
[[Category:Included in the official documentation]]
[[Category:Included in the official documentation]]
[[Category:Snippet]]

Latest revision as of 08:46, 6 January 2026

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.

\version "2.24"

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
  }
}