(melisma_busy): new function.
+2002-11-02 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * lily/lyric-combine-music-iterator.cc
+ (Lyric_combine_music_iterator): remove superfluous events.
+ (melisma_busy): new function.
+
2002-10-31 Heikki Junes <hjunes@cc.hut.fi>
* vimrc: Add shortcuts for compiling, midi-playing and PS-viewing.
2002-10-28 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ * VERSION: 1.7.5 released
+
* input/regression/finger-chords.ly (texidoc): new file.
* lily/script-engraver.cc (process_music): remove scriptHorizontal
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=7
-PATCH_LEVEL=5
+PATCH_LEVEL=6
MY_PATCH_LEVEL=
# Use the above to send patches: MY_PATCH_LEVEL is always empty for a
+++ /dev/null
-
-/*
- lyric-combine-music-iterator.hh -- declare Lyric_combine_music_iterator
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1999--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
- */
-
-#ifndef LYRIC_COMBINE_MUSIC_ITERATOR_HH
-#define LYRIC_COMBINE_MUSIC_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-class Lyric_combine_music_iterator : public Music_iterator
-{
-public:
- VIRTUAL_COPY_CONS (Music_iterator);
- Lyric_combine_music_iterator ();
- Lyric_combine_music_iterator (Lyric_combine_music_iterator const&src);
- DECLARE_SCHEME_CALLBACK(constructor, ());
-protected:
- virtual void construct_children ();
- virtual Moment pending_moment () const;
- virtual void do_quit();
- virtual void process (Moment);
- virtual Music_iterator *try_music_in_children (Music *) const;
-
- virtual bool ok () const;
- virtual void derived_mark () const;
-private:
- bool get_busy_status ()const ;
- Music_iterator * music_iter_;
- Music_iterator * lyric_iter_;
-};
-#endif /* LYRIC_COMBINE_MUSIC_ITERATOR_HH */
-
*/
#include "translator-group.hh"
-#include "lyric-combine-music-iterator.hh"
#include "lyric-combine-music.hh"
#include "event.hh"
#include "note-head.hh"
#include "grob.hh"
+#include "music-iterator.hh"
+
+class Lyric_combine_music_iterator : public Music_iterator
+{
+public:
+ VIRTUAL_COPY_CONS (Music_iterator);
+ Lyric_combine_music_iterator ();
+ Lyric_combine_music_iterator (Lyric_combine_music_iterator const&src);
+ DECLARE_SCHEME_CALLBACK(constructor, ());
+protected:
+ virtual void construct_children ();
+ virtual Moment pending_moment () const;
+ virtual void do_quit();
+ virtual void process (Moment);
+ virtual Music_iterator *try_music_in_children (Music *) const;
+
+ virtual bool ok () const;
+ virtual void derived_mark () const;
+private:
+ bool get_busy_status ()const ;
+ bool melisma_busy ();
+
+
+ Music_iterator * music_iter_;
+ Music_iterator * lyric_iter_;
+};
+
/*
Ugh, why static?
*/
Music *busy_req;
-Music *melisma_start_req;
-Music *melisma_stop_req;
Music *melisma_playing_req;
Lyric_combine_music_iterator::Lyric_combine_music_iterator ()
= make_music_by_name (ly_symbol2scm ("BusyPlayingEvent"));
melisma_playing_req
= make_music_by_name (ly_symbol2scm ("MelismaPlayingEvent"));
- melisma_stop_req
- = make_music_by_name (ly_symbol2scm ("MelismaEvent"));
- melisma_start_req
- = make_music_by_name (ly_symbol2scm ("MelismaEvent"));
-
- melisma_start_req->set_mus_property ("span-direction", gh_int2scm (START));
- melisma_stop_req->set_mus_property ("span-direction", gh_int2scm (STOP));
}
music_iter_ =0;
return false;
}
+
+bool
+Lyric_combine_music_iterator::melisma_busy ()
+{
+#if 0
+
+ Translator_group * trg = music_iter_->report_to();
+ bool melisma_busy= to_boolean (trg->get_property ("melismaBusy"));
+
+ melisma_busy = melisma_busy || to_boolean (trg->get_property ("slurMelismaBusy"));
+ melisma_busy = melisma_busy || to_boolean (trg->get_property ("tieMelismaBusy"));
+ melisma_busy = melisma_busy || to_boolean (trg->get_property ("beamMelismaBusy"));
+ return melisma_busy;
+
+#else
+
+ /*
+ The above code is nicer since it doesn't rely on a special
+ engraver to signal the melisma status. Unfortunately,
+ music_iter_->report_to() might not be the context that sets the
+ melisma properties, but rather a parent context.
+ */
+ return music_iter_->try_music (melisma_playing_req);
+#endif
+
+}
+
void
Lyric_combine_music_iterator::process (Moment m)
{
music_iter_->process (m);
- if (get_busy_status ())
+ if (get_busy_status () && !melisma_busy () && lyric_iter_->ok ())
{
- bool melisma_b = try_music (melisma_playing_req);
- if (!melisma_b)
- {
- if (lyric_iter_->ok ())
- {
- Moment m= lyric_iter_->pending_moment ();
- lyric_iter_->process (m);
- }
- }
+ Moment m= lyric_iter_->pending_moment ();
+ lyric_iter_->process (m);
}
-
}
+
void
Lyric_combine_music_iterator::do_quit ()
{
*/
#include "lyric-combine-music.hh"
-#include "lyric-combine-music-iterator.hh"
#include "pitch.hh"
Lyric_combine_music::Lyric_combine_music ()
/* accepts */ "melisma-playing-event",
/* acks */ "",
/* reads */ "melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy",
-/* write */ "");
+/* write */ "melismaEngraverBusy");
{
Music * m = unsmob_music (gh_car (s));
- if (m && m->is_mus_type ("fingering-event"))
+ if (!m)
+ continue;
+
+
+ if (m->is_mus_type ("fingering-event"))
{
add_fingering (inf.grob_ , m, note_ev);
}
+ else if (m->is_mus_type ("script-event"))
+ {
+
+ }
}
}
}
-
void
New_fingering_engraver::add_fingering (Grob * head,
Music * event,
fingerings_[i].position_ = gh_scm2int (fingerings_[i].head_ -> get_grob_property( "staff-position"));
}
-
-
Array<Finger_tuple> up, down, horiz;
-
for (int i = fingerings_.size(); i--;)
{
SCM d = fingerings_[i].finger_event_->get_mus_property ("direction");
(internal-class-name . "Event")
(types . (general-music mark-event event))
- ))
- (MelismaEvent
- . (
- (description . "")
-
- (internal-class-name . "Event")
- (types . (general-music span-event melisma-playing-event event))
- ))
+ ))
(MelismaPlayingEvent
. (
(description . "")
-
(internal-class-name . "Event")
- (types . (general-music event))
+ (types . (general-music melisma-playing-event event))
))
(MultiMeasureRestEvent
. (
default-script-alist)
)
-
-
-
(set! default-script-alist
(append
'(("accDiscant" . ((accordion "Discant" "") #f 0 1 0))
("accStdbaseTFE" . ((accordion "Stdbase" "TFE") #f 0 -1 0))
("accStdbaseMES" . ((accordion "Stdbase" "MES") #f 0 -1 0))
("accStdbaseTFMES" . ((accordion "Stdbase" "TFMES") #f 0 -1 0))
-
("accSB" . ((accordion "SB" "") #f 0 -1 0))
("accBB" . ((accordion "BB" "") #f 0 -1 0))
("accOldEE" . ((accordion "OldEE" "") #f 0 -1 0))