]> git.donarmstrong.com Git - lilypond.git/blobdiff - input/test/smart-transpose.ly
*** empty log message ***
[lilypond.git] / input / test / smart-transpose.ly
index f575610bb3820f874b92aeca887a175dc68fd1f5..1de5769f6d906ed545f48c32f0a14f4f9349a98b 100644 (file)
@@ -1,23 +1,24 @@
-\version "1.7.16"
+
+\version "2.1.28"
 
 \header {
-texidoc="
-@example
-    Here's a copy of my feature request :
-@quotation
-        Your task, if you accept it is to implement a \smarttranspose
-        command> that would translate such oddities into more natural
-        notations. Double accidentals should be removed, as well as E-sharp
-        (-> F), bC (-> B), bF (-> E), B-sharp (-> C).
-@end quotation
-
-You mean like this. (Sorry 'bout the nuked indentation.)
-
-Modified to use the standard transpose mechanism. The question is
-how useful these enharmonic modifications are. Mats B.
-@end example
+texidoc="@cindex Smart Transpose
+
+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 example, the double accidentals are removed after transposing
+C scale to Ais.
+
 "
 }
+%
+% Modified to use the standard transpose mechanism. The question is
+% how useful these enharmonic modifications are. Mats B.
+% 
+% Why not to have a function that minimizes the number of accidentals? -HJJ
+%
 
 #(define  (unhair-pitch p)
   (let* ((o (ly:pitch-octave p))
@@ -25,14 +26,16 @@ how useful these enharmonic modifications are. Mats B.
          (n (ly:pitch-notename p)))
 
     (cond
-     ((and (> a 0) (or (eq? n 6) (eq? n 2)))
-      (set! a (- a 1)) (set! n (+ n 1)))
-     ((and (< a 0) (or (eq? n 0) (eq? n 3)))
-      (set! a (+ a 1)) (set! n (- n 1))))
+     ((and (> a 2) (or (eq? n 6) (eq? n 2)))
+      (set! a (- a 2))
+      (set! n (+ n 1)))
+     ((and (< a -2) (or (eq? n 0) (eq? n 3)))
+      (set! a (+ a 2))
+      (set! n (- n 1))))
 
     (cond
-     ((eq? a 2)  (set! a 0) (set! n (+ n 1)))
-     ((eq? a -2) (set! a 0) (set! n (- n 1))))
+     ((eq? a 4) (set! a 0) (set! n (+ n 1)))
+     ((eq? a -4) (set! a 0) (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))))
@@ -40,24 +43,24 @@ how useful these enharmonic modifications are. Mats B.
     (ly:make-pitch o n a)))
 
 #(define (simplify music)
-  (let* ((es (ly:get-mus-property music 'elements))
-         (e (ly:get-mus-property music 'element))
-         (p (ly:get-mus-property music 'pitch)))
+  (let* ((es (ly:music-property music 'elements))
+         (e (ly:music-property music 'element))
+         (p (ly:music-property music 'pitch)))
 
     (if (pair? es)
-        (ly:set-mus-property!
+        (ly:music-set-property!
          music 'elements
          (map (lambda (x) (simplify x)) es)))
 
     (if (ly:music? e)
-        (ly:set-mus-property!
+        (ly:music-set-property!
          music 'element
          (simplify e)))
 
     (if (ly:pitch? p)
         (begin
           (set! p (unhair-pitch p))
-          (ly:set-mus-property! music 'pitch p)))
+          (ly:music-set-property! music 'pitch p)))
 
     music))
 
@@ -71,4 +74,4 @@ music = \notes \relative c' { c4 d  e f g a b  c }
   \paper { raggedright = ##t}
 }
 
-%% new-chords-done %%
+