source file of the GNU LilyPond music typesetter
- (c) 2000--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
Moment start_mom_;
Moment stop_mom_;
int flags_ ;
+ int total_duration_flags_;
+
/// location within measure where beam started.
Moment beam_start_location_;
int elt_count = seq ? scm_ilength (seq-> music_list ()) : 1;
- if (elt_count != 2)
+ if (seq && elt_count != 2)
{
rp->origin ()->warning (_f ("Chord tremolo with %d elements. Must have two elements.", elt_count));
}
Rational total_dur = l.main_part_;
Rational note_dur = total_dur / Rational (elt_count * repeat_->repeat_count ());
- if (total_dur < Rational (1,4))
- {
- /*
- This would require beams between flagged (8th) notes.
- */
- rp->origin ()->warning ("Chord tremolo is too short to denote properly.");
- }
+ total_duration_flags_ = 0 >? (intlog2 (total_dur.den ()) - 2);
flags_ = intlog2 (note_dur.den ()) -2 ;
{
if (sequential_body_b_ && !beam_)
{
- beam_ = new Spanner (get_property ("Beam"));
+ beam_ = make_spanner ("Beam");
beam_->set_grob_property ("chord-tremolo", SCM_BOOL_T);
SCM smp = get_property ("measurePosition");
{
if (flags_)
{
- stem_tremolo_ = new Item (get_property ("StemTremolo"));
+ stem_tremolo_ = make_item ("StemTremolo");
announce_grob(stem_tremolo_, repeat_->self_scm());
stem_tremolo_->set_grob_property ("flag-count",
scm_int2num (flags_));
else
Stem::set_beaming (s, flags_, LEFT);
- SCM d = s->get_grob_property ("direction");
if (Stem::duration_log (s) != 1)
{
- beam_->set_grob_property ("gap", gh_double2scm (0.8));
+ beam_->set_grob_property ("gap-count", gh_int2scm (flags_ - total_duration_flags_));
}
- s->set_grob_property ("direction", d);
if (info.music_cause ()->is_mus_type ("rhythmic-event"))
{