]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix broken snippet.
authorGraham Percival <graham@percival-music.ca>
Tue, 22 Jan 2008 05:10:22 +0000 (21:10 -0800)
committerGraham Percival <graham@percival-music.ca>
Tue, 22 Jan 2008 05:10:22 +0000 (21:10 -0800)
input/lsr/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
input/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly [new file with mode: 0644]

index f68947abbe21a7e5f30c253c4283ff8b66f8cdaf..80001e04c0e1688b97bdbddbb875b435cb597f8a 100644 (file)
@@ -1,20 +1,8 @@
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
-%% Tags: pitches
-\version "2.11.35"
-
-\header { texidoc = "
-There is a way to enforce enharmonic modifications for notes in order
-to have the minimum number of accidentals. In that case, ``Double 
-accidentals should be removed, as well as E-sharp (-> F), bC (-> B), bF
-(-> E), B-sharp (-> C).'', as proposed by a request for a new feature.
-In this manner, the most natural enharmonic notes are chosen in this
-example.
-" }
-% begin verbatim
+\version "2.11.33"
 #(define  (naturalise-pitch p)
   (let* ((o (ly:pitch-octave p))
-         (a (ly:pitch-alteration p))
+         (a (* 4 (ly:pitch-alteration p))) 
+    ; alteration, a, in quarter tone steps, for historical reasons
          (n (ly:pitch-notename p)))
 
     (cond
@@ -32,7 +20,7 @@ example.
     (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
     (if (> n 6) (begin (set!  o (+ o 1)) (set! n (- n 7))))
 
-    (ly:make-pitch o n a)))
+    (ly:make-pitch o n (/ a 4))))
 
 #(define (naturalise music)
   (let* ((es (ly:music-property music 'elements))
@@ -65,8 +53,8 @@ naturaliseMusic =
 
 \score {
    \new Staff {
-    \transpose c ais \music
-    \naturaliseMusic \transpose c ais \music 
+     \transpose c ais \music
+     \naturaliseMusic \transpose c ais \music 
     \break
     \transpose c deses \music
     \naturaliseMusic \transpose c deses \music
diff --git a/input/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly b/input/new/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
new file mode 100644 (file)
index 0000000..80001e0
--- /dev/null
@@ -0,0 +1,65 @@
+\version "2.11.33"
+#(define  (naturalise-pitch p)
+  (let* ((o (ly:pitch-octave p))
+         (a (* 4 (ly:pitch-alteration p))) 
+    ; alteration, a, in quarter tone steps, for historical reasons
+         (n (ly:pitch-notename p)))
+
+    (cond
+     ((and (> a 1) (or (eq? n 6) (eq? n 2)))
+      (set! a (- a 2))
+      (set! n (+ n 1)))
+     ((and (< a -1) (or (eq? n 0) (eq? n 3)))
+      (set! a (+ a 2))
+      (set! n (- n 1))))
+
+    (cond
+     ((> a 2) (set! a (- a 4)) (set! n (+ n 1)))
+     ((< a -2) (set! a (+ a 4)) (set! n (- n 1))))
+
+    (if (< n 0) (begin (set!  o (- o 1)) (set! n (+ n 7))))
+    (if (> n 6) (begin (set!  o (+ o 1)) (set! n (- n 7))))
+
+    (ly:make-pitch o n (/ a 4))))
+
+#(define (naturalise music)
+  (let* ((es (ly:music-property music 'elements))
+         (e (ly:music-property music 'element))
+         (p (ly:music-property music 'pitch)))
+
+    (if (pair? es)
+        (ly:music-set-property!
+         music 'elements
+         (map (lambda (x) (naturalise x)) es)))
+
+    (if (ly:music? e)
+        (ly:music-set-property!
+         music 'element
+         (naturalise e)))
+
+    (if (ly:pitch? p)
+        (begin
+          (set! p (naturalise-pitch p))
+          (ly:music-set-property! music 'pitch p)))
+
+    music))
+
+music =  \relative c' { c4 d  e f g a b  c }
+
+naturaliseMusic =
+#(define-music-function (parser location m)
+                                       (ly:music?)
+                       (naturalise m))
+
+\score {
+   \new Staff {
+     \transpose c ais \music
+     \naturaliseMusic \transpose c ais \music 
+    \break
+    \transpose c deses \music
+    \naturaliseMusic \transpose c deses \music
+  }
+  \layout { ragged-right = ##t}
+}
+
+