beam_count_drul_[RIGHT] = 0;
invisible_ = false;
factor_ = Rational (1);
-
+ tuplet_start_ = false;
}
-Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv, Rational factor)
+Beam_rhythmic_element::Beam_rhythmic_element (Moment m, int i, bool inv,
+ Rational factor, bool tuplet_start)
{
start_moment_ = m;
rhythmic_importance_ = 0;
beam_count_drul_[RIGHT] = i;
invisible_ = inv;
factor_ = factor;
+ tuplet_start_ = tuplet_start;
}
void
Moment tuplet_moment (tuplet);
Moment tuplet_dt = infos_[i].start_moment_ - tuplet_start_moment;
tuplet_number = tuplet.den ();
- // set the beat end (if not in a tuplet) and increment the next beat
- if (tuplet_number == 1 && infos_[i].start_moment_ == next_beat_pos)
+ // set the beat end and increment the next beat
+ if (infos_[i].start_moment_ == next_beat_pos)
{
infos_[i].rhythmic_importance_ = -1;
next_beat_pos += options.base_moment_;
}
void
-Beaming_pattern::add_stem (Moment m, int b, bool invisible, Rational factor)
+Beaming_pattern::add_stem (Moment m, int b, bool invisible, Rational factor, bool tuplet_start)
{
- infos_.push_back (Beam_rhythmic_element (m, b, invisible, factor));
+ infos_.push_back (Beam_rhythmic_element (m, b, invisible, factor, tuplet_start));
}
Beaming_pattern::Beaming_pattern ()
Moment
Beaming_pattern::end_moment (int i) const
{
- Duration *dur = new Duration (2 + max (beamlet_count (i, LEFT),
- beamlet_count (i, RIGHT)),
- 0);
+ Duration dur (2 + max (beamlet_count (i, LEFT),
+ beamlet_count (i, RIGHT)),
+ 0);
- return infos_.at (i).start_moment_ + dur->get_length ();
+ return infos_.at (i).start_moment_
+ + infos_.at(i).factor_ * dur.get_length ();
}
bool
return infos_.at (i).factor_;
}
+bool
+Beaming_pattern::tuplet_start (int i) const
+{
+ return infos_.at (i).tuplet_start_;
+}
+
/*
Split a beaming pattern at index i and return a new
Beaming_pattern containing the removed elements
new_pattern->add_stem (start_moment (j),
count,
invisibility (j),
- factor (j));
+ factor (j),
+ tuplet_start (j));
}
for (vsize j = i + 1; j < infos_.size ();)
infos_.pop_back ();