From: fred Date: Tue, 26 Mar 2002 23:54:45 +0000 (+0000) Subject: lilypond-1.3.76 X-Git-Tag: release/1.5.59~1360 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=79bcae6cc328f957d7d1c51a55221ff795850fdb;p=lilypond.git lilypond-1.3.76 --- diff --git a/lily/include/lyric-phrasing-engraver.hh b/lily/include/lyric-phrasing-engraver.hh index f5a410308c..75ac186e62 100644 --- a/lily/include/lyric-phrasing-engraver.hh +++ b/lily/include/lyric-phrasing-engraver.hh @@ -70,6 +70,7 @@ protected: private: void record_notehead(const String &context_id, Score_element * notehead); void record_lyric(const String &context_id, Score_element * lyric); + void record_melisma(const String &context_id); Voice_alist_entry * lookup_context_id(const String &context_id); public: @@ -93,17 +94,23 @@ class Voice_alist_entry Score_element * longest_lyric_l_; Score_element * shortest_lyric_l_; int alignment_i_; - + bool melisma_b_; public: static SCM make_entry(); void set_first_in_phrase(bool f); void set_notehead(Score_element * notehead); void add_lyric(Score_element * lyric); + void set_melisma(); + bool get_melisma() { return melisma_b_; } + int lyric_count() { return lyric_list_.size(); } void clear(); bool is_empty(); bool set_lyric_align(const char *punc, Score_element *default_notehead_l); + void adjust_melisma_align(); int appropriate_alignment(const char *punc); + Real amount_to_translate(); void next_lyric(); + void copy(Voice_alist_entry *); private: Voice_alist_entry(); DECLARE_SIMPLE_SMOBS(Voice_alist_entry,); diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc index f3b96c7fcf..e5f7ada603 100644 --- a/lily/melisma-engraver.cc +++ b/lily/melisma-engraver.cc @@ -9,6 +9,7 @@ #include "engraver.hh" #include "musical-request.hh" +#include "score-element.hh" /** Signal existence of melismas. @@ -30,9 +31,18 @@ Melisma_engraver::do_try_music (Music *m ) SCM plain (get_property ("melismaBusy")); SCM slur (get_property ("slurMelismaBusy")); SCM tie (get_property ("tieMelismaBusy")); - return (to_boolean (plain)) - || (to_boolean (slur)) - || (to_boolean (tie)); + SCM beam (get_property ("beamMelismaBusy")); + + if( (to_boolean (plain)) + || (to_boolean (slur)) + || (to_boolean (tie)) + || (to_boolean (beam))) { + + Score_element * melisma_p = new Score_element (get_property ("basicMelismaProperties")); + announce_element (melisma_p, m); + + return true; + } } return false; } diff --git a/ly/engraver.ly b/ly/engraver.ly index 0ce4a5f879..9167c65804 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -733,6 +733,9 @@ ScoreContext = \translator { (break-align-symbol . Clef_item) (visibility-lambda . ,begin-of-line-visible) ) + basicMelismaProperties = #`( + (interfaces . (melisma-interface)) + ) \accepts "Staff"; \accepts "StaffGroup";