? Documentation/out ? Documentation/out-www ? Documentation/bibliography/out ? Documentation/bibliography/out-www ? Documentation/misc/out ? Documentation/misc/out-www ? Documentation/pictures/out ? Documentation/pictures/out-www ? Documentation/topdocs/out ? Documentation/topdocs/out-www ? Documentation/user/out ? Documentation/user/out-www ? buildscripts/out ? buildscripts/out-www ? cygwin/out ? cygwin/out-www ? elisp/out ? elisp/out-www ? flower/out ? flower/out-www ? flower/include/out ? flower/include/out-www ? input/out ? input/out-www ? input/mutopia/out ? input/mutopia/out-www ? input/mutopia/E.Satie/out ? input/mutopia/E.Satie/out-www ? input/mutopia/F.Schubert/out ? input/mutopia/F.Schubert/out-www ? input/mutopia/J.S.Bach/out ? input/mutopia/J.S.Bach/out-www ? input/mutopia/R.Schumann/out ? input/mutopia/R.Schumann/out-www ? input/mutopia/W.A.Mozart/out ? input/mutopia/W.A.Mozart/out-www ? input/no-notation/out ? input/no-notation/out-www ? input/regression/out ? input/regression/out-www ? input/test/out ? input/test/out-www ? input/tutorial/out ? input/tutorial/out-www ? lily/foo.pdf ? lily/foo.ps ? lily/out ? lily/out-www ? lily/include/out ? lily/include/out-www ? ly/out ? ly/out-www ? make/out ? make/out-www ? mf/feta-alphabet11.600pk ? mf/feta-alphabet11.tfm ? mf/feta-alphabet13.600pk ? mf/feta-alphabet13.tfm ? mf/feta-alphabet14.600pk ? mf/feta-alphabet14.tfm ? mf/feta-alphabet16.600pk ? mf/feta-alphabet16.tfm ? mf/feta-alphabet18.600pk ? mf/feta-alphabet18.tfm ? mf/feta-alphabet20.600pk ? mf/feta-alphabet20.tfm ? mf/feta-alphabet23.600pk ? mf/feta-alphabet23.tfm ? mf/feta-alphabet26.600pk ? mf/feta-alphabet26.tfm ? mf/feta-braces-a.600pk ? mf/feta-braces-b.600pk ? mf/feta-braces-c.600pk ? mf/feta-braces-d.600pk ? mf/feta-braces-e.600pk ? mf/feta-braces-f.600pk ? mf/feta-braces-g.600pk ? mf/feta-braces-h.600pk ? mf/feta-braces-i.600pk ? mf/feta11.600pk ? mf/feta13.600pk ? mf/feta14.600pk ? mf/feta16.600pk ? mf/feta18.600pk ? mf/feta20.600pk ? mf/feta23.600pk ? mf/feta26.600pk ? mf/out ? mf/out-www ? mf/parmesan11.600pk ? mf/parmesan13.600pk ? mf/parmesan14.600pk ? mf/parmesan16.600pk ? mf/parmesan18.600pk ? mf/parmesan20.600pk ? mf/parmesan23.600pk ? mf/parmesan26.600pk ? po/out ? po/out-www ? ps/out ? ps/out-www ? python/out ? python/out-www ? scm/out ? scm/out-www ? scripts/os ? scripts/out ? scripts/out-www ? scripts/string ? scripts/sys ? stepmake/out ? stepmake/out-www ? stepmake/bin/out ? stepmake/bin/out-www ? stepmake/stepmake/out ? stepmake/stepmake/out-www ? tex/out ? tex/out-www ? vim/out ? vim/out-www Index: lily/chord-tremolo-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/chord-tremolo-iterator.cc,v retrieving revision 1.36 diff -u -r1.36 chord-tremolo-iterator.cc --- lily/chord-tremolo-iterator.cc 24 May 2006 07:00:41 -0000 1.36 +++ lily/chord-tremolo-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -19,7 +19,7 @@ } SCM -Chord_tremolo_iterator::get_music_list () const +Chord_tremolo_iterator::get_music_list () { Music *mus = get_music (); Input *origin = mus->origin (); Index: lily/percent-repeat-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/percent-repeat-iterator.cc,v retrieving revision 1.29 diff -u -r1.29 percent-repeat-iterator.cc --- lily/percent-repeat-iterator.cc 3 Jun 2006 12:25:27 -0000 1.29 +++ lily/percent-repeat-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -19,7 +19,7 @@ } SCM -Percent_repeat_iterator::get_music_list () const +Percent_repeat_iterator::get_music_list () { /* TODO: Distinction between percent, double-percent and slash */ Music *mus = get_music (); Index: lily/sequential-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/sequential-iterator.cc,v retrieving revision 1.41 diff -u -r1.41 sequential-iterator.cc --- lily/sequential-iterator.cc 24 May 2006 07:00:41 -0000 1.41 +++ lily/sequential-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -40,7 +40,7 @@ } SCM -Sequential_iterator::get_music_list () const +Sequential_iterator::get_music_list () { return SCM_EOL; } Index: lily/sequential-music-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/sequential-music-iterator.cc,v retrieving revision 1.53 diff -u -r1.53 sequential-music-iterator.cc --- lily/sequential-music-iterator.cc 6 Jan 2006 09:13:25 -0000 1.53 +++ lily/sequential-music-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -14,7 +14,7 @@ IMPLEMENT_CTOR_CALLBACK (Sequential_music_iterator); SCM -Sequential_music_iterator::get_music_list ()const +Sequential_music_iterator::get_music_list () { return get_music ()->get_property ("elements"); } Index: lily/time-scaled-music-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/time-scaled-music-iterator.cc,v retrieving revision 1.30 diff -u -r1.30 time-scaled-music-iterator.cc --- lily/time-scaled-music-iterator.cc 24 May 2006 07:00:41 -0000 1.30 +++ lily/time-scaled-music-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -7,19 +7,79 @@ Erik Sandberg */ -#include "time-scaled-music-iterator.hh" - #include "context.hh" #include "input.hh" #include "international.hh" #include "music.hh" +#include "sequential-iterator.hh" + +/* + Iterates \times, by sending TupletEvents at the start/end of each + tuplet bracket. Extra stop/start events are sent at regular + intervals if tupletSpannerDuration is set. +*/ +class Time_scaled_music_iterator : public Sequential_iterator +{ +public: + DECLARE_SCHEME_CALLBACK (constructor, ()); + /* construction */ + DECLARE_CLASSNAME(Time_scaled_music_iterator); + Time_scaled_music_iterator (); +protected: + virtual SCM get_music_list (); + virtual void process (Moment m); + virtual Moment pending_moment () const; +private: + /* tupletSpannerDuration */ + Moment spanner_duration_; + /* next time */ + Moment next_split_mom_; + /* Recycle start/stop events. + The SCM objects are protected by Sequential_iterator. + */ + Music *start_; + Music *stop_; +}; Time_scaled_music_iterator::Time_scaled_music_iterator () { + spanner_duration_ = next_split_mom_ = 0; +} + + +Moment +Time_scaled_music_iterator::pending_moment () const +{ + Moment next_mom = Sequential_iterator::pending_moment (); + + if (spanner_duration_.to_bool () && + next_mom.main_part_ > next_split_mom_) + { + next_mom = next_split_mom_; + } + + return next_mom; +} + + +void +Time_scaled_music_iterator::process (Moment m) +{ + if (spanner_duration_.to_bool () && + m.main_part_ == next_split_mom_) + { + report_event (stop_); + report_event (start_); + next_split_mom_ += spanner_duration_; + /* avoid sending events twice at the end */ + if (next_split_mom_ == get_music ()->get_length ().main_part_) + next_split_mom_ = 0; + } + Sequential_iterator::process(m); } SCM -Time_scaled_music_iterator::get_music_list () const +Time_scaled_music_iterator::get_music_list () { Music *mus = get_music (); Input *origin = mus->origin (); @@ -28,18 +88,26 @@ /* Create tuplet start/stop span events before/after the music */ SCM tuplet_symbol = ly_symbol2scm ("TupletEvent"); SCM start_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (START)); - Music *start = unsmob_music (start_event); - start->set_spot (*origin); - start->set_property ("numerator", mus->get_property ("numerator")); - start->set_property ("denominator", mus->get_property ("denominator")); + start_ = unsmob_music (start_event); + start_->set_spot (*origin); + start_->set_property ("numerator", mus->get_property ("numerator")); + start_->set_property ("denominator", mus->get_property ("denominator")); start_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (start_event)); unsmob_music (start_event)->set_spot (*origin); SCM stop_event = scm_call_2 (ly_lily_module_constant ("make-span-event"), tuplet_symbol, scm_from_int (STOP)); - unsmob_music (stop_event)->set_spot (*origin); + stop_ = unsmob_music (stop_event); + stop_->set_spot (*origin); stop_event = scm_call_1 (ly_lily_module_constant ("make-event-chord"), scm_list_1 (stop_event)); unsmob_music (stop_event)->set_spot (*origin); + Moment *mp = unsmob_moment (get_outlet ()->get_property ("tupletSpannerDuration")); + + if (mp) + { + spanner_duration_ = mp->main_part_; + next_split_mom_ = spanner_duration_; + } return scm_list_3 (start_event, child->self_scm (), stop_event); } Index: lily/tuplet-engraver.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/tuplet-engraver.cc,v retrieving revision 1.96 diff -u -r1.96 tuplet-engraver.cc --- lily/tuplet-engraver.cc 26 May 2006 10:42:10 -0000 1.96 +++ lily/tuplet-engraver.cc 3 Jun 2006 15:37:00 -0000 @@ -166,5 +166,5 @@ /* doc */ "Catch TupletSpannerEvent and generate appropriate bracket ", /* create */ "TupletBracket TupletNumber ", /* accept */ "tuplet-spanner-event", - /* read */ "tupletNumberFormatFunction tupletSpannerDuration tupletFullLength ", + /* read */ "tupletNumberFormatFunction tupletFullLength ", /* write */ ""); Index: lily/unfolded-repeat-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/unfolded-repeat-iterator.cc,v retrieving revision 1.58 diff -u -r1.58 unfolded-repeat-iterator.cc --- lily/unfolded-repeat-iterator.cc 6 Jan 2006 09:13:24 -0000 1.58 +++ lily/unfolded-repeat-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -15,11 +15,11 @@ public: DECLARE_SCHEME_CALLBACK (constructor, ()); protected: - virtual SCM get_music_list () const; + virtual SCM get_music_list (); }; SCM -Unfolded_repeat_iterator::get_music_list () const +Unfolded_repeat_iterator::get_music_list () { SCM l = SCM_EOL; SCM *tail = &l; Index: lily/volta-repeat-iterator.cc =================================================================== RCS file: /sources/lilypond/lilypond/lily/volta-repeat-iterator.cc,v retrieving revision 1.9 diff -u -r1.9 volta-repeat-iterator.cc --- lily/volta-repeat-iterator.cc 11 Feb 2006 11:35:17 -0000 1.9 +++ lily/volta-repeat-iterator.cc 3 Jun 2006 15:37:00 -0000 @@ -19,7 +19,7 @@ void add_repeat_command (SCM); protected: - virtual SCM get_music_list () const; + virtual SCM get_music_list (); virtual void next_element (bool); virtual void construct_children (); virtual void process (Moment); @@ -37,7 +37,7 @@ } SCM -Volta_repeat_iterator::get_music_list ()const +Volta_repeat_iterator::get_music_list () { return scm_cons (get_music ()->get_property ("element"), get_music ()->get_property ("elements")); Index: lily/include/chord-tremolo-iterator.hh =================================================================== RCS file: /sources/lilypond/lilypond/lily/include/chord-tremolo-iterator.hh,v retrieving revision 1.21 diff -u -r1.21 chord-tremolo-iterator.hh --- lily/include/chord-tremolo-iterator.hh 24 May 2006 07:00:41 -0000 1.21 +++ lily/include/chord-tremolo-iterator.hh 3 Jun 2006 15:37:00 -0000 @@ -19,7 +19,7 @@ DECLARE_CLASSNAME(Chord_tremolo_iterator); Chord_tremolo_iterator (); protected: - virtual SCM get_music_list () const; + virtual SCM get_music_list (); private: }; Index: lily/include/percent-repeat-iterator.hh =================================================================== RCS file: /sources/lilypond/lilypond/lily/include/percent-repeat-iterator.hh,v retrieving revision 1.15 diff -u -r1.15 percent-repeat-iterator.hh --- lily/include/percent-repeat-iterator.hh 24 May 2006 07:00:41 -0000 1.15 +++ lily/include/percent-repeat-iterator.hh 3 Jun 2006 15:37:00 -0000 @@ -18,7 +18,7 @@ DECLARE_SCHEME_CALLBACK (constructor, ()); Percent_repeat_iterator (); protected: - virtual SCM get_music_list () const; + virtual SCM get_music_list (); private: }; Index: lily/include/sequential-iterator.hh =================================================================== RCS file: /sources/lilypond/lilypond/lily/include/sequential-iterator.hh,v retrieving revision 1.22 diff -u -r1.22 sequential-iterator.hh --- lily/include/sequential-iterator.hh 24 May 2006 07:00:41 -0000 1.22 +++ lily/include/sequential-iterator.hh 3 Jun 2006 15:37:00 -0000 @@ -38,7 +38,7 @@ protected: Music_iterator *iter_; - virtual SCM get_music_list () const; + virtual SCM get_music_list (); virtual void next_element (bool side_effect); Grace_fixup *get_grace_fixup () const; Index: lily/include/sequential-music-iterator.hh =================================================================== RCS file: /sources/lilypond/lilypond/lily/include/sequential-music-iterator.hh,v retrieving revision 1.31 diff -u -r1.31 sequential-music-iterator.hh --- lily/include/sequential-music-iterator.hh 6 Jan 2006 09:13:24 -0000 1.31 +++ lily/include/sequential-music-iterator.hh 3 Jun 2006 15:37:00 -0000 @@ -20,7 +20,7 @@ DECLARE_SCHEME_CALLBACK (constructor, ()); DECLARE_CLASSNAME(Sequential_music_iterator); private: - virtual SCM get_music_list ()const; + virtual SCM get_music_list (); }; #endif // SEQUENTIAL_MUSIC_ITERATOR_HH Index: lily/include/time-scaled-music-iterator.hh =================================================================== RCS file: /sources/lilypond/lilypond/lily/include/time-scaled-music-iterator.hh,v retrieving revision 1.17 diff -u -r1.17 time-scaled-music-iterator.hh --- lily/include/time-scaled-music-iterator.hh 24 May 2006 07:00:41 -0000 1.17 +++ lily/include/time-scaled-music-iterator.hh 3 Jun 2006 15:37:00 -0000 @@ -20,7 +20,7 @@ DECLARE_CLASSNAME(Time_scaled_music_iterator); Time_scaled_music_iterator (); protected: - virtual SCM get_music_list () const; + virtual SCM get_music_list (); private: };