+ /*
+ ugh. Use push/pop?
+ */
+ SCM s = get_property ((start_type + "Spanner").ch_C ());
+ if (!gh_symbol_p (s) || s == ly_symbol2scm ("hairpin"))
+ {
+ cresc_p_ = new Spanner (get_property ("Hairpin"));
+ cresc_p_->set_grob_property ("grow-direction",
+ gh_int2scm ((start_type == "crescendo")
+ ? BIGGER : SMALLER));
+
+ }
+ /*
+ This is a convenient (and legacy) interface to TextSpanners
+ for use in (de)crescendi.
+ Hmm.
+ */
+ else
+ {
+ cresc_p_ = new Spanner (get_property ("TextSpanner"));
+ cresc_p_->set_interface (ly_symbol2scm ("dynamic-interface"));
+ cresc_p_->set_grob_property ("type", s);
+
+ daddy_trans_l_->set_property ((start_type
+ + "Spanner").ch_C(), SCM_UNDEFINED);
+ s = get_property ((start_type + "Text").ch_C ());
+ /*
+ FIXME: use markup_p () to check type.
+ */
+ if (gh_string_p (s) || gh_pair_p (s))
+ {
+ cresc_p_->set_grob_property ("edge-text",
+ gh_cons (s, ly_str02scm ("")));
+ daddy_trans_l_->set_property ((start_type + "Text").ch_C(),
+ SCM_UNDEFINED);
+ }
+ }