X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftiming-translator.cc;h=c6b245ba61b25da7b4a0223bf126d22a069ebdb7;hb=d409c67cbbdebe840220c17f796544a8a9dd193e;hp=8d456b2d38d537169ee94faa9163e17addd74d33;hpb=d61cf3bbdb1c6670a127ba3baddf2f04d3e34fd3;p=lilypond.git diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 8d456b2d38..c6b245ba61 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -46,20 +46,36 @@ Timing_translator::stop_translation_timestep () void Timing_translator::initialize () { - context ()->add_alias (ly_symbol2scm ("Timing")); - context ()->set_property ("currentBarNumber", scm_from_int (1)); - context ()->set_property ("internalBarNumber", scm_from_int (1)); + Context *timing = unsmob_context (scm_call_2 (ly_lily_module_constant ("ly:context-find"), + context ()->self_scm (), + ly_symbol2scm ("Timing"))); + if (timing != context ()) + { + context ()->add_alias (ly_symbol2scm ("Timing")); + + if (!timing) + { + programming_error ("Can't find Timing context template"); + timing = context (); + } + } + + SCM barnumber = timing->get_property ("currentBarNumber"); + if (!scm_is_integer (barnumber)) + barnumber = scm_from_int (1); + context ()->set_property ("currentBarNumber", barnumber); + context ()->set_property ("internalBarNumber", barnumber); context ()->set_property ("timeSignatureFraction", - scm_cons (scm_from_int (4), scm_from_int (4))); + timing->get_property ("timeSignatureFraction")); /* Do not init measurePosition; this should be done from global context. */ context ()->set_property ("measureLength", - Moment (Rational (1)).smobbed_copy ()); + timing->get_property ("measureLength")); context ()->set_property ("baseMoment", - Moment (Rational (1, 4)).smobbed_copy ()); + timing->get_property ("baseMoment")); } Rational @@ -144,10 +160,12 @@ ADD_TRANSLATOR (Timing_translator, "", /* read */ - "internalBarNumber " + "baseMoment " "currentBarNumber " + "internalBarNumber " "measureLength " - "measurePosition ", + "measurePosition " + "timeSignatureFraction ", /* write */ "baseMoment "