+ if (key_req_)
+ {
+
+ /*
+ UGH. primitive-eval.
+ */
+ SCM pitchlist = key_req_->get_mus_property ("pitch-alist");
+ SCM proc = scm_primitive_eval (ly_symbol2scm ("accidentals-in-key"));
+ SCM acc = gh_call1 (proc, pitchlist);
+ proc = scm_primitive_eval (ly_symbol2scm ("major-key"));
+
+ Pitch my_do (0,
+ gh_scm2int (ly_caar (pitchlist)),
+ gh_scm2int (ly_cdar (pitchlist)));
+
+ Pitch to_c (-1,
+ (7 - gh_scm2int (ly_caar (pitchlist))) % 7,
+ -gh_scm2int (ly_cdar (pitchlist)));
+
+ my_do = my_do.transposed (to_c);
+ to_c = my_do.transposed (Pitch(0,0,- my_do.get_alteration ()));
+
+ SCM c_pitchlist = transpose_key_alist (pitchlist, to_c.smobbed_copy());
+ SCM major = gh_call1 (proc, c_pitchlist);
+
+ audio_ = new Audio_key (gh_scm2int (acc), major == SCM_BOOL_T);
+ Audio_element_info info (audio_, key_req_);
+ announce_element (info);
+ key_req_ = 0;
+ }