bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: In TabStaff, \grace with \override misbehaves when it’s the first no


From: David Kastrup
Subject: Re: In TabStaff, \grace with \override misbehaves when it’s the first note
Date: Tue, 20 Jul 2021 14:47:21 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Jean Abou Samra <jean@abou-samra.fr> writes:

> Thanks for your report. The same happens in Staff:
>
> \version "2.23.4"
>
> {
>   \grace {
>     \override NoteHead.font-size = 3
>     c'
>     \revert NoteHead.font-size
>   }
>   d'
> }
>
> This is because graces have special settings, which
> include a value for NoteHead.font-size (as well as
> TabNoteHead.font-size). When the first grace note
> arrives, the settings start applying and override what
> you did. Then, the \revert pops those settings off the
> stack, and your setting shines start to shine through.

It's more complex than that: synchronisation with the input stream
(rather than just the timing) is usually established by the
Grace_iterator communicating to the Grace_engraver with a GraceChange
event.

However, in the given situation the bottom context is established only
implicitly with the \override which is too late to establish this
synchronisation.  Cf this comment in lily/grace-engraver.cc:

// if we are in grace time already on initialization, it is unlikely
// that we'll receive a GraceChange event from the grace iterator yet,
// so we want to start into grace mode anyway.  The downside is that
// this will get us confused when given something like
//
// \new Voice { \oneVoice \grace { c''8 8 } g'1 }
//
// where \grace executes its actions already before \oneVoice, causing
// different stem directions.

which is related.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]