hi all, patch and an example below.
this may look academical, but I need this feature when transcribing renaissance music - for real life examples see http://wiki.lilynet.net/index.php/Benkop_projects the Ockeghem and la Rue examples. I want to handle rests also; could someone help me with advice? in particular, should I add a listen_rest or handle it fully within note handling? thanks, Pal diff --git a/lily/completion-note-heads-engraver.cc b/lily/completion-note- heads-engraver.cc index 3e507ec..fee5791 100644 --- a/lily/completion-note-heads-engraver.cc +++ b/lily/completion-note-heads-engraver.cc @@ -87,6 +87,8 @@ class Completion_heads_engraver : public Engraver Rational left_to_do_; Rational do_nothing_until_; + Rational factor_; + Moment next_barline_moment (); Item *make_note_head (Stream_event*); @@ -187,16 +189,17 @@ Completion_heads_engraver::process_music () Duration note_dur; Duration *orig = 0; if (left_to_do_) - note_dur = Duration (left_to_do_, false); + note_dur = Duration (left_to_do_ / factor_, false).compressed (factor_); else { orig = unsmob_duration (note_events_[0]->get_property ("duration")); note_dur = *orig; + factor_ = note_dur.factor (); } Moment nb = next_barline_moment (); if (nb.main_part_ && nb < note_dur.get_length ()) { - note_dur = Duration (nb.main_part_, false); + note_dur = Duration (nb.main_part_ / factor_, false).compressed (factor_); do_nothing_until_ = now.main_part_ + note_dur.get_length (); } \version "2.13.20" { b2 b8 b2. ~ b4. b4 \set tupletSpannerDuration = #(ly:make-moment 1 1) \times 2/3 { b1 b b } b2 \set tupletSpannerDuration = #(ly:make-moment 1 2) \times 2/3 { b2 b b } b2 % this still looks silly \times 2/3 { b2 b b } \set Staff.timeSignatureFraction = #'(6 . 4) \scaleDurations #'(2 . 3) { b1 b b b4 b\maxima......... b4 b64 } \time 4/4 b\maxima......... } \layout { \context { \Voice \remove "Note_heads_engraver" \consists "Completion_heads_engraver" } } _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel