Issue 3208: compressed MMRs choose correct glyphs
usable-duration-logs now affects only the choice of glyph for the
representation of a single measure. For multiple measures, glyphs for
longer rests up to maxima are used.
This is a second attempt to make it work and has little to do with my
first attempt at https://codereview.appspot.com/333340043 Therefore I
created a new Rietveld issue.
Also the vertical positioning of half and shorter rest glyphs in MMRs
now is handled correctly. BUT: this breaks make check because of a
different positioning of breve rests in TabStaffs. For details see
discussion below.
http://codereview.appspot.com/335410043
Originally created by: colingh...@gmail.com
Thomas Morley reported here:
http://lists.gnu.org/archive/html/bug-lilypond/2013-02/msg00180.html
as follows:
With measures longer than two whole notes LilyPond chooses different
glyphs for MultiMeasureRest.
\version "2.17.12" \new Staff { \compressFullBarRests \time 7/4 R1*7/4 R1*7/4*2 \break \time 9/4 R1*9/4 R1*9/4*2 \break \time 18/4 R1*18/4 R1*18/4*2 }
Discussion on the user-list:
http://lilypond.1069038.n5.nabble.com/Glyph-for-longer-MultiMeasureRest-td141438.html
According to Gould LilyPond's default seems to be correct.
Werner objects.
At least there's need for discussion, I think.
Attached an image showing "LilyPond's default" vs "Correct?"
Regards,
Harm
Passes make, make check and a full make doc.
Patch on countdown for January 4th.
I am going to leave this on countdown as it looks like there is still some discussion. However if I have misinterpreted this, then it can be pushed.
I can see from Rietveld that this is not yet quite ready for 'prime time', I will set this back to Review - while Malte gets his clarification. If nothing has changed by the next countdown, I'll put his back to 'Needs Work'.
Thanks, that sounds reasonable.
So far I’ve got answer from all four German publishers I contacted but not from Faber Music (or even Elaine Gould). Three of these answers were very clear, I’ll wait for a clarification on the fourth and then summarize what they said and make a patch.
Here are the answers I got from the publishers:
Publisher 1
• Has no house rule for this situation.
• But recommends to use a brevis rest for 1 measure in 4/2 time; for more measures use a “modern” horizontal beam rest (MMR.expand-limit = 1).
• Alternatively do the same for 4/2 as for other time signatures like 4/4 (“consequently modern practice”).
Publisher 2
• Use the same notation for all time signatures including 4/2 (what Publisher 1 calls “consequently modern practice”).
• MMR.expand-limit = 9
Publisher 3
• Use brevis rest for 1 measure, longa for 2 measures, longa + brevis for 3 and so on (like LilyPond’s default behaviour).
• MMR.expand-limit = 12 (or maybe 8); after seeing my example they voted for 8 (“else it looks like stacking wood”)
After thinking about these answers I would suggest the following:
• Change LilyPond’s default expand-limit to 8 (publisher 3, Gardner Read “Music Notation”) or 9 (publisher 2, Elaine Gould “Behind Bars”) instead of 10 (current default). IMO there are arguments for both 8 and 9:
∘ 8 is one or two (in case of 4/2 time) maxima rests, not one or two maximas + a little bit.
∘ 9 is the largest single-digit number.
→ I’m undecided
• Have a boolean grob property of MMR that controls whether longer rests are used for longer measures (publisher 3, current default) or whether all times are handled the same (publisher 2 and maybe 1). And make the default that it matches current default (after all, LilyPond doesn’t want really “modern” engraving, does it?).
• Now think whether we need usable-duration-logs and if so what it should do:
∘ Control the appearance of single measure rests.
∘ Control the appearance of compressed rests.
→ I would suggest not to use it. According to Gould smaller than whole rests should be placed where notes of that lengths would stand, so if one wants 1/8 rest in 1/8 time just use r8 instead of R8. And I don’t see why anyone would want to disable brevis, longa, maxima rests. (Ok, maybe maxima … in this post there is an example of 8 measures rest that uses two longas instead of a maxima … but after looking at that edition (NBA) I have the impression that they do weird stuff with rests …) But that’s only my opinion.
Oh, and if we decided to keep usable-duration-logs it would be necessary to fix the staff-position of smaller rests: currently all symbols just hang from the second line so not only quarters and eighths are displaced but halves look like wholes.
for default expand-limit I vote for 8.
about usable-duration-logs: I also suggest not to use it; however, the main usage would be to use dotless full measure rests e.g. in 3/8 time (so R4. could look like r4 or r2).
Would you really notate a rest in 3/8 as quarter or half instead of whole or dotted quarter?
Apart from that, publisher 4 has anwered: Basically their answer confirms that we should support both versions. They do the same as publisher 2 for Bach/Handel and later; additionally they set a “1” above single measure rests (see also [#5251]) and have less space between the rest symbols (is there an option to control this distance?). For older music they are ok with the thing publisher 3 and LilyPond do.
Related
Issues:
#5251I definitely would not, I just said that as the only argument I can
imagine someone could come up with in support of usable-duration-logs.
Undotted quarter would match the principles of mensural notation
(rests are never dotted and always perfect if mensuration says so);
half would be the result of scaling the "whole rest in 3/4 time"
principle. but those were never used, I guess; Bach uses whole rests,
see the Gloria movement (bottom of page 2 in
http://ks.petruccimusiclibrary.org/files/imglnks/usimg/0/05/IMSLP102259-PMLP04197-Bach_Bm_Mass_parts_278110185_bass.pdf
).
Mensural notation has perfect and imperfect division, yes, but only for maxima, longa, brevis and semibrevis (= whole) notes/values. So I see no point in having undotted minima and seminiminma (half and quarter) rests: this principle of mensural notation doesn’t apply to these values. Or am I mistaken? Of course, modern notation often shifts durations (f. e. tempus imperfectum cum prolatione major could be written as 6/8 time) but this is “modernized” notation and should not use quarter but dotted quarter rests for semibrevis rests.
I changed my mind: Allowing shorter rests doesn’t harm—no one has to use positive numbers in usable-duration-logs but if someone really wants to do it even though Gould et al. disadvise, we shouldn’t take away this functionality.
This also means that we don’t need such a boolean grob property: Instead you can just override usable-duration-logs to #'(0) as it has been done in every single discussion about this property that I could find on the internet. Yay, backwards-compatibility! ;)
Of course we could discuss whether it would be nice to have a shorthand like
next to compressFullBarRests and expandFullBarRests in ly/property-init.ly.
Concerning the default value of expand-limit: This doesn’t really belong here but would be another issue. I’ll send a feature request to the bug list for discussion.
BTW until 2.15.8 there was a boolean property called
use-breve
that was replaced byusable-duration-logs
,round-up-to-longer-rest
andround-up-exceptions
. Going back to a boolean property would be something like a regression ;)Yes, that's why I said "principles", not "rules" or "practice". I
think the same principle works when Bach uses 9/8 in one part, 3/4 in
another (e.g. Jesus bleibet meine Freude in BWV147) or 12/8 in one
part, 4/4 in another (e.g. Mein teurer Heiland in Johannespassion).
But it's definitely not extended to multi-measure rests, as the
examples above prove.
Oh, these are all great!
Issue 3208: compressed MMRs choose correct glyphs
usable-duration-logs now affects only the choice of glyph for the
representation of a single measure. For multiple measures, glyphs for
longer rests up to maxima are used.
This is a second attempt to make it work and has little to do with my
first attempt at https://codereview.appspot.com/333340043 Therefore I
created a new Rietveld issue.
Also the vertical positioning of half and shorter rest glyphs in MMRs
now is handled correctly. BUT: this breaks make check because of a
different positioning of breve rests in TabStaffs. For details see
discussion below.
http://codereview.appspot.com/335410043
Breaks
make check
(rest-positioning.ly). For explanation see Rietveld.Passes make, make check and a full make doc.
Reg test diffs attached
to me this is progress; some of the tests look (now and before) plain
silly to me:
rest-dot-position.ly: aligned longa and breve rests should not touch each other
TAB staves: is it actually expected that a longa and breve rests don't
go from line to line?
rest-dot-position.ly: The regression here is [#5217] (random placement of dots) and has nothing to do with my patch; of course one could change this touching rests in a separate issue.
multi-measure-rest-staff-position.ly: This is ok IMHO because staff-position = 0 should behave the same for Rest and MultiMeasureRest. But maybe we should add a convert-ly rule that shifts these overrides?
rest-positions.ly (screenshots 2 and 4, the actual error is only in screenshot 4): That’s on purpose but needs fixing nethertheless, this patch should be waiting for [#5258]. Gould doesn’t say anything about whether they should go from staff line to staff line but IMO that’s worth a discussion (not here but at [#5258]). One would have to draw these rests as rectangles instead of taking them from the font.
Related
Issues:
#5217Issues:
#5258Last edit: Malte Meyn 2018-01-15