+ (for-each (lambda (func)
+ (set! music (func music parser)))
+ toplevel-music-functions)
+
+ (ly:make-score music))
+
+(define-public (collect-music-for-book parser music)
+ ;; discard music if its 'void property is true.
+ (let ((void-music (ly:music-property music 'void)))
+ (if (or (null? void-music) (not void-music))
+ (collect-scores-for-book parser (scorify-music music parser)))))
+
+
+(define-public (print-book-with-defaults parser book)
+ (let*
+ ((paper (ly:parser-lookup parser '$defaultpaper))
+ (layout (ly:parser-lookup parser '$defaultlayout))
+ (count (ly:parser-lookup parser 'output-count))
+ (base (ly:parser-output-name parser)))
+
+ (if (not (integer? count))
+ (set! count 0))
+
+ (if (> count 0)
+ (set! base (format #f "~a-~a" base count)))
+
+ (ly:parser-define! parser 'output-count (1+ count))
+ (ly:book-process book paper layout base)
+ ))
+
+(define-public (print-score-with-defaults parser score)
+ (let*
+ ((paper (ly:parser-lookup parser '$defaultpaper))
+ (layout (ly:parser-lookup parser '$defaultlayout))
+ (header (ly:parser-lookup parser '$defaultheader))
+ (count (ly:parser-lookup parser 'output-count))
+ (base (ly:parser-output-name parser)))
+
+ (if (not (integer? count))
+ (set! count 0))
+
+ (if (> count 0)
+ (set! base (format #f "~a-~a" base count)))
+
+ (ly:parser-define! parser 'output-count (1+ count))
+ (ly:score-process score header paper layout base)
+ ))
+
+