+ for (Pedal_info*p = info_list_; p && p->name_; p ++)
+ {
+ if (p->event_drul_[STOP] || p->event_drul_[START])
+ {
+ if (!p->line_spanner_)
+ {
+ String name = String (p->name_) + "PedalLineSpanner";
+ Music * rq = (p->event_drul_[START] ? p->event_drul_[START] : p->event_drul_[STOP]);
+ p->line_spanner_ = make_spanner (name.to_str0 (), rq->self_scm ());
+
+
+
+ }
+
+ /* Choose the appropriate grobs to add to the line spanner
+ These can be text items or text-spanners
+ */
+
+ /*
+ ugh, code dup, should read grob to create from other
+ property.
+
+ bracket: |_________/\____|
+ text: Ped. *Ped. *
+ mixed: Ped. _____/\____|
+ */
+
+
+ String prop = String ("pedal") + p->name_ + "Style";
+ SCM style = get_property (prop.to_str0 ());
+
+ bool mixed = style == ly_symbol2scm ("mixed");
+ bool bracket = (mixed
+ || style == ly_symbol2scm ("bracket"));
+ bool text = (style == ly_symbol2scm ("text")
+ || mixed);
+
+ if (text && !p->item_)
+ create_text_grobs (p, mixed);
+ if (bracket)
+ create_bracket_grobs (p, mixed);
+ }
+ }
+}
+
+void
+Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed)
+{
+ SCM s = SCM_EOL;
+ SCM strings = get_property ( ("pedal" + String (p->name_) + "Strings").to_str0 ());
+
+ if (scm_ilength (strings) < 3)
+ {
+ Music * m = p->event_drul_[START];
+ if (!m) m = p->event_drul_ [STOP];
+
+ String msg = _ ("Need 3 strings for piano pedals. No pedal made. ");
+ if (m)
+ m->origin ()->warning (msg);
+ else
+ warning (msg);
+
+ return ;
+ }
+
+ if (p->event_drul_[STOP] && p->event_drul_[START])