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: Sat, 30 Jun 2012 18:06:18 +0000


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

Phooey. Moments are used for a number of things: for moments themselves, for timespans between moments, and sometimes for accumulating timespans. Basically, there is a bit of reliance that the usual arithmetic laws will hold. So it is not really overly feasible to squeeze -inf grace as a somewhat neutral element into the arithmetic and hope that things work out.

With regard to property changes etc, it seems unfortunate not to be able to distinguish the time before any grace and the time after graces.

My personal favorite would be to use #f and 0 for "before" and "after graces". However, moments don't contain SCM, but rather Rational members. Personally, I think that the whole Rational class (and the respective conversion problems) would benefit from getting scrapped and getting replaced just by Scheme rationals.

Doing that just internally (namely, replacing only the implementation of Rational) would be somewhat inefficient since it would convert things back and forth from Scheme unnecessarily.

Anyway, that is a different topic.

In the mean time, playing arithmetic games would not appear to help, so one should probably try fixing up the program's logic if feasible: after all, most of the work _is_ in place for working with graces.

I can't help myself, but I find the following comment in grace-iterator.cc to be on the less convincing side:

void
Grace_iterator::process (Moment m)
{
  Moment main;
  main.main_part_ = -start_mom_.grace_part_ + m.grace_part_;
  Music_wrapper_iterator::process (main);

  /* We can safely do this, since \grace should always be inside
     sequential.  */
  descend_to_child (child_iter_->get_outlet ());
}

While I don't understand graces (yet?), comments like that make me shiver.




reply via email to

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