- Tuplet_spanner* glep = new Tuplet_spanner;
- started_span_p_arr_.push (glep);
- glep->number_str_ = to_str (time_scaled_music_arr_[i]->den_i_);
- announce_element (Score_element_info (glep, time_scaled_music_arr_ [i]));
+ if (tuplets_[i].bracket_)
+ continue;
+
+ tuplets_[i].bracket_ = make_spanner ("TupletBracket",
+ tuplets_[i].music_->self_scm ());
+ tuplets_[i].number_ = make_spanner ("TupletNumber",
+ tuplets_[i].music_->self_scm ());
+ tuplets_[i].number_->set_object ("bracket", tuplets_[i].bracket_->self_scm ());
+ tuplets_[i].bracket_->set_object ("tuplet-number", tuplets_[i].number_->self_scm ());
+
+ if (i > 0 && tuplets_[i - 1].bracket_)
+ Tuplet_bracket::add_tuplet_bracket (tuplets_[i].bracket_, tuplets_[i - 1].bracket_);
+
+ if (i < tuplets_.size () - 1 && tuplets_[i + 1].bracket_)
+ Tuplet_bracket::add_tuplet_bracket (tuplets_[i + 1].bracket_, tuplets_[i].bracket_);
+
+ SCM proc = get_property ("tupletNumberFormatFunction");
+ if (ly_is_procedure (proc))
+ {
+ SCM t = scm_apply_0 (proc, scm_list_1 (tuplets_[i].music_->self_scm ()));
+ tuplets_[i].number_->set_property ("text", t);
+ }