Issue 3307: Rest positions incorrect with non-standard line count
Also:
Change rest-on-nonstandard-staff regtest to avoid page overflow
I see several changes, some in relation with even-staff-line staffs,
but also some changes with regard to rest location in multi-voice
situations.
Multimeasure rests are not fabulously consistent with the normal rests.
Basically, the whole situation is appalling.
You changed more than necessary to fix the reported bug. This is good because
finally voiced r1-style whole rests are in the correct positions (which I
confirmed with Ted Ross' book just to be careful).
Quarter-rests and shorter look a bit odd now, on the even-line-count staves, as
they are not in their usual position on a line. I'm not sure if this is
objectively 'wrong'.
The reported bug does /not/ show as fixed in the make-check output for
'tablature-full-notation.ly' which confuses me. From the code, I would have
expected it to come out right.
https://codereview.appspot.com/8580045/diff/5001/input/regression/rest-on-non...
File input/regression/rest-on-nonstandard-staff.ly (right):
https://codereview.appspot.com/8580045/diff/5001/input/regression/rest-on-non...
input/regression/rest-on-nonstandard-staff.ly:39: \new StaffGroup \with {
\override StaffGrouper.staff-staff-spacing.padding = 3 }
The short-term effect is to make the image-comparision less useful in seeing the
effect of the patch.... but this long regtest is not very useful anyway.
https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc
File lily/rest.cc (right):
https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc#newcode46
lily/rest.cc:46: Rest::y_offset_internal (Grob *me, int duration_log, int dir)
Naming: something like staff_position_internal() to help us remember that this
returns a quantity in units of staff-positions, because Y-offset is always in
units of (global) staff-spaces.
https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc#newcode78
lily/rest.cc:78: if (duration_log > 1)
Shorter rests look ... unfamiliar if they are not aligned, but I'm not sure
which is correct.
On 2013/04/10 05:47:20, Keith wrote:
> You changed more than necessary to fix the reported bug. This is good because
> finally voiced r1-style whole rests are in the correct positions (which I
> confirmed with Ted Ross' book just to be careful).
More by coincidence than by design. That was likely the most significant change
affecting five-line staffs.
> Quarter-rests and shorter look a bit odd now, on the even-line-count staves,
as
> they are not in their usual position on a line. I'm not sure if this is
> objectively 'wrong'.
Again, I don't know what the standards would be. The non-centered rests look
bad particularly in tablature, but are also weird in two-line drum staffs.
The best solution likely would be glyphs explicitly designed for the
off-by-half-line use case.
> The reported bug does /not/ show as fixed in the make-check output for
> 'tablature-full-notation.ly' which confuses me. From the code, I would have
> expected it to come out right.
>
>
https://codereview.appspot.com/8580045/diff/5001/input/regression/rest-on-non...
> File input/regression/rest-on-nonstandard-staff.ly (right):
>
>
https://codereview.appspot.com/8580045/diff/5001/input/regression/rest-on-non...
> input/regression/rest-on-nonstandard-staff.ly:39: \new StaffGroup \with {
> \override StaffGrouper.staff-staff-spacing.padding = 3 }
> The short-term effect is to make the image-comparision less useful in seeing
the
> effect of the patch.... but this long regtest is not very useful anyway.
I can alternatively tell the regtest to expect overfull page warnings.
I actually don't have a clue why they would be there in the first
place: maybe pitched multi-measure rests don't count in the page
height estimates?
> https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc
> File lily/rest.cc (right):
>
> https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc#newcode46
> lily/rest.cc:46: Rest::y_offset_internal (Grob *me, int duration_log, int dir)
> Naming: something like staff_position_internal() to help us remember that
this
> returns a quantity in units of staff-positions, because Y-offset is always in
> units of (global) staff-spaces.
Yes, that's reasonable. The function at first returned an offset, but
it turned out that the multi-measure rest code needs staff-spaces.
> https://codereview.appspot.com/8580045/diff/5001/lily/rest.cc#newcode78
> lily/rest.cc:78: if (duration_log > 1)
> Shorter rests look ... unfamiliar if they are not aligned, but I'm not sure
> which is correct.
Neither am I. I was flying this by "least ugly" according to my
subjective impression.
For ancient music (four-line staff), rests of small size would be
unusual. For full tablature and drums, we'll need input from players
or (preferably) theory books and hand-engraved scores.
It is also clear that multi-measure rests, particularly in multi-voice
situations, are still bonkers. I have problems finding where they get
their positions.
On 2013/04/10 07:29:26, dak wrote:
> Again, I don't know what the standards would be. The non-centered rests look
> bad particularly in tablature, but are also weird in two-line drum staffs.
>
> Neither am I. I was flying this by "least ugly" according to my
> subjective impression.
>
> For ancient music (four-line staff), rests of small size would be
> unusual. For full tablature and drums, we'll need input from players
> or (preferably) theory books and hand-engraved scores.
Elaine Gould is silent on this point. She deals exclusively
with standard 5-line staves.
Trevor
Issue 8580045: Issue 3307: Rest positions incorrect with non-standard line count
(Closed)
Created 11 years ago by dak
Modified 10 years, 9 months ago
Reviewers: Keith, Trevor Daniels
Base URL:
Comments: 3