From 34db01fa9e221b3a73c09418c9e836b52b2b3d30 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 6 Aug 2003 13:47:03 +0000 Subject: [PATCH] (create_audio_elements): Check for minor key. Only if key is minor, set MIDI key to minor. --- ChangeLog | 5 +++++ lily/key-performer.cc | 35 ++++++++++++++--------------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6121f2fd1e..a018b99263 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2003-08-06 Jan Nieuwenhuizen + + * lily/key-performer.cc (create_audio_elements): Check for minor + key. Only if key is minor, set MIDI key to minor. + 2003-08-06 Han-Wen Nienhuys * mf/feta-eindelijk.mf (tracingvariables): add TODO. diff --git a/lily/key-performer.cc b/lily/key-performer.cc index 52d5f42e6c..d596c7399e 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -44,33 +44,26 @@ Key_performer::create_audio_elements () { 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); - - 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))); + + Pitch key_do (0, + gh_scm2int (ly_caar (pitchlist)), + 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 = ly_transpose_key_alist (pitchlist, to_c.smobbed_copy()); + 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. + /* 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)); - TODO: should probably detect minor key, though. - */ - audio_ = new Audio_key (gh_scm2int (acc), true); Audio_element_info info (audio_, key_req_); announce_element (info); key_req_ = 0; -- 2.39.5