1 %% Do not edit this file; it is auto-generated from input/new
2 %% This file is in the public domain.
5 doctitlees
= "Transportar música con el menor número de alteraciones"
7 Este ejemplo utiliza código de Scheme para forzar las
8 modificaciones enarmónicas de las notas, y así tener el menor
9 número de alteraciones accidentales. En este caso se aplican las
14 Se quitan las dobles alteraciones
30 De esta forma se selecciona el mayor número de notas enarmónicas
35 texidoc
= "This example uses some Scheme code to enforce enharmonic
36 modifications for notes in order to have the minimum number of
37 accidentals. In this case, the following rules apply:
41 Double accidentals should be removed
57 In this manner, the most natural enharmonic notes are chosen.
59 doctitle
= "Transposing music with minimum accidentals"
62 #(define
(naturalize-pitch p
)
63 (let
* ((o
(ly
:pitch-octave p
))
64 (a (* 4 (ly
:pitch-alteration p
)))
65 ; alteration
, a, in quarter tone steps
, for historical reasons
66 (n
(ly
:pitch-notename p
)))
68 ((and
(> a 1) (or
(eq? n
6) (eq? n
2)))
71 ((and
(< a -
1) (or
(eq? n
0) (eq? n
3)))
75 ((> a 2) (set
! a (-
a 4)) (set
! n
(+ n
1)))
76 ((< a -
2) (set
! a (+
a 4)) (set
! n
(- n
1))))
77 (if
(< n
0) (begin
(set
! o
(- o
1)) (set
! n
(+ n
7))))
78 (if
(> n
6) (begin
(set
! o
(+ o
1)) (set
! n
(- n
7))))
79 (ly
:make-pitch o n
(/ a 4))))
81 #(define
(naturalize music
)
82 (let
* ((es (ly
:music-property music
'elements
))
83 (e (ly
:music-property music
'element
))
84 (p
(ly
:music-property music
'pitch
)))
86 (ly
:music-set-property
!
88 (map
(lambda
(x
) (naturalize x
)) es)))
90 (ly
:music-set-property
!
95 (set
! p
(naturalize-pitch p
))
96 (ly
:music-set-property
! music
'pitch p
)))
100 #(define-music-function
(parser location m
)
104 music
= \relative c' { c4 d e g }
108 \transpose c ais \music
109 \naturalizeMusic \transpose c ais \music
110 \transpose c deses
\music
111 \naturalizeMusic \transpose c deses
\music