lilypond-user
[Top][All Lists]
Advanced

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

Re: Merge_rests_engraver bug with whole measure rest?


From: David Wright
Subject: Re: Merge_rests_engraver bug with whole measure rest?
Date: Tue, 10 Dec 2019 10:27:31 -0600
User-agent: Mutt/1.10.1 (2018-07-13)

On Tue 10 Dec 2019 at 11:25:02 (+0100), Jens Gyldenkærne Jensen wrote:
> Den tir. 10. dec. 2019 kl. 10.57 skrev Thomas Morley <address@hidden>:
> > Am Di., 10. Dez. 2019 um 10:42 Uhr schrieb Jens Gyldenkærne Jensen 
> > <address@hidden>:
> > >
> > > The example from the manual regarding merging of rests (
> > http://lilypond.org/doc/v2.19/Documentation/notation/multiple-voices#merging-rests)
> > show a strange difference between whole measure rests and smaller rests.
> > The crotchet rest in bar one is placed in the middle of the staff whereas
> > the whole note rest in bar two is placed at the top (similar to the
> > placement of the \voiceOne rest in the unmerged staff). Is this intentional
> > or a bug? I would think that the correct placement would be in the middle
> > of the staff.
> >
> > This is fixed in upcoming 2.21.0, probably in upcoming 2.20.0 as well.
> > Attached the image from the locally compiled 2.21.0 NR
> 
> Excellent. Hope to see them released in a near future.

As a stopgap, you might be able to correct this for yourself, but I
can't be certain. When rest-merging was just a snippet (336), it
would IIRC place whole measure rests on the centre line, and I
changed a line in #(define merge-multi-measure-rests-on-Y-offset
to correct it, from "0)" to "1)". (At that time, it also had a bug
that printed both dots when it merged dotted crochet rests.)
More recent downloads seem to have corrected both these bugs,
so the "0)" value now works, and I still use the download, rather
than the built-in version.

AFAICT, the code that sets the rest positions is in
lilypond-2.19.83-1.linux-64/lilypond/usr/share/lilypond/current/scm/scheme-engravers.scm
in the lines following

  (define-public (Merge_rests_engraver context)
  "Engraver to merge rests in multiple voices on the same staff.

  This works by gathering all rests at a time step. If they are all of the same
  length and there are at least two they are moved to the correct location as
  if there were one voice."

but I'm not familiar enough with scheme to know precisely which line.
Perhaps others are. It might be as simple as changing one digit.

Cheers,
David.



reply via email to

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