source file of the GNU LilyPond music typesetter
- (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "timing-engraver.hh"
#include "beam.hh"
#include "stem.hh"
#include "warn.hh"
-#include "time-description.hh"
+#include "timing-translator.hh"
#include "beaming.hh"
#include "score-engraver.hh"
{
if (beam_p_)
{
- reqs_drul_[START]->warning (_ ("Already have a Beam"));
+ reqs_drul_[START]->warning (_ ("Already have a beam"));
return;
}
Translator * t = daddy_grav_l ()->get_simple_translator ("Timing_engraver");
Timing_engraver *timer = dynamic_cast<Timing_engraver*> (t);
- beam_start_location_ = (t) ? timer->time_.whole_in_measure_ : Moment (0);
+ beam_start_location_ = (t) ? timer->measure_position () : Moment (0);
beam_start_mom_ = now_mom();
beam_info_p_ = new Beaming_info_list;
/* urg, must copy to Auto_beam_engraver too */
- Scalar prop = get_property ("beamslopedamping", 0);
- if (prop.isnum_b ())
- beam_p_->set_elt_property (damping_scm_sym, gh_int2scm( prop));
-
- prop = get_property ("autoKneeGap", 0);
- if (prop.isnum_b ())
- beam_p_->set_elt_property (auto_knee_gap_scm_sym, gh_int2scm( prop));
-
- prop = get_property ("autoInterstaffKneeGap", 0);
- if (prop.isnum_b ())
- beam_p_->set_elt_property (auto_interstaff_knee_gap_scm_sym, gh_int2scm( prop));
-
- prop = get_property ("beamquantisation", 0);
- if (prop.isnum_b ())
- beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
announce_element (Score_element_info (beam_p_, reqs_drul_[START]));
}
if (beam_p_)
{
Stem* stem_l = dynamic_cast<Stem *> (info.elem_l_);
- if (!stem_l || stem_l->beam_l_)
+ if (!stem_l || stem_l->beam_l ())
return;
- bool stem_grace = stem_l->get_elt_property (grace_scm_sym) != SCM_BOOL_F;
+ bool stem_grace = stem_l->get_elt_property ("grace") == SCM_BOOL_T;
+
+ SCM wg =get_property ("weAreGraceContext");
+ bool wgb= to_boolean (wg);
- if (get_property ("weAreGraceContext",0).to_bool () != stem_grace)
+ if (wgb!= stem_grace)
return;
Rhythmic_req *rhythmic_req = dynamic_cast <Rhythmic_req *> (info.req_l_);
{
rhythmic_req->warning (_ ("Stem doesn't fit in beam"));
prev_start_req_->warning (_ ("Beam was started here"));
- return;
+ /*
+ don't return, since
+
+ [r4 c8] can just as well be modern notation.
+ */
}
- stem_l->flag_i_ = rhythmic_req->duration_.durlog_i_;
+ stem_l->set_elt_property ("duration-log",
+ gh_int2scm (rhythmic_req->duration_.durlog_i_));
Moment stem_location = now_mom () - beam_start_mom_ + beam_start_location_;
- beam_info_p_->add_stem (stem_location, rhythmic_req->duration_.durlog_i_ - 2);
+ beam_info_p_->add_stem (stem_location,
+ (rhythmic_req->duration_.durlog_i_ - 2) >? 1);
beam_p_->add_stem (stem_l);
}
}
ADD_THIS_TRANSLATOR(Beam_engraver);
+