From: Heikki Junes Date: Wed, 3 Mar 2004 23:05:55 +0000 (+0000) Subject: * input/test/smart-transpose.ly: fix cases fes->e and similar. X-Git-Tag: release/2.1.29~12 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=7a9963d5be00bbd6e2c21d85b04298bd4e71ec64;p=lilypond.git * input/test/smart-transpose.ly: fix cases fes->e and similar. handle also quarter tones (not shown as tests). test also flats. --- diff --git a/ChangeLog b/ChangeLog index 98eeea67b0..c1dba36a61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-03-04 Heikki Junes + + * input/test/smart-transpose.ly: fix cases fes->e and similar. + handle also quarter tones (not shown as tests). test also flats. + 2004-03-03 Jan Nieuwenhuizen * input/regression/new-markup-scheme.ly: Typo. diff --git a/input/test/smart-transpose.ly b/input/test/smart-transpose.ly index 1de5769f6d..8d44acd1c2 100644 --- a/input/test/smart-transpose.ly +++ b/input/test/smart-transpose.ly @@ -8,8 +8,7 @@ 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. +In that manner, the most natural enharmonic notes are chosen in this example. " } @@ -18,31 +17,32 @@ C scale to Ais. % how useful these enharmonic modifications are. Mats B. % % Why not to have a function that minimizes the number of accidentals? -HJJ +% Works also for quarter tones. -HJJ % -#(define (unhair-pitch p) +#(define (naturalise-pitch p) (let* ((o (ly:pitch-octave p)) (a (ly:pitch-alteration p)) (n (ly:pitch-notename p))) (cond - ((and (> a 2) (or (eq? n 6) (eq? n 2))) + ((and (> a 1) (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))) + ((and (< a -1) (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)))) + ((> 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))) -#(define (simplify music) +#(define (naturalise music) (let* ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element)) (p (ly:music-property music 'pitch))) @@ -50,16 +50,16 @@ C scale to Ais. (if (pair? es) (ly:music-set-property! music 'elements - (map (lambda (x) (simplify x)) es))) + (map (lambda (x) (naturalise x)) es))) (if (ly:music? e) (ly:music-set-property! music 'element - (simplify e))) + (naturalise e))) (if (ly:pitch? p) (begin - (set! p (unhair-pitch p)) + (set! p (naturalise-pitch p)) (ly:music-set-property! music 'pitch p))) music)) @@ -69,7 +69,9 @@ music = \notes \relative c' { c4 d e f g a b c } \score { \notes \context Staff { \transpose c ais \music - \apply #simplify \transpose c ais \music + \apply #naturalise \transpose c ais \music + \transpose c deses \music + \apply #naturalise \transpose c deses \music } \paper { raggedright = ##t} }