Originally created by: *anonymous
Originally created by: simon.al...@mail.de
Actually, this is a content vs. presentation issue. The current approach has lyric extenders ‘hardcoded’ within the lyricmode input, whereas often it depends on layout whether I want an extender printed or not:
– In tight horizontal spacing, we might not need an extender, but when spacing is stretched, it might become necessary. This can come through different (page/line) breaking, parallel contexts present only in some editions (part vs. score), Completion_heads_engraver (mensural without barlines/transcription with barlines).
– Long syllables might not need an extender, where short syllables do.
– Often, all voices share the same text, but have extenders in different places. If extenders need not be given explicitly, the lyricmode input code can be reused much easier.
After all, the extenders don’t add any additional meaning, but only serve to improve legibility in such cases where they do.
This would require:
– Recognising the end of a word by absence of a hyphen.
– Comparing printed length of the melisma notes vs. the syllable, likely after line breaking. After all, extenders will never influence horizontal spacing. They might, however, affect vertical spacing. (unless we chose to omit (or shift) the extender in that case?)
– Personally, I think very short extenders shouldn’t be printed. There should be some kind of threshold.
It’s also one of the usecases where a proper representation of a ‘lyric word’ would be helpful, along with issue 2458.
Possibly related:
issue 4098
Version 2.12 had this listed as a Known issue.
Issues: #2458
Issues: #4098
Issues: #5018
Originally posted by: simon.al...@mail.de
(No comment was entered for this change.)
Status: New
Diff:
Hiding unnecessary extenders (when the text extends at least as far as the extender should) could be tracked as a separate issue. It would be useful whether extender creation is automatic or manual, and this ticket would be that much less daunting to a potential contributor.
I’m trying to figure out how these parts would be separated. Do you mean a process like the following:
a. through explicit
__
b. automatically create an extender for any syllable with a melisma (the objective of this issue)
Yes, that is what I meant. Looking from the outside (without knowledge of the implementation), it seems that (2) is independent of (1).
Not so: "If an extender starts at the very end of a system, allow extra space before the barline..." (Behind Bars p.447).
Since both of us can only guess about implementations, it’s an audacious assumption that they are independent. As it stands, I think it’s better to have the information in one place.
Diff:
Related
Issues: #4098
Forwarded from Alexander Kobel, out of the duplicate issue 5018:
Related
Issues:
#5018Last edit: Simon Albrecht 2016-12-23
Lyric autoextenders: Silence some warnings
http://codereview.appspot.com/313240043
Passes make, make check and a full make doc.
VIsual Reg diffs attached
Also note that I am seeing the following additons in the reg test output that may or may not be significant - I am not qualified to say:
--snip--
and a couple of tests put out these two additional warnings:
and
Second reg test diff.
Tell parser to ignore "__" token
http://codereview.appspot.com/313240043
From Rietveld:
Sorry, I'm a bit drawn up between my position as the Rietveld-proxy of Knut and
my own Alexander-role as a commenter.
I forwarded all patches by Knut, and I withdrew my two comments from #5 and the
one from the mailing list that Knut answered in #6.
The patch set is up to date.
W.r.t. the regtest differences, as far as I (Alexander) can tell:
The warnings should be gone with Knut's parser modification in patch set 3.
The image differences are expected. A few short extenders are removed (due to
the different handling of collapse-length vs. the old minimum-length). The exact
setting of default collapse-length could be discussed, but IMHO the setting is
fine.
A few extenders appear that have not been written explicitly before, but that is
expected, too.
I guess for page-spacing-nonstaff-lines-independent.ly, the extender should be
forbidden, to have the intended effect of this regtest shown more pronounced.
However, I propose that we first discuss the patch itself, and settle on syntax
and choice of default parameters (collapse-length, force-length). AFAICS, once
this is done, we will need a pass over the entire documentation and regtests
anyway that removes all __ in lyrics - not for functionality, but to purge
outdated and possibly confusing syntax. That's basically a
sed -e 's/ __//g'
,but we will have to do a quick review of at least the affected docs to check for
errors.
Also, a convert-ly rule still has to be written that will, e.g., also solve the
difference in the page-spacing-nonstaff-lines-independent.ly regtest.
Patch Meister:
To that end I am setting this back to 'needs work', when something (or not) changes then set the call back to new and then we can re-test the 'latest' itteration of whatever is currently, or subsequently put, up there (on Rietveld).
That way we all know where we are.
Thanks
James
Version 2017-01-01
http://codereview.appspot.com/313240043
Version 2017-01-01
http://codereview.appspot.com/313240043
Passes make, make check and a full make doc.
Reg test diffs attached.
I am still getting the same warnings as before for example:
and
Reg test diffs
Hi all.
The visual diffs are expected and okay.
I suggest to replace
\skip2
by""
ininput/regression/page-spacing-nonstaff-lines-independent.ly
, though.The stderr diffs are debatable.
For
display-lily-tests.ly
, the output is expected and could be marked "NOT A BUG", but it isn't pretty. Since there is no need to enter__
manually anymore (and it is ignored by the parser),\displayLilyMusic
should not emit it either.typography-demo.ly
points to an actual oversight in the extender handling of the patch set: the broken extenders from the first to second system seem not to be subject to collapse-length. The warning stems from the fact that the second part of broken extender before "Licht!" has no room available. (Note that it is not related to the fact that there is an acciaccatura there.)On a more or less unrelated note, it seems that we have no way to stop an extender before an acciaccatura or grace note. That's not a new problem, as far as I can see, but might be slighly more annoying with automatic extenders:
This reminds me of a question I raised in the code review which went unacknowledged as far as I can tell. Why should the parser ignore the double underscore token? Why is such a token even defined if there is no use for it? Shouldn't it rather be treated as a syntax error in new versions?
Last edit: Dan Eble 2017-01-05
I don't think that this is a problem of
\displayLilyMusic
: if lyric extenders no longer convey any meaning present in the input, they should not be part of the music expression in the first place. Music expressions are supposed to represent the input. If a LyricEvent should automatically cause the actions associated with a LyricExtender, then the solution is to change the respective action of the engraver for lyric extenders so that it no longer relies on extender events but works on the LyricEvent s directly.