lilypond-auto
[Top][All Lists]
Advanced

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

Re: [Lilypond-auto] Issue 34 in lilypond: Grace synchronization


From: lilypond
Subject: Re: [Lilypond-auto] Issue 34 in lilypond: Grace synchronization
Date: Thu, 02 Oct 2014 10:05:52 +0000


Comment #29 on issue 34 by address@hidden: Grace synchronization
https://code.google.com/p/lilypond/issues/detail?id=34

Ok, let me try another solution sketch here. Inside of sequential music, we have grace fixups that shorten any music of non-zero duration followed by an arbitrary number of music with zero duration followed by a music with a non-zero grace duration by the specified grace duration, so that all the music with zero duration (like overrides etc) after it are executed at a point of time _before_ their nominal point of time.

Basically, we need a grace fixup for simultaneous music as well that, in the presence of a graceful start time in the next event, sucks forward all zero-length music in parallel music to occur at the same graceful start time.

Now here is the rub: in sequential music, the order in the music _supports_ the contention that overrides etc occuring before a grace phrase should be executed _before_ the grace phrase, namely in sequence.

In simultaneous music, we have no such indication. As an extreme example, if we have
<<
  \new Staff { \grace { e'8 } g'1 }
  \new Staff { \once\override NoteHead.color #red c'1 }

we don't want the \once\override to be over before it has had a chance to affect c'1. On the other hand, for
<< \new Staff { \grace { e'8 } g'1 }
   \new Staff { \once\set Staff.instrumentName = "Fagott" c'1 }

we don't want to have the instrumentName setting delayed until it can no longer affect the staff.

So \once has to become more complex, with the _onset_ obeying simultaneous grace fixups, but the revert coming on time.

The reversal of \once is an obvious candidate where we don't want a simultaneous grace fixup to occur. It can probably be dealt with with a variation on the finalization hook procedure being told the expected time of delivery, just requeueing when it is too early yet.

I consider it unlikely that this is the only problem though. Something like c1*0 is a zero-length event. Nobody complained so far about the output of, say,
{ c'1 g'8*0 \acciaccatura { e'8 f' } c''1 }
but I'm not sure everything else will be similarly good-natured.

For something like
<<
  \new Staff { c'1 \time 3/4 \acciaccatura { e'8 f' } c''2. }
  \new Staff { c'1 \time 3/4 c''2. }

we probably want grace adjustment.

And even a separate timing track like
<<
  \new Staff { c'1 \acciaccatura { e'8 f' } c''2. }
  \new Staff { c'1 c''2. }
  \new Devnull { s1 \time 3/4 s2. }

would arguably benefit from grace adjustment. But will it be for every case?

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings



reply via email to

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