X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=input%2Ftest%2Fsmart-transpose.ly;h=1de5769f6d906ed545f48c32f0a14f4f9349a98b;hb=ecaf73bb03e974018c17e3051b3ac3a805dd1653;hp=94603ec5d484e78d76ce133513cddc57dfc8de0e;hpb=10f0e1d58eda7e8d5f3e7d5613ca2d976620e434;p=lilypond.git diff --git a/input/test/smart-transpose.ly b/input/test/smart-transpose.ly index 94603ec5d4..1de5769f6d 100644 --- a/input/test/smart-transpose.ly +++ b/input/test/smart-transpose.ly @@ -1,24 +1,24 @@ -\version "1.9.4" +\version "2.1.28" \header { texidoc="@cindex Smart Transpose -@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 + +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)) @@ -26,13 +26,15 @@ how useful these enharmonic modifications are. Mats B. (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)))) + ((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 4) (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)))) @@ -41,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))