I was quite happy to find the function \makeOctaves in the LSR.
But now it seems to be broken - there is no error message, but the
function doesn't do anything (2.15.36).
As I don't know _anything_ about Scheme I can't do more than ask if
anybody has an idea what has changed with LilyPond so that this function
is now broken?
I thought I could live without \makeOctaves (at least for some time).
But now I've come across a piece that practically consists of octaves ...
Any help would really be apreciated.
Best
Urs
%LSR This function was contributed by Jay Anderson.
#(define (octave-up m t)
(let* ((octave (1- t))
(new-note (ly:music-deep-copy m))
(new-pitch (ly:make-pitch
octave
(ly:pitch-notename (ly:music-property m 'pitch))
(ly:pitch-alteration (ly:music-property m 'pitch)))))
(set! (ly:music-property new-note 'pitch) new-pitch)
new-note))
#(define (octavize-chord elements t)
(cond ((null? elements) elements)
((eq? (ly:music-property (car elements) 'name) 'NoteEvent)
(cons (car elements)
(cons (octave-up (car elements) t)
(octavize-chord (cdr elements) t))))
(else (cons (car elements) (octavize-chord (cdr elements ) t)))))
#(define (octavize music t)
(if (eq? (ly:music-property music 'name) 'EventChord)
(ly:music-set-property! music 'elements (octavize-chord
(ly:music-property music 'elements) t)))
music)
makeOctaves = #(define-music-function (parser location arg mus) (integer?
ly:music?)
(music-map (lambda (x) (octavize x arg)) mus))
\relative c' {
\time 3/8
\key gis \minor
\makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8}
\makeOctaves #-1 { ais' gis dis) cis( dis<dis gis'>) }
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user