#include "musical-request.hh"
#include "multi-measure-rest.hh"
#include "command-request.hh"
-#include "time-description.hh"
+#include "timing-translator.hh"
#include "engraver-group-engraver.hh"
-#include "new-repeated-music.hh"
-#include "time-description.hh"
+#include "repeated-music.hh"
+#include "timing-translator.hh"
#include "volta-spanner.hh"
#include "note-column.hh"
#include "paper-def.hh"
if (Repeated_music* r = dynamic_cast<Repeated_music *> (m))
{
if (repeated_music_l_)
- {
- m->warning ("Already have repeated music.");
- return false;
- }
+ return false;
- if (r->semi_fold_b_)
+ if (r->volta_fold_b_)
{
repeated_music_l_ = r;
}
Music_sequence* alt = repeated_music_l_->alternatives_p_;
Moment walk_mom = now_mom () + repeated_music_l_->repeat_body_p_->length_mom ();
-
+ SCM novolta = get_property ("noVoltaBraces",0);
+ bool create_volta = !to_boolean (novolta);
+
Cons_list<Bar_create_event> becel;
becel.append (new Bar_create_event (now_mom (), "|:"));
}
- Bar_create_event * c = new Bar_create_event (walk_mom, last_number+ 1,
- volta_number);
-
- if (!i->next_)
- c->last_b_ = true;
-
- becel.append (c);
- last_number = volta_number;
- volta_number ++;
-
- // should think about voltaSpannerDuration
+ if (create_volta)
+ {
+ Bar_create_event * c = new Bar_create_event (walk_mom, last_number+ 1,
+ volta_number);
+
+ if (!i->next_)
+ c->last_b_ = true;
+
+ becel.append (c);
+ last_number = volta_number;
+ volta_number ++;
+ SCM l (get_property ("voltaSpannerDuration", 0));
+ if (SMOB_IS_TYPE_B (Moment, l))
+ {
+ Moment vSD_mom = *SMOB_TO_TYPE (Moment,l);
+ if ( vSD_mom < i->car_->length_mom() ) // terminate volta early ?
+ {
+ vSD_mom += walk_mom;
+ c->last_b_ = true;
+ becel.append (new Bar_create_event (vSD_mom, "stop"));
+ }
+ }
+ }
walk_mom += i->car_->length_mom();
if (i->next_)
}
else
{
- warning ("No bar engraver found. Ignoring repeats.");
+ warning (_ ("No bar engraver found. Ignoring repeats."));
}
delete head->car_;