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
"",
/* read */
- "internalBarNumber "
+ "baseMoment "
"currentBarNumber "
+ "internalBarNumber "
"measureLength "
- "measurePosition ",
+ "measurePosition "
+ "timeSignatureFraction ",
/* write */
"baseMoment "
\consists "Repeat_acknowledge_engraver"
\consists "Staff_collecting_engraver"
- %% move the alias along with the engraver.
+ \alias "Timing"
+
+ %% An alias for Timing is established by the Timing_translator in
+ %% whatever context it is initialized, and the timing variables are
+ %% then copied from wherever Timing had been previously established.
+ %% The alias at Score level provides a target for initializing
+ %% Timing variables in layout definitions before any
+ %% Timing_translator has been run.
% timing translator must come BEFORE bar number engraver
\consists "Timing_translator"
\consists "Time_signature_performer"
\consists "Control_track_performer"
\consists "Tempo_performer"
+
+ \alias "Timing"
+
+ %% An alias for Timing is established by the Timing_translator in
+ %% whatever context it is initialized, and the timing variables are
+ %% then copied from wherever Timing had been previously established.
+ %% The alias at Score level provides a target for initializing
+ %% Timing variables in layout definitions before any
+ %% Timing_translator has been run.
+
+ timeSignatureFraction = #'(4 . 4)
+
+%% These defaults should be the same as the rules established in
+%% scm/time-signature-settings.scm for 4/4 time
+ measureLength = #(ly:make-moment 4 4)
+ baseMoment = #(ly:make-moment 1 4)
+
\consists "Timing_translator"
\defaultchild "Staff"