X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Ftie-performer.cc;h=97af3eac38814c28c96af238023ad220cba42480;hb=8e68e07fb060daf5e87ffbb51f081e720e42583c;hp=77fb9e336df5c90c70f2a30e67379d30ed642b92;hpb=40b0982cb4f00317c3d50c7f1d4e26fde912f3cd;p=lilypond.git diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc index 77fb9e336d..97af3eac38 100644 --- a/lily/tie-performer.cc +++ b/lily/tie-performer.cc @@ -113,6 +113,31 @@ Tie_performer::acknowledge_audio_element (Audio_element_info inf) it = heads_to_tie_.erase (it); } } + if (found) + return; + for (it = heads_to_tie_.begin (); + !found && (it != heads_to_tie_.end ()); + it++) + { + Audio_element_info et = (*it).head_; + Audio_note *th = dynamic_cast (et.elem_); + Stream_event *left_mus = et.event_; + + if (!(th && right_mus && left_mus)) + continue; + + SCM p1 = left_mus->get_property ("pitch"); + SCM p2 = right_mus->get_property ("pitch"); + if (Pitch::is_smob (p1) && Pitch::is_smob (p2) + && Pitch::unsmob (p1)->tone_pitch () == Pitch::unsmob (p2)->tone_pitch ()) + { + found = true; + // (*it).moment_ already stores the end of the tied note! + Moment skip = now_mom () - (*it).end_moment_; + an->tie_to (th, skip); + it = heads_to_tie_.erase (it); + } + } } }