- last_time_fraction_ = fr;
- time_signature_p_ = new Item (get_property ("TimeSignature"));
- time_signature_p_->set_elt_property ("fraction",fr);
-
- if (time_signature_p_)
- announce_element (time_signature_p_, 0);
+ int den = scm_to_int (scm_cdr (fr));
+ if (den != (1 << intlog2 (den)))
+ {
+ /*
+ Todo: should make typecheck?
+
+ OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+ */
+ warning (_f ("strange time signature found: %d/%d",
+ int (scm_to_int (scm_car (fr))),
+ den));
+ }
+
+ time_signature_ = make_item ("TimeSignature", SCM_EOL);
+ time_signature_->set_property ("fraction", fr);
+
+ if (last_time_fraction_ == SCM_BOOL_F)
+ time_signature_->set_property ("break-visibility",
+ get_property ("implicitTimeSignatureVisibility"));
+
+ last_time_fraction_ = fr;