[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