2012/7/17 James Harkins <[email protected]>: > http://lsr.dsi.unimi.it/LSR/Item?id=445 > > "Adding automatic octaves to a melody" no longer works (at least in 2.15.36). > LP throws no errors and successfully produces a PDF, but it renders the notes > exactly as written in the original music expression, without the extra > octaves. I tried in my own file, and I also tried rendering the exact code > from the snippet (which includes an example). In both, the octaves were > missing. > > How should the code be updated for a newer lilypond? > > hjh
See, http://lists.gnu.org/archive/html/lilypond-user/2012-03/msg00114.html code by David Kastrup (typo corrected) \version "2.15.39" #(define (with-octave-up m octave) (let* ((old-pitch (ly:music-property m 'pitch)) (new-note (ly:music-deep-copy m)) (new-pitch (ly:make-pitch (+ octave (ly:pitch-octave old-pitch)) (ly:pitch-notename old-pitch) (ly:pitch-alteration old-pitch)))) (set! (ly:music-property new-note 'pitch) new-pitch) (list m new-note))) #(define (octavize music t) (map-some-music (lambda (m) (cond ((music-is-of-type? m 'event-chord) (set! (ly:music-property m 'elements) (append-map! (lambda (n) (if (music-is-of-type? n 'note-event) (with-octave-up n t) (list n))) (ly:music-property m 'elements))) m) ((music-is-of-type? m 'note-event) (make-event-chord (with-octave-up m t))) (else #f))) music)) #(define-public makeOctaves (define-music-function (parser location arg mus) (integer? ly:music?) (octavize mus arg))) \makeOctaves #1 \relative c' { <c e>4 c } HTH, Harm _______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
