+2002-09-27 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ * input/trip.ly (fugaIILeft): add arpeggio
+
+ * lily/translator-group.cc (try_music_on_nongroup_children):
+ oops. The name symbol is in the cdr of the assoc handle.
+
+ * lily/: remove Arpeggio_req, Breathing_sign_req, Extender_req,
+ Hyphen_req, Glissando_req, Break_req, Mark_req
+
2002-09-26 Han-Wen Nienhuys <hanwen@cs.uu.nl>
* lily/musical-request.cc (music-duration-length,
\context Staff <
{
\gracetest
- \relative b, < )b2 dis fis a b cis dis> \stemUp ais4 |
+ \relative b, < )b2 dis-\arpeggio fis a b cis dis> \stemUp ais4 |
b2 b4 } \\
{ s2 e4 | fis2 fis4 }
>
private:
Item* arpeggio_;
- Arpeggio_req *arpeggio_req_;
+ Music *arpeggio_req_;
};
Arpeggio_engraver::Arpeggio_engraver ()
{
if (!arpeggio_req_)
{
- if (Arpeggio_req *a = dynamic_cast<Arpeggio_req*> (m))
- {
- arpeggio_req_ = a;
- return true;
- }
+ arpeggio_req_ = m;
}
- return false;
+ return true;
}
void
ENTER_DESCRIPTION(Arpeggio_engraver,
/* descr */ "Generate an Arpeggio from a Arpeggio_req",
/* creats*/ "Arpeggio",
-/* accepts */ "general-music",
-/* acks */ "stem-interface rhythmic-head-interface note-column-interface",
+/* accepts */ "arpeggio-event",
+/* acks */ "stem-interface rhythmic-head-interface note-column-interface",
/* reads */ "",
/* write */ "");
class Beam_engraver : public Engraver
{
protected:
- Drul_array<Span_req*> reqs_drul_;
+ Drul_array<Music*> reqs_drul_;
Spanner *finished_beam_;
Spanner *beam_;
- Span_req * prev_start_req_;
+ Music * prev_start_req_;
Beaming_info_list * beam_info_;
Beaming_info_list * finished_beam_info_;
bool
Beam_engraver::try_music (Music *m)
{
- if (Span_req * c = dynamic_cast<Span_req*> (m))
+ if (m->is_mus_type ("abort-event"))
{
- if (scm_equal_p (c->get_mus_property ("span-type"),
- scm_makfrom0str ("abort")) == SCM_BOOL_T)
- {
- reqs_drul_[START] = 0;
- reqs_drul_[STOP] = 0;
- if (beam_)
- beam_->suicide ();
- beam_ = 0;
- }
- else if (scm_equal_p (c->get_mus_property ("span-type"),
- scm_makfrom0str ("beam")) == SCM_BOOL_T)
- {
- Direction d =c->get_span_dir ();
-
+ reqs_drul_[START] = 0;
+ reqs_drul_[STOP] = 0;
+ if (beam_)
+ beam_->suicide ();
+ beam_ = 0;
+ }
+ else if (m->is_mus_type ("beam-event"))
+ {
+ Direction d = to_dir (m->get_mus_property ("span-direction"));
- if (d == STOP && !valid_end_moment())
- return false;
+ if (d == STOP && !valid_end_moment())
+ return false;
- if (d == START && !valid_start_moment ())
- return false;
+ if (d == START && !valid_start_moment ())
+ return false;
- if (d == STOP)
+ if (d == STOP)
+ {
+ SCM m = get_property ("automaticMelismata");
+ SCM b = get_property ("autoBeaming");
+ if (to_boolean (m) && !to_boolean (b))
{
- SCM m = get_property ("automaticMelismata");
- SCM b = get_property ("autoBeaming");
- if (to_boolean (m) && !to_boolean (b))
- {
- set_melisma (false);
- }
+ set_melisma (false);
}
-
- reqs_drul_[d ] = c;
- return true;
}
+
+ reqs_drul_[d ] = m;
+ return true;
}
return false;
}
if (Stem::get_beam (stem))
return;
- Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.music_cause ());
- if (!rhythmic_req)
+ Music* m = info.music_cause();
+ if (!m->is_mus_type ("rhythmic-event"))
{
String s = _ ("stem must have Rhythmic structure");
if (info.music_cause ())
last_stem_added_at_ = now;
- int durlog = unsmob_duration (rhythmic_req->get_mus_property ("duration"))-> duration_log ();
+ int durlog = unsmob_duration (m->get_mus_property ("duration"))-> duration_log ();
if (durlog <= 2)
{
- rhythmic_req->origin ()->warning (_ ("stem doesn't fit in beam"));
+ m->origin ()->warning (_ ("stem doesn't fit in beam"));
prev_start_req_->origin ()->warning (_ ("beam was started here"));
/*
don't return, since
virtual void start_translation_timestep ();
private:
- Breathing_sign_req * breathing_sign_req_;
+ Music * breathing_sign_req_;
Grob * breathing_sign_;
};
bool
Breathing_sign_engraver::try_music (Music*r)
{
- if (Breathing_sign_req * b= dynamic_cast <Breathing_sign_req *> (r))
- {
- breathing_sign_req_ = b;
- return true;
- }
-
- return false;
+ breathing_sign_req_ = r;
+ return true;
}
void
ENTER_DESCRIPTION(Breathing_sign_engraver,
/* descr */ "",
/* creats*/ "BreathingSign",
-/* accepts */ "general-music",
+/* accepts */ "breathing-event",
/* acks */ "",
/* reads */ "",
/* write */ "");
}
s->set_grob_property ("direction", d);
- if (dynamic_cast <Rhythmic_req *> (info.music_cause ()))
+ if (info.music_cause ()->is_mus_type ("rhythmic-event"))
{
Beam::add_stem (beam_, s);
}
#include "musical-request.hh"
-Tempo_req::Tempo_req ()
-{
- set_mus_property ("duration", Duration (2,0).smobbed_copy ());
-}
LY_DEFINE(transpose_key_alist,"transpose-key-alist",
-bool
-Mark_req::do_equal_b (Request const * r) const
-{
- Mark_req const * other = dynamic_cast<Mark_req const*> (r);
- return other && scm_equal_p (other->get_mus_property ("label"),
- get_mus_property ("label")) == SCM_BOOL_T;
-}
-
-ADD_MUSIC (Arpeggio_req);
ADD_MUSIC (Articulation_req);
-ADD_MUSIC (Break_req);
-ADD_MUSIC (Breathing_sign_req);
-ADD_MUSIC (Extender_req);
-ADD_MUSIC (Glissando_req);
-ADD_MUSIC (Hyphen_req);
ADD_MUSIC (Key_change_req);
ADD_MUSIC (Lyric_req);
-ADD_MUSIC (Mark_req);
-ADD_MUSIC (Melisma_playing_req);
-ADD_MUSIC (Melisma_req);
ADD_MUSIC (Porrectus_req);
ADD_MUSIC (Rhythmic_req);
ADD_MUSIC (Script_req);
-ADD_MUSIC (Skip_req);
ADD_MUSIC (Span_req);
-ADD_MUSIC (Tempo_req);
ADD_MUSIC (Text_script_req);
ADD_MUSIC (Tremolo_req);
Text_script_req* script_req_;
- Span_req * current_cresc_req_;
- Drul_array<Span_req*> accepted_spanreqs_drul_;
+ Music * current_cresc_req_;
+ Drul_array<Music*> accepted_spanreqs_drul_;
Spanner* line_spanner_;
Spanner* finished_line_spanner_;
script_req_ = dynamic_cast<Text_script_req*> (m);
return true;
}
- else if (Span_req* s = dynamic_cast <Span_req*> (m))
+ else if (m->is_mus_type ("abort-event"))
{
- String t = ly_scm2string (s->get_mus_property ("span-type"));
- if (t== "abort")
- {
- accepted_spanreqs_drul_[LEFT] = 0;
- accepted_spanreqs_drul_[RIGHT] = 0;
- /*
- Let's not kill the line spanner, since that would fuck up
- earlier, not-to-be-terminated stuff.
+ accepted_spanreqs_drul_[LEFT] = 0;
+ accepted_spanreqs_drul_[RIGHT] = 0;
+ /*
+ Let's not kill the line spanner, since that would fuck up
+ earlier, not-to-be-terminated stuff.
- It will disappear by itself when stop_translation_timestep
- () finds that there is nothing to support anymore. */
+ It will disappear by itself when stop_translation_timestep
+ () finds that there is nothing to support anymore. */
- if (cresc_)
- cresc_->suicide ();
- cresc_ = 0;
- }
- else if (t == "crescendo"
- || t == "decrescendo")
- {
- accepted_spanreqs_drul_[s->get_span_dir ()] = s;
- return true;
- }
+ if (cresc_)
+ cresc_->suicide ();
+ cresc_ = 0;
+ }
+ else if (m->is_mus_type ("decrescendo-event")
+ || m->is_mus_type ("crescendo-event"))
+ {
+ Direction d = to_dir (m->get_mus_property ("span-direction"));
+ accepted_spanreqs_drul_[d] = m;
+ return true;
}
return false;
}
{
if (current_cresc_req_)
{
- String msg = current_cresc_req_->get_span_dir () == 1
+ Direction sd = to_dir (current_cresc_req_->get_mus_property ("span-direction"));
+ String msg = sd == 1
? _ ("already have a crescendo")
: _ ("already have a decrescendo");
TODO: Use symbols.
*/
- String start_type = ly_scm2string (accepted_spanreqs_drul_[START]->get_mus_property ("span-type"));
+ String start_type =
+ ly_symbol2string (current_cresc_req_->get_mus_property ("name"));
/*
ugh. Use push/pop?
*/
+ if (start_type == "DecrescendoEvent")
+ start_type = "decrescendo";
+ else if (start_type == "CrescendoEvent")
+ start_type = "crescendo";
+
SCM s = get_property ((start_type + "Spanner").to_str0 ());
if (!gh_symbol_p (s) || s == ly_symbol2scm ("hairpin"))
{
",
/* creats*/ "DynamicLineSpanner DynamicText Hairpin TextSpanner",
-/* accepts */ "general-music",
+/* accepts */ "text-script-event crescendo-event decrescendo-event",
/* acks */ "note-column-interface script-interface",
/* reads */ "",
/* write */ "");
{
Grob *last_lyric_;
Grob *current_lyric_;
- Extender_req* req_;
+ Music* req_;
Spanner* extender_;
public:
TRANSLATOR_DECLARATIONS(Extender_engraver);
bool
Extender_engraver::try_music (Music* r)
{
- if (Extender_req* p = dynamic_cast <Extender_req *> (r))
- {
- if (req_)
- return false;
+ if (req_)
+ return false;
- req_ = p;
+ req_ = r;
return true;
- }
- return false;
}
void
ENTER_DESCRIPTION(Extender_engraver,
/* descr */ "Create lyric extenders",
/* creats*/ "LyricExtender",
-/* accepts */ "general-music",
+/* accepts */ "extender-event",
/* acks */ "lyric-syllable-interface",
/* reads */ "",
/* write */ "");
{
Grob *last_lyric_;
Grob *current_lyric_;
- Hyphen_req* req_;
+ Music* req_;
Spanner* hyphen_;
public:
TRANSLATOR_DECLARATIONS(Hyphen_engraver);
bool
Hyphen_engraver::try_music (Music* r)
{
- if (Hyphen_req* p = dynamic_cast <Hyphen_req *> (r))
- {
- if (req_)
+ if (req_)
return false;
- req_ = p;
+ req_ = r;
return true;
- }
- return false;
}
void
ENTER_DESCRIPTION(Hyphen_engraver,
/* descr */ "Create lyric hyphens",
/* creats*/ "LyricHyphen",
-/* accepts */ "general-music",
+/* accepts */ "hyphen-event",
/* acks */ "lyric-syllable-interface",
/* reads */ "",
/* write */ "");
VIRTUAL_COPY_CONS (Music);
};
-class Mark_req : public Request {
-public:
- virtual bool do_equal_b (Request const*) const;
- SCM mark_label ();
- VIRTUAL_COPY_CONS (Music);
-};
-
-/*
- int metronome_;
- */
-class Tempo_req : public Request
-{
-public:
- Tempo_req ();
-protected:
- VIRTUAL_COPY_CONS (Music);
-};
-
-class Breathing_sign_req : public Request {
- VIRTUAL_COPY_CONS (Music);
-};
-
class Porrectus_req : public Request {
VIRTUAL_COPY_CONS (Music);
};
TRANSLATOR_DECLARATIONS(Ligature_engraver);
private:
- Drul_array<Span_req*> reqs_drul_;
+ Drul_array<Music*> reqs_drul_;
- Span_req *prev_start_req_;
+ Music *prev_start_req_;
// moment where ligature started.
Moment ligature_start_mom_;
VIRTUAL_COPY_CONS (Music);
};
-class Skip_req : public Rhythmic_req {
-public:
- VIRTUAL_COPY_CONS (Music);
-};
struct Tremolo_req : public Request {
virtual bool do_equal_b (Request const*) const;
};
-class String_number_req : public Script_req
-{
-protected:
- VIRTUAL_COPY_CONS (Music);
- virtual bool do_equal_b (Request const*) const;
-};
-
/// request which has some kind of pitch
struct Melodic_req :virtual Request
{
VIRTUAL_COPY_CONS (Music);
};
-/**
-Put a rest on the staff. Why a request? It might be a good idea to not typeset the rest, if the paper is too crowded.
-*/
-class Rest_req : public Rhythmic_req {
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-
-/// an extender line
-class Extender_req : public Request {
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-/// a centred hyphen
-class Hyphen_req : public Request {
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-
-
-/**
- instruct lyric context to alter typesetting. */
-class Melisma_req : public Span_req
-{
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-
-/**
- Helping req to signal start of a melisma from within a context, and
- to */
-class Melisma_playing_req : public Request
-{
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-class Arpeggio_req : public Request
-{
-public:
- VIRTUAL_COPY_CONS (Music);
-};
-
-class Glissando_req : public Request
-{
-public:
- VIRTUAL_COPY_CONS (Music);
-};
#endif // MUSICALREQUESTS_HH
ENTER_DESCRIPTION(Key_engraver,
/* descr */ "",
/* creats*/ "KeySignature",
-/* accepts */ "general-music",
+/* accepts */ "key-change-event",
/* acks */ "bar-line-interface clef-interface",
/* reads */ "keySignature lastKeySignature explicitKeySignatureVisibility createKeyOnClefChange keyAccidentalOrder keySignature",
/* write */ "lastKeySignature");
bool
Ligature_engraver::try_music (Music *m)
{
- if (Span_req *req_ = dynamic_cast<Span_req*> (m))
+ if (m->is_mus_type ("abort-event"))
{
- if (scm_equal_p (req_->get_mus_property ("span-type"),
- scm_makfrom0str ("abort")) == SCM_BOOL_T)
- {
- reqs_drul_[START] = 0;
- reqs_drul_[STOP] = 0;
- if (ligature_)
- ligature_->suicide ();
- ligature_ = 0;
- }
- else if (scm_equal_p (req_->get_mus_property ("span-type"),
- scm_makfrom0str ("ligature")) == SCM_BOOL_T)
- {
- Direction d = req_->get_span_dir ();
- reqs_drul_[d] = req_;
- return true;
- }
+ reqs_drul_[START] = 0;
+ reqs_drul_[STOP] = 0;
+ if (ligature_)
+ ligature_->suicide ();
+ ligature_ = 0;
+ }
+ else if (m->is_mus_type ("ligature-event"))
+ {
+ Direction d = to_dir (m->get_mus_property ("span-direction"));
+ reqs_drul_[d] = m;
+ return true;
}
return false;
}
ENTER_DESCRIPTION (Ligature_engraver,
/* descr */ "Abstract class; a concrete subclass handles Ligature_requests by engraving Ligatures in a concrete style.",
/* creats*/ "Ligature",
-/* accepts */ "general-music",
+/* accepts */ "ligature-event abort-event",
/* acks */ "ligature-head-interface rest-interface",
/* reads */ "",
/* write */ "");
protected:
virtual void stop_translation_timestep ();
virtual void acknowledge_grob (Grob_info);
- void create_items (Request*);
+ void create_items (Music*);
virtual bool try_music (Music *req);
virtual void start_translation_timestep ();
virtual void process_music ();
private:
- Mark_req * mark_req_;
+ Music * mark_req_;
};
void
-Mark_engraver::create_items (Request *rq)
+Mark_engraver::create_items (Music *rq)
{
if (text_)
return;
bool
Mark_engraver::try_music (Music* r)
{
- if (Mark_req *mr = dynamic_cast <Mark_req *> (r))
- {
- if (mark_req_ && mr->equal_b (mark_req_))
- return true;
- if (mark_req_)
- return false;
- mark_req_ = mr;
- return true;
- }
- return false;
+ mark_req_ = r;
+ return true;
}
ENTER_DESCRIPTION(Mark_engraver,
/* descr */ "",
/* creats*/ "RehearsalMark",
-/* accepts */ "general-music",
-/* acks */ "bar-line-interface",
+/* accepts */ "mark-event",
+/* acks */ "bar-line-interface",
/* reads */ "rehearsalMark stavesFound",
/* write */ "");
};
+/*
+ HUH ?
+ how's this supposed to work?
+ */
bool
Melisma_engraver::try_music (Music *m)
{
- if (dynamic_cast<Melisma_playing_req*> (m))
- {
- SCM plain (get_property ("melismaBusy"));
- SCM slur (get_property ("slurMelismaBusy"));
- SCM tie (get_property ("tieMelismaBusy"));
- SCM beam (get_property ("beamMelismaBusy"));
+ SCM plain (get_property ("melismaBusy"));
+ SCM slur (get_property ("slurMelismaBusy"));
+ SCM tie (get_property ("tieMelismaBusy"));
+ SCM beam (get_property ("beamMelismaBusy"));
- if ((to_boolean (plain))
- || (to_boolean (slur))
- || (to_boolean (tie))
- || (to_boolean (beam))) {
-
- daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_T);
- return true;
- }
+ if ((to_boolean (plain))
+ || (to_boolean (slur))
+ || (to_boolean (tie))
+ || (to_boolean (beam)))
+ {
+
+ daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_T);
+ return true;
+ }
+ else
+ {
+ daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_F);
+ return false;
}
- daddy_trans_->set_property ("melismaEngraverBusy",SCM_BOOL_F);
- return false;
}
+
Melisma_engraver::Melisma_engraver()
{
}
+
ENTER_DESCRIPTION(Melisma_engraver,
/* descr */ "",
/* creats*/ "",
-/* accepts */ "general-music",
+/* accepts */ "melisma-playing-event",
/* acks */ "",
/* reads */ "melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy",
/* write */ "");
t->get_mus_property ("text"));
}
-bool
-String_number_req::do_equal_b (Request const* r) const
-{
- String_number_req const* s = dynamic_cast<String_number_req const*> (r);
- return s && gh_equal_p (get_mus_property ("string"),
- s->get_mus_property ("string"));
-}
-
-
bool
Articulation_req::do_equal_b (Request const* r) const
{
&& get_direction () == a->get_direction ();
}
-ADD_MUSIC(String_number_req);
private:
Spanner* line_;
- Request* req_;
- Request* last_req_;
+ Music* req_;
+ Music* last_req_;
Translator* last_staff_;
bool follow_;
Grob* head_;
{
if (!req_)
{
- if (Glissando_req *r = dynamic_cast<Glissando_req*> (m))
- {
- req_ = r;
- return true;
- }
+ req_ = m;
+ return true;
}
return false;
}
/* descr */ "Engrave a line between two note heads, for example a glissando.
If followVoice is set, staff switches also generate a line.",
/* creats*/ "Glissando VoiceFollower",
-/* accepts */ "general-music",
-/* acks */ "rhythmic-head-interface",
+/* accepts */ "glissando-event",
+/* acks */ "rhythmic-head-interface",
/* reads */ "followVoice",
/* write */ "");
$$ = MY_MAKE_MUSIC("TieEvent");
}
| '[' {
- Music *b= MY_MAKE_MUSIC("SpanEvent");
+ Music *b= MY_MAKE_MUSIC("BeamEvent");
b->set_mus_property ("span-direction", gh_int2scm (START))
;
- b->set_mus_property ("span-type", scm_makfrom0str ("beam"));
$$ =b;
THIS->last_beam_start_ = b->self_scm ();
}
| ']' {
- Music *b= MY_MAKE_MUSIC("SpanEvent");
- b->set_mus_property ("span-direction", gh_int2scm (STOP))
-;
- b->set_mus_property ("span-type", scm_makfrom0str ("beam"));
+ Music *b= MY_MAKE_MUSIC("BeamEvent");
+ b->set_mus_property ("span-direction", gh_int2scm (STOP));
$$ = b;
}
| BREATHE {
Music * b = MY_MAKE_MUSIC("BreakEvent");
SCM s = $2;
if (!gh_number_p (s))
- s =gh_int2scm (0);
+ s = gh_int2scm (0);
b->set_mus_property ("penalty", s);
b->set_spot (THIS->here_input ());
s->set_spot (THIS->here_input());
}
| E_SMALLER {
- Music *s =MY_MAKE_MUSIC("SpanEvent");
+ Music *s =MY_MAKE_MUSIC("CrescendoEvent");
$$ = s;
- s->set_mus_property ("span-type", scm_makfrom0str ( "crescendo"));
s->set_spot (THIS->here_input());
}
| E_BIGGER {
- Music *s =MY_MAKE_MUSIC("SpanEvent");
+ Music *s =MY_MAKE_MUSIC("DecrescendoEvent");
$$ = s;
- s->set_mus_property ("span-type", scm_makfrom0str ("decrescendo"));
s->set_spot (THIS->here_input());
}
;
open_request_parens:
E_EXCLAMATION {
- Music *s = MY_MAKE_MUSIC("SpanEvent");
- s->set_mus_property ("span-type", scm_makfrom0str ( "crescendo"));
+ Music *s = MY_MAKE_MUSIC("CrescendoEvent");
s->set_spot (THIS->here_input());
$$ = s;
{
bool gotcha = Engraver_group_engraver::try_music (r);
- if (!gotcha)
+ if (!gotcha && r->is_mus_type ("break-event"))
{
- if (Break_req* b = dynamic_cast<Break_req *> (r))
- {
- gotcha = true;
-
+ gotcha = true;
- SCM pen = command_column_->get_grob_property ("penalty");
- Real total_penalty = gh_number_p (pen)
- ? gh_scm2double (pen)
- : 0.0;
+ SCM pen = command_column_->get_grob_property ("penalty");
+ Real total_penalty = gh_number_p (pen)
+ ? gh_scm2double (pen)
+ : 0.0;
- SCM rpen = b->get_mus_property ("penalty");
- if (gh_number_p (rpen))
- total_penalty += gh_scm2double (rpen);
+ SCM rpen = r->get_mus_property ("penalty");
+ if (gh_number_p (rpen))
+ total_penalty += gh_scm2double (rpen);
- if (total_penalty > 10000.0) // ugh. arbitrary.
- forbid_breaks ();
+ if (total_penalty > 10000.0) // ugh. arbitrary.
+ forbid_breaks ();
- command_column_->set_grob_property ("penalty",
- gh_double2scm (total_penalty));
- }
+ command_column_->set_grob_property ("penalty",
+ gh_double2scm (total_penalty));
}
- return gotcha;
+ return gotcha;
}
/*
",
/* creats*/ "System PaperColumn NonMusicalPaperColumn",
-/* accepts */ "general-music",
-/* acks */ "note-spacing-interface staff-spacing-interface",
+/* accepts */ "break-event",
+/* acks */ "note-spacing-interface staff-spacing-interface",
/* reads */ "currentMusicalColumn currentCommandColumn",
/* write */ "");
virtual void create_audio_elements ();
private:
- Tempo_req* tempo_req_;
+Music* tempo_req_;
Audio_tempo* audio_;
};
-ENTER_DESCRIPTION (Tempo_performer, "","",
- "general-music",
- "","","" );
-
-
Tempo_performer::Tempo_performer ()
{
tempo_req_ = 0;
if (tempo_req_)
return false;
- if (Tempo_req *t =
- dynamic_cast <Tempo_req *> (req))
- {
- tempo_req_ = t;
+ tempo_req_ = req;
return true;
- }
-
- return false;
}
+
+
+
+ENTER_DESCRIPTION (Tempo_performer, "","",
+ "tempo-event",
+ "","","" );
}
-
-
Translator_group*
Translator_group::find_create_translator (String n, String id)
{
Translator_group::is_bottom_translator_b () const
{
return !gh_string_p (unsmob_translator_def (definition_)->default_child_context_name ());
-
}
Translator_group*
Translator_group::try_music_on_nongroup_children (Music *m )
{
SCM tab = get_property ("acceptHashTable");
- SCM name = scm_assq ( ly_symbol2scm ("name"), m->get_property_alist (false));
+ SCM name = scm_sloppy_assq (ly_symbol2scm ("name"),
+ m->get_property_alist (false));
if (!gh_pair_p (name))
return false;
- name = gh_car (name);
+ name = gh_cdr (name);
SCM accept_list = scm_hashq_ref (tab, name, SCM_UNDEFINED);
if (accept_list == SCM_BOOL_F)
{
))
(ArpeggioEvent
. (
- (internal-class-name . "Arpeggio_req")
- (types . (general-music event))
+ (internal-class-name . "Request")
+ (types . (general-music arpeggio-event event))
))
(ArticulationEvent
. (
))
(BassFigureEvent
. (
- (internal-class-name . "Bass_figure_req")
+ (internal-class-name . "Request")
(compress-procedure . ,music-duration-compress)
(length . ,music-duration-length)
(types . (general-music event rhythmic-event bass-figure-event))
))
+ (BeamEvent
+ . (
+ (internal-class-name . "Request")
+ (types . (general-music event beam-event span-event))
+ ))
(BreakEvent
. (
- (internal-class-name . "Break_req")
-
- (types . (general-music event))
- ))
+ (internal-class-name . "Request")
+ (types . (general-music break-event event))
+ ))
(BreathingSignEvent
. (
- (internal-class-name . "Breathing_sign_req")
-
+ (internal-class-name . "Request")
(types . (general-music event breathing-event))
))
(BusyPlayingEvent
. (
- (internal-class-name . "Busy_playing_req")
-
+ (internal-class-name . "Request")
(types . (general-music event busy-playing-event))
))
(ExtenderEvent
. (
- (internal-class-name . "Extender_req")
+ (internal-class-name . "Request")
(types . (general-music event))
))
(GlissandoEvent
. (
- (internal-class-name . "Glissando_req")
+ (internal-class-name . "Request")
(types . (general-music event))
))
- (GraceMusic
+ (GraceMusic
. (
(internal-class-name . "Grace_music")
(iterator-ctor . ,Grace_iterator::constructor)
))
(HyphenEvent
. (
- (internal-class-name . "Hyphen_req")
+ (internal-class-name . "Request")
(types . (general-music event))
))
(KeyChangeEvent
. (
(internal-class-name . "Key_change_req")
- (types . (general-music event))
+ (types . (general-music key-change-event event))
))
(LyricEvent
. (
))
(LigatureEvent
. (
- (internal-class-name . "Span_req")
+ (internal-class-name . "Request")
(span-type . ligature)
(types . (general-music event span-event ligature-event))
))
(MarkEvent
. (
- (internal-class-name . "Mark_req")
- (types . (general-music event))
+ (internal-class-name . "Request")
+ (types . (general-music mark-event event))
))
(MelismaEvent
. (
(internal-class-name . "Melisma_playing_req")
- (types . (general-music span-event event))
+ (types . (general-music span-event melisma-playing-event event))
))
- (Melisma_playingEvent
+ (MelismaPlayingEvent
. (
(internal-class-name . "Melisma_req")
(types . (general-music event))
(ScriptEvent
. (
(internal-class-name . "Script_req")
-
(types . (general-music event))
))
(SkipEvent
. (
(internal-class-name . "Request")
+ (length . ,music-duration-length)
+ (compress-procedure . ,music-duration-compress)
(types . (general-music event rhythmic-event skip-event))
))
(SpanEvent
(internal-class-name . "Span_req")
(types . (general-music event))
))
+ (DecrescendoEvent
+ . (
+ (internal-class-name . "Request")
+ (types . (general-music dynamic-event decrescendo-event event))
+ ))
+ (CrescendoEvent
+ . (
+ (internal-class-name . "Request")
+ (types . (general-music dynamic-event crescendo-event event))
+ ))
(StringNumberEvent
. (
- (internal-class-name . "String_number_req")
-
+ (internal-class-name . "Request")
(types . (general-music event))
))
(TempoEvent
. (
- (internal-class-name . "Tempo_req")
-
- (types . (general-music event))
+ (internal-class-name . "Request")
+ (types . (general-music tempo-event event))
))
(TextScriptEvent
. (
(props (hashq-ref music-name-to-property-table x '()))
(name (if (pair? props)
(cdr (assoc 'internal-class-name props))
- (misc-error "Can not find music object ~s" x)))
+ (error "Can not find music object" x)))
)
(if (eq? props '())
"Internal variable: store interface to engraver smob table for current context. Don't mess with this."
)
+(translator-property-description 'acceptHashTable vector? "Internal
+variable: store table with MusicName to Engraver entries.")
(translator-property-description 'aDueText string? "text for begin of a due")
(translator-property-description 'associatedVoice string? "Name of the Voice that has the melody for this LyricsVoice.")
(translator-property-description 'autoBeamSettings list? "