]> git.donarmstrong.com Git - lilypond.git/commitdiff
Key signatures for modes. Fix 748.
authorKeith OHara <k-ohara5a5a@oco.net>
Sun, 27 Feb 2011 18:22:28 +0000 (10:22 -0800)
committerKeith OHara <k-ohara5a5a@oco.net>
Wed, 2 Mar 2011 07:14:30 +0000 (23:14 -0800)
Compute midi key signatures for modes with fractional alterations,
using code from Graham Breed.
Provide a keyAlterationOrder for the modes in arabic.ly.

input/regression/midi-key-signature.ly [new file with mode: 0644]
lily/key-engraver.cc
ly/arabic.ly
scm/midi.scm

diff --git a/input/regression/midi-key-signature.ly b/input/regression/midi-key-signature.ly
new file mode 100644 (file)
index 0000000..8eafbad
--- /dev/null
@@ -0,0 +1,15 @@
+\version "2.13.53"
+\header {
+  texidoc = "MIDI key signatures are output, using an approximate
+key signature if MIDI format cannot represent the true key signature"
+}
+
+\include "arabic.ly"
+\score {
+  \relative do' {
+    \key fa \bayati
+    fa4 solsb lab sib
+  }
+  \midi { }
+  \layout { }
+}
index 66b6e00a2b3bf9a2bd07143b2211b08497234360..db223e66061c8fc3dcf75e2bf0d8414cbe21ac78 100644 (file)
@@ -194,7 +194,7 @@ Key_engraver::read_event (Stream_event const *r)
          }
 
       if (warn)
-       r->origin ()->warning ("No ordering for key signature alterations");      
+       r->origin ()->warning ("Incomplete keyAlterationOrder for key signature");
     }
   
   context ()->set_property ("keySignature", scm_reverse (accs));
index 48414b473dfae6366cfa375d5a57f41602d89124..61790e5542232838b2931f5672a7e9f6818859e1 100644 (file)
@@ -33,52 +33,72 @@ dwn = {
 %
 
 bayati = #`(
-    (0 . 0)
+    (0 . ,NATURAL)
     (1 . ,SEMI-FLAT)
     (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
+    (3 . ,NATURAL)
+    (4 . ,NATURAL)
     (5 . ,FLAT)
     (6 . ,FLAT)
   )
 
 kurd = #`(
-    (0 . 0)
+    (0 . ,NATURAL)
     (1 . ,FLAT)
     (2 . ,FLAT)
-    (3 . 0)
-    (4 . 0)
+    (3 . ,NATURAL)
+    (4 . ,NATURAL)
     (5 . ,FLAT)
     (6 . ,FLAT)
     )
 
 rast = #`(
-    (0 . 0)
-    (1 . 0)
+    (0 . ,NATURAL)
+    (1 . ,NATURAL)
     (2 . ,SEMI-FLAT)
-    (3 . 0)
-    (4 . 0)
-    (5 . 0)
+    (3 . ,NATURAL)
+    (4 . ,NATURAL)
+    (5 . ,NATURAL)
     (6 . ,SEMI-FLAT)
   )
 
 sikah = #`(
-    (0 . 0)
+    (0 . ,NATURAL)
     (1 . ,SEMI-FLAT)
     (2 . ,SEMI-FLAT)
     (3 . ,SEMI-SHARP)
-    (4 . 0)
+    (4 . ,NATURAL)
     (5 . ,SEMI-FLAT)
     (6 . ,SEMI-FLAT)
   )
 
 iraq = #`(
-    (0 . 0)
+    (0 . ,NATURAL)
     (1 . ,SEMI-FLAT)
     (2 . ,SEMI-FLAT)
-    (3 . 0)
+    (3 . ,NATURAL)
     (4 . ,SEMI-FLAT)
     (5 . ,SEMI-FLAT)
     (6 . ,SEMI-FLAT)
   )
 
+\layout {
+  \context {
+    \Score
+      keyAlterationOrder =
+      #`(
+        (6 . ,FLAT) (2 . ,FLAT) (5 . ,FLAT ) (1 . ,FLAT)
+        (4 . ,FLAT) (0 . ,FLAT) (3 . ,FLAT)
+        (6 . ,SEMI-FLAT) (2 . ,SEMI-FLAT) (5 . ,SEMI-FLAT ) (1 . ,SEMI-FLAT)
+        (4 . ,SEMI-FLAT) (0 . ,SEMI-FLAT) (3 . ,SEMI-FLAT)
+        (3 . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP)
+        (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
+        (3 . ,SEMI-SHARP) (0 . ,SEMI-SHARP) (4 . ,SEMI-SHARP) (1 . ,SEMI-SHARP)
+        (5 . ,SEMI-SHARP) (2 . ,SEMI-SHARP) (6 . ,SEMI-SHARP)
+        (6 . ,DOUBLE-FLAT) (2 . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1 . ,DOUBLE-FLAT)
+        (4 . ,DOUBLE-FLAT) (0 . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
+        (3 . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (1 . ,DOUBLE-SHARP)
+        (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
+       )
+  }
+}
index 7f26bea0dcbc013ccb67c87bea63f5f136067151..a3540e60ca3195e2f3f34b4b1a3bfcffa90fd5db 100644 (file)
 (define-public (alterations-in-key pitch-list)
   "Count number of sharps minus number of flats."
 
-  (* (apply + (map cdr pitch-list)) 2))
-
+  (apply + (map (lambda (p) (round (* (cdr p) 2))) pitch-list)) )
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;