+ if (beam_p_)
+ {
+ Score_engraver * e = 0;
+ Translator * t = daddy_grav_l ();
+ for (; !e && t; t = t->daddy_trans_l_)
+ {
+ e = dynamic_cast<Score_engraver*> (t);
+ }
+
+ if (!e)
+ programming_error ("No score engraver!");
+ else
+ e->forbid_breaks ();
+ }
+
+ if (reqs_drul_[START])
+ {
+ if (beam_p_)
+ {
+ reqs_drul_[START]->warning (_ ("Already have a Beam"));
+ return;
+ }
+
+ prev_start_req_ = reqs_drul_[START];
+ beam_p_ = new Beam;
+
+ 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_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;