#(set-global-staff-size 17.82) #(ly:set-option 'point-and-click #f) allowPageBreak = #(make-event-chord (list (make-music 'PageBreakEvent 'break-permission 'allow))) \paper { paper-width = 8.5 \in paper-height = 11.0 \in top-margin = 0.3 \in bottom-margin = 0.3 \in left-margin = 0.5 \in right-margin = 0.5 \in line-width = 7.5 \in first-page-number = 2 print-page-number = ##f between-system-padding = 0.1 \in after-title-space = 0 \in head-separation = 0 \in indent = 0 \in ragged-bottom = ##f ragged-last-bottom = ##f blank-page-force = 1000 #(define page-breaking ly:page-turn-breaking) } \layout { \context { \Score \override NoteColumn #'force-hshift = #1.0 \override LyricText #'font-size = #'2.0 \override LyricText #'word-space = #'4.0 } } #(define page-break (make-music 'EventChord 'elements (list (make-music 'PageBreakEvent 'page-penalty -10001 'penalty -10001)))) #(define (remove-lyrics parent music start end count) (if (member 'lyric-combine-music (ly:music-property music 'types)) (begin (vector-set! count 0 (+ 1 (vector-ref count 0))) (if (or (<= (vector-ref count 0) start) (>= (vector-ref count 0) (+ end 1))) (let ((elem (ly:music-property parent 'elements))) (ly:music-set-property! parent 'elements (delete music elem) ) ) ) ) ) ) #(define (lyrics-count-helper parent music count) (if (member 'lyric-combine-music (ly:music-property music 'types)) (vector-set! count 0 (+ 1 (vector-ref count 0))) ) ) #(define (lyrics-count music) (let ((counter (vector '0)) (mymusic (ly:music-deep-copy music))) (begin (enum-music #f music (lambda (parent music) (lyrics-count-helper parent music counter) ) ) (vector-ref counter 0) ) ) ) #(define (enum-music parent music callback) (begin (callback parent music) (for-each (lambda (m) (enum-music music m callback)) (ly:music-property music 'elements) ) ) ) #(define (one-score music start count) (let ((counter (vector '0)) (mymusic (ly:music-deep-copy music))) (begin (enum-music #f mymusic (lambda (parent music) (remove-lyrics parent music start (+ start count) counter) ) ) mymusic ) ) ) #(define (do-split-verses music start count) (if (< start (lyrics-count music)) (cons (one-score music start count) (do-split-verses music (+ start count) count) ) '() ) ) #(define (split-verses parser music first rest) (begin (toplevel-music-handler parser (one-score music 0 first)) (for-each (lambda (x) (toplevel-music-handler parser x)) (do-split-verses music first rest) ) (make-music 'Music) ) ) MakeMusic = #(ly:make-music-function (list number? number? ly:music?) (lambda (parser location first rest music) (split-verses parser music first rest)))