Menu

#2527 Finger-flag collision

Verified
nobody
Ugly
2015-09-19
2012-05-11
Anonymous
No

Originally created by: *anonymous

Originally created by: ma...@gregoriana.sk
Originally owned by: mts...@gmail.com

Reported by Mike Solomon:
http://lists.gnu.org/archive/html/bug-lilypond/2012-05/msg00064.html

\relative c' {
  \set fingeringOrientations = #'(right)
  <a-5 c-3>8
}

Results in flag-on-number and number-on-number collisions.

1 Attachments

Related

Issues: #3109
Issues: #3497

Discussion

<< < 1 2 3 (Page 3 of 3)
  • Google Importer

    Google Importer - 2012-12-20

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

    (No comment was entered for this change.)

    Labels: -Patch-review Patch-countdown

     
  • Google Importer

    Google Importer - 2012-12-22

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

    Uses single algorithm for side-position spacing.

    To implement this, uses grob-extent based boxes for simple skylines
    instead of stencil-extent based boxes. Stencils are still used for
    more complicated skylines.

    Generalizes algorithm used in Fingeing_column code, allowing for better
    skyline spacing and fixing some collisions.

    http://codereview.appspot.com/6827072

    Labels: -Patch-countdown Patch-new

     
  • Google Importer

    Google Importer - 2012-12-22

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

    Patchy the autobot says: passes make, make test and a full make doc.  Reg test diffs here: https://www.yousendit.com/download/WUJaQndEVEhoeVpWeHNUQw

    Labels: -Patch-new Patch-review

     
  • Google Importer

    Google Importer - 2012-12-27

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

    (No comment was entered for this change.)

    Labels: -Patch-review Patch-countdown

     
  • Google Importer

    Google Importer - 2012-12-30

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

    Counted down to 20121230, please push.

    Labels: -Patch-countdown Patch-push

     
  • Google Importer

    Google Importer - 2013-01-09

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

    Pushed as [r7d3d28de0ce6e2f018aff599cecd944d1754fe3c].

    Labels: Fixed_2_17_10
    Status: Fixed

     
  • Google Importer

    Google Importer - 2013-01-14

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

    (No comment was entered for this change.)

    Status: Verified

     
  • Google Importer

    Google Importer - 2013-08-19

    Originally posted by: dak@gnu.org

    Ok, by now I am for reverting.  I just found the following in the patch:
    +// If the grob array is unordered, we assume that duplicates should
    +// be removed. This makes sense for things like side-position-elements,
    +// which may be added recursively numerous times and thus will eat up
    +// computation time when skylines are calculated.
    +// If the array is ordered, then we don't remove duplicates.
    +
    void
    Pointer_group_interface::add_grob (Grob *me, SCM sym, Grob *p)
    {
       Grob_array *arr = get_grob_array (me, sym);
       arr->add (p);
    +  if (!arr->ordered ())
    +    arr->remove_duplicates ();
    }

    void
    @@ -81,6 +89,7 @@ Pointer_group_interface::add_unordered_grob (Grob *me, SCM sym
       Grob_array *arr = get_grob_array (me, sym);
       arr->add (p);
       arr->set_ordered (false);
    +  arr->remove_duplicates ();
    }

    What does this mean?  It means that remove_duplicates is called for every grob added with these functions, meaning O(n^2 log(n)) computational complexity.

    In particular with things like \RemoveEmptyStaves, this makes LilyPond unsuitable for large scores.

    This patch needs to be done properly, split into sensible and independent commits, and reviewed carefully.  All this has not been done and we are all at fault for it.  Apart from all the bad other side effects we've seen so far, this performance problem resulting from a mismatch of the used data structures with the desired behavior is just totally inacceptable for a stable release.

    LilyPond _has_ to remain usable for things like an opera or symphony.

    Cc: k-ohara5...@oco.net

     
  • Google Importer

    Google Importer - 2013-08-19

    Originally posted by: dak@gnu.org

    To put some numbers to it (and this includes the ps2pdf conversion):
    one = \new Staff \repeat unfold 8192 <c e g>
    two = \new Staff \with { \RemoveEmptyStaves } \repeat unfold 2048 [r1]
    \score { \new StaffGroup << \one \two \one \two \one \two \one \two \one \two >> }

    % time before [r7d3d28de0ce6e2f018aff599cecd944d1754fe3c]:
    %real    6m33.478s
    %user    6m24.216s
    %sys    0m6.676s

    % time after [r7d3d28de0ce6e2f018aff599cecd944d1754fe3c]:
    %real    7m51.206s
    %user    7m35.736s
    %sys    0m8.196s

    Now that's only a single iteration, so it's not sure that there is no other reason for variation, but it still looks ugly.

     
  • Google Importer

    Google Importer - 2013-08-21

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

    Removing just those changes noted in comment 61 does not change the compilation times of the example in comment 62.  (That is, the time LilyPond takes using the current master codebase is the same as the time she takes after removing the changes noted in comment 61.)

    Removing those changes does not change any regression tests, either, so the remove_duplicates() can be removed.  The only obvious reason for adding remove_duplicates() was an added function recursive_add_support(), but this also can be removed without changing any tests.

    Cc: -k-ohara5...@oco.net

     
  • Google Importer

    Google Importer - 2013-08-21

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

    Ok, go for it.

     
  • Google Importer

    Google Importer - 2013-08-22

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

    I remove the recursive_add_support() with the patch for issue 3503, and patchy confirmed my findings of not change.

    I did not at the time remove remove_duplicates() but since then I've found that backing out that change gives some (3%) speed-up on an orchestral score
               master        avoid remove_duplicates
    real    3m3.004s    2m55.687s
    user    2m53.331s    2m47.076s
    sys    0m1.172s    0m1.198s
    and I saw that after issue 3365 a remove_duplicates() means we sort, remove, and then un-sort the array, which is rather ugly.  I'll review backing out remove_duplicates() with issue 3503.

     

    Related

    Issues: #3365
    Issues: #3503

  • Anonymous

    Anonymous - 2015-09-19
    • Patch: push -->
     
  • Anonymous

    Anonymous - 2015-09-19

    .

     
<< < 1 2 3 (Page 3 of 3)
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.