Menu

#3160 chord names pushed into the staff

Verified
nobody
Defect
2015-09-19
2013-02-08
Anonymous
No

Originally created by: *anonymous

Originally created by: k-ohara5...@oco.net
Originally owned by: mts...@gmail.com

\version "2.17.11"
n = 30
<< \new ChordNames \chordmode { \repeat unfold \n c1 }
   \new Staff {\clef alto  \repeat unfold \n c'1  }
   \addlyrics { \repeat unfold \n "a"  }
   \addlyrics { \repeat unfold \n "a"  }
   \addlyrics { \repeat unfold \n ""  }
   \addlyrics { \repeat unfold \n ""  } >>

This failed in 2.14, was fixed as issue 2276, and worked in 2.16.
Now it fails again.

1 Attachments

Related

Issues: #2276

Discussion

1 2 > >> (Page 1 of 2)
  • Google Importer

    Google Importer - 2013-02-08

    Originally posted by: k-ohara5...@oco.net

    (No comment was entered for this change.)

    Blocking: lilypond:3156

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: k-ohara5...@oco.net

    The collision starts with the patch for 2148, commit [r28f3294954eff1f263d3b2e3de1c520f4d2fbdfc]

    I cannot find which piece of that huge commit caused the change, but the change in behavior is that the lines of Lyrics containing "" now get empty skylines, where they did not before.   This leads to issue 1669 for the Lyrics, because the line is empty in the sense of taking no space, but not in the sense of \removeEmptyStaves.  The code I tried to remove in the patch for issue 1669 gets confused in this situation.

    So the suggestion of issue 3156 seems reasonable: any line that takes no space would be removed in the sense of \removeEmptyStaves

     

    Related

    Issues: #1669
    Issues: #3156

  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: dak@gnu.org

    I think that an explicit removal is the wrong thing to do: a zero-height line is a "neutral element" when stacking boxes (without padding, though).  Now we are stacking skylines, and empty lyrics again should correspond to a "neutral element".  For skylines, the difference between a zero-height box and nothing at all is very significant.  Instead of juggling around with workarounds like \removeEmptyStaves, we need to make sure that skylines have "neutral elements" that don't change a contour, and that those neutral elements are produced by code supposed to have no visible output.

    That's the fundamental issue that I see in need of addressing, and not addressing that will lead to a growing heap of various workarounds piling up in various areas of LilyPond.  I think that it is very important to get consistent and predictable behavior from skylines first, and then make any callers work with that consistent and predictable behavior rather than all callers working around inconsistent and only loosely predictable behavior.

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: mts...@gmail.com

    In the text interface, the "" symbol has an empty extent (so negative height), not zero-height.  I agree with you that a zero-height element should stay.  However, by definition, an empty skyline has nothing in it, which means that measurements cannot be taken between it and adjacent skylines.

    I agree with Keith, therefore, that 3156 is the way to go for empty skylines.  If, however, you want to redefine "" so as to be a point stencil instead of an empty interval, then that's a trivial change and can be proposed in a separate patch.

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: k-ohara5...@oco.net

    My plan to resolve issue 1669 was to treat empty lines of Lyrics and Dynamics by leaving them in the conceptual stack of lines, so they advance the baseline of the next line according to the minimum-distance setting, and act transparently to the skylines of lines above and below.  (Possibly what was meant by "neutral element" above.)

    It is perfectly possible to mark off baselines, and remember the padded skylines of previous lines, in the presence of intermediate lines with empty skylines.

    However, during the planning of page-layout, we do not want to count the minimum-distance of an empty Lyrics or Dynamics line, if the user has requested \removeEmptyStaves for that line.  The rules for guessing which lines to ignore are not quite consistent, but the discussion on the patch for issue 1669 might lead to a consistent solution.

     

    Related

    Issues: #1669

  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: mts...@gmail.com

    Conceptually, things that implement the axis-group-interface have widths, heights, and skylines that are 100% linked to the elements they contain.  I think it's important to maintain this distinction.  So, for example, you could create a transparent stub grob that causes the VerticalAxisGroup of Dynamics to always have a skyline.  But this would pose the issue of where to put said baseline.  For example, in the case:

    <<
    \Staff { c,,,,,4 }
    \Lyrics { }
    \Staff { [r2] c'''''4 }
    >>

    where is the baseline established and how long is it?  If it is at the same X position as one of the two notes, it will cause radically different spacing then if it is between them.  That is why I think these axis groups should be removed all together if they have no elements - it is a conceptually cleaner approach.

    To me, removeEmpty means "if there is no musical information, remove."  That is, if there are no notes.  There may be, however, rests, time signatures, etc..  However, if there are no grobs period, then the containing axis group is empty and as it has no height apart from its elements.  Thus, a baseline cannot be established to it because it is "solid" nowhere.

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: k-ohara5...@oco.net

    > I think it's important to maintain this distinction.
    You did not describe the distinct things, between which to maintain "this distinction".

    I suggest that the two things are
    1) graphical objects, having outlines stored in a skyline, for which we allow space including the requested padding
    2) the conceptual presence of a line, whether empty or not, which we use to determine how many baseline-skips to apply, based on the basic-distance and minimum-distance property of the line.

    LilyPond keeps these concepts mostly distinct. For example we have the option remove-empty to control if an absence of events on a line should remove the entire line.  Some the page-spacing code, however, assumes that graphically empty lines are to be conceptually removed, while other code does not, raising issue 1669.

    > So, for example, you could create a transparent stub grob that causes the
    > VerticalAxisGroup of Dynamics to always have a skyline.

    Probably we do not want this (and if I understand correctly you bring it up to show why you do not want it).  Notes and protrusions from the Staff above and below often protrude through gaps in an intervening Lyrics or Dynamics line.

    > Thus, a baseline cannot be established to it because it is "solid" nowhere.

    Well, we can and do space lines based on their 'basic-distance properties when the skylines of these lines are well clear of each other.   In several cases, a graphically empty line has its baseline spaced this way---for example, the way version 2.16 sets the input at the top of this issue.

    The only place I see where the spacing code completely skip lines that are graphically empty is in align-interface.cc:get_skylines().  From the comments on issue 1669 we see that the reason for this skipping was to estimate page heights better, assuming empty lines would be removed under the remove-empty mechanism.  It would seem better to test under the actual remove-empty rules, which
    Hara_kiri_group_spanner::request_suicide (Grob *me, int start, int end)
    will do for us, without actually removing the line, so we can get the correct answers for hypothetical layouts during the line-and-page-breaking stage.

     

    Related

    Issues: #1669

  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: mts...@gmail.com

    Just to make sure, then, the idea for vertical axis groups with empty skylines that do not have remove-empty set is to omit them but tack on their basic distance (and other spacing info) to the next vertical axis group in the queue (unless it is the bottommost one)?  I can propose a patch with this change...

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: k-ohara5...@oco.net

    > the idea for vertical axis groups with empty skylines
    > that do not have remove-empty set is to omit them but ...

    Well, I would think it simpler to leave lines in place, if remove-empty is false.
    That is, leave the VerticalAxisGroup data structure in place, and let the spacing engine simply notice that there are no collisions with the empty line, so insert a spacing spring (rod) as usual with the basic(minimum)-distance.
    But you're the programmer so you can implement as you like.

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: mts...@gmail.com

    Ok. Once the solution to the EPS problem in skyline.cc is pushed I'll come back to this.

     
  • Google Importer

    Google Importer - 2013-02-09

    Originally posted by: k-ohara5...@oco.net

    The part of the patch for issue 2148, that caused the change in the example at the top of this issue, was the removal of 'horizon_padding' from skylines.  Without this padding, empty lyrics like "" have zero width (less than EPS) and are removed from the skyline, causing the skyline to be empty, causing the same confusion as in issue 1669.

    Therefore the "solution to the EPS problem" in issue 3161 will also remove the collision here.

     

    Related

    Issues: #1669
    Issues: #2148
    Issues: #3161

  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    Assuming that we want to preserve space between the vertical axis groups, the issue is that Align_interface::get_minimum_translations is returning no translation between the full lyrics and the empty lyrics.  This causes the minimum distance of the spring representing a system to be too short.  This translation is, however, read into the spacing spec for the chord names (and the phantom lyrics, although we can't see it because its empty), forcing them down on the next staff.

    The solution will likely be in getting get_minimum_translations to report better minimum translations, but it'll take me time to figure that out...

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    I think I found the culprit.  The function get_skylines in align interface has a side effect that removes elements with empty skylines from the elements list.  Side effects are evil...

    Running regtests.

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    Includes empty skylines in minimum translation calculations

    http://codereview.appspot.com/7304068

    Labels: Patch-new
    Owner: mts...@gmail.com
    Status: Started

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    The patch that I've uploaded breaks stanza numbers lining up in a column...ignore it for now...

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    Fixes StanzaNumber

    http://codereview.appspot.com/7304068

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: mts...@gmail.com

    Should work now...

     
  • Google Importer

    Google Importer - 2013-02-10

    Originally posted by: pkx1...@gmail.com

    Patchy the autobot says: passes make, make test and a full make doc.

    Labels: -Patch-new Patch-review

     
  • Google Importer

    Google Importer - 2013-02-11

    Originally posted by: dak@gnu.org

    This one looks rather confined and straightforward: should be easy to review (the use of horizon-padding seems awkward, though). I'm putting this on countdown for 2013/02/13 16:00 UTC.

    Labels: -Patch-review Patch-countdown

     
  • Google Importer

    Google Importer - 2013-02-11

    Originally posted by: mts...@gmail.com

    Avoids over-estimating pure heights of systems with removable vertical axis groups.

    http://codereview.appspot.com/7304068

    Labels: -Patch-countdown Patch-new

     
  • Google Importer

    Google Importer - 2013-02-11

    Originally posted by: mts...@gmail.com

    Restores previous translates for empty elements

    http://codereview.appspot.com/7304068

     
  • Google Importer

    Google Importer - 2013-02-16

    Originally posted by: pkx1...@gmail.com

    Keith has made some comments on patch

    Labels: -Patch-review Patch-needs_work

     
  • Google Importer

    Google Importer - 2013-02-16

    Originally posted by: k-ohara5...@oco.net

    Also, the regression test differences show that non-staff lines like Lyrics are not getting their space allowance.

    Probably we should let the patch for issue 3161 fix this issue as well, and continue the cleanup of confusion between remove-empty lines and lines that just look empty, with issue 1669, where the patch is already further along toward that goal.

     

    Related

    Issues: #1669
    Issues: #3161

1 2 > >> (Page 1 of 2)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.