+ sp-> set_mus_property ("context-type", ly_str02scm ( "Score"));
+ }
+ | CLEF STRING {
+ SCM func = scm_primitive_eval (ly_symbol2scm ("clef-name-to-properties"));
+ SCM result = gh_call1 (func, $2);
+
+ SCM l = SCM_EOL;
+ for (SCM s = result ; gh_pair_p (s); s = ly_cdr (s)) {
+ Music * p = new Music (SCM_EOL);
+ set_music_properties (p, ly_car (s));
+ l = gh_cons (p->self_scm (), l);
+ scm_gc_unprotect_object (p->self_scm ());
+ }
+ Sequential_music * seq = new Sequential_music (SCM_EOL);
+ seq->set_mus_property ("elements", l);
+
+ Context_specced_music * sp = new Context_specced_music (SCM_EOL);
+ sp->set_mus_property ("element", seq->self_scm ());
+ scm_gc_unprotect_object (seq->self_scm ());
+
+ $$ =sp ;
+ sp-> set_mus_property ("context-type", ly_str02scm ("Staff"));
+ }
+ | TIME_T fraction {
+ Music * p1 = set_property_music (ly_symbol2scm ( "timeSignatureFraction"), $2);
+
+ int l = gh_scm2int (ly_car ($2));
+ int o = gh_scm2int (ly_cdr ($2));
+
+ Moment one_beat = Moment (1)/Moment (o);
+ Moment len = Moment (l) * one_beat;
+
+
+ Music *p2 = set_property_music (ly_symbol2scm ("measureLength"), len.smobbed_copy ());
+ Music *p3 = set_property_music (ly_symbol2scm ("beatLength"), one_beat.smobbed_copy ());
+
+ SCM list = scm_list_n (p1->self_scm (), p2->self_scm (), p3->self_scm(), SCM_UNDEFINED);
+ Sequential_music *seq = new Sequential_music (SCM_EOL);
+ seq->set_mus_property ("elements", list);
+
+
+ Context_specced_music * sp = new Context_specced_music (SCM_EOL);
+ sp->set_mus_property ("element", seq->self_scm ());
+
+
+
+ scm_gc_unprotect_object (p3->self_scm ());
+ scm_gc_unprotect_object (p2->self_scm ());
+ scm_gc_unprotect_object (p1->self_scm ());
+ scm_gc_unprotect_object (seq->self_scm ());
+
+ $$ = sp;
+
+/*
+ TODO: should make alias TimingContext for Score
+*/
+
+ sp-> set_mus_property ("context-type", ly_str02scm ( "Score"));