leaving away the old stuff I get to this solution - which does not work.
Any help available
Thomas
\version "2.12.1"
#(define ((shift-pitch amount) p)
(let* ((o (ly:pitch-octave p))
(a (ly:pitch-alteration p))
(n (ly:pitch-notename p)))
(set! n (+ amount n))
(while (<< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
(while (>> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
(ly:make-pitch o n a)))
#(define ((shift amount) music)
(let* ((es (ly:get-mus-property music 'elements))
(e (ly:get-mus-property music 'element))
(p (ly:get-mus-property music 'pitch))
(body (ly:get-mus-property music 'body))
(alts (ly:get-mus-property music 'alternatives)))
(if (pair? es)
(ly:set-mus-property! music 'elements
(map (shift amount) es)))
(if (ly:music? alts)
(ly:set-mus-property! music 'alternatives
((shift amount) alts)))
(if (ly:music? body)
(ly:set-mus-property! music 'body
((shift amount) body)))
(if (ly:music? e)
(ly:set-mus-property! music 'element
((shift amount) e)))
(if (ly:pitch? p)
(begin
(set! p ((shift-pitch amount) p))
(ly:set-mus-property!music 'pitch p)))
music))
seg = {c' d' e' d' }
{
\seg
\apply #(shift 1) \seg
\apply #(shift 2) \seg
}
This seems to work but i don't know if it is the same result of the original
one
%%%%%%%%%%%%%%%%%
\version "2.12.1"
#(define ((shift-pitch amount) p)
(let* ((o (ly:pitch-octave p))
(a (ly:pitch-alteration p))
(n (ly:pitch-notename p)))
(set! n (+ amount n))
(while (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
(while (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
(ly:make-pitch o n a)))
#(define ((shift amount) music)
(let* ((es (ly:music-property music 'elements))
(e (ly:music-property music 'element))
(p (ly:music-property music 'pitch))
(body (ly:music-property music 'body))
(alts (ly:music-property music 'alternatives)))
(if (pair? es)
(ly:music-set-property! music 'elements
(map (shift amount) es)))
(if (ly:music? alts)
(ly:music-set-property! music 'alternatives
((shift amount) alts)))
(if (ly:music? body)
(ly:music-set-property! music 'body
((shift amount) body)))
(if (ly:music? e)
(ly:music-set-property! music 'element
((shift amount) e)))
(if (ly:pitch? p)
(begin
(set! p ((shift-pitch amount) p))
(ly:music-set-property! music 'pitch p)))
music))
shiftMusic = #(define-music-function (parser location amount music) (number?
ly:music? )
((shift amount) music)
)
seg = {c' d' e' d' }
{
\seg
\shiftMusic #1 \seg
\shiftMusic #2 \seg
}
%%%%%%%%%%%%%%%
I think that
(ly:music-property music 'body))
(ly:music-property music 'alternatives)
doen't exist any more but i am not sure.
Gilles
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user