- audio_p_ = new Audio_key (); // *key_req_l_->key_);
- Audio_element_info info (audio_p_, key_req_l_);
+ 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);
+
+ Pitch key_do (0,
+ gh_scm2int (ly_caar (pitchlist)),
+ gh_scm2int (ly_cdar (pitchlist)));
+
+ Pitch c_do (0, 0, 0);
+
+ SCM c_pitchlist
+ = ly_transpose_key_alist (pitchlist,
+ interval (key_do, c_do).smobbed_copy ());
+
+ /* MIDI keys are too limited for lilypond scales.
+ We check for minor scale and assume major otherwise. */
+ SCM minor = scm_primitive_eval (ly_symbol2scm ("minor"));
+ audio_ = new Audio_key (gh_scm2int (acc),
+ SCM_BOOL_T != scm_equal_p (minor, c_pitchlist));
+
+ Audio_element_info info (audio_, key_req_);