(define post-event? (make-music-type-predicate
'StringNumberEvent
'ArticulationEvent
- 'FingerEvent
+ 'FingeringEvent
'TextScriptEvent
'MultiMeasureTextEvent
'HyphenEvent
((portato) "_")
(else (format #f "\\~a" articulation)))))
-(define-post-event-display-method FingerEvent (event) #t
+(define-post-event-display-method FingeringEvent (event) #t
(ly:music-property event 'digit))
(define-post-event-display-method TextScriptEvent (event) #t
;; command_element
(format #f "~{~a ~}" (map-in-order music->lily-string elements))))))))
-(define-display-method MultiMeasureRestMusicGroup (mmrest)
- (format #f "~{~a ~}"
- (map-in-order music->lily-string
- (remove (make-music-type-predicate 'BarCheck)
- (ly:music-property mmrest 'elements)))))
+(define-display-method MultiMeasureRestMusic (mmrest)
+ (let* ((dur (ly:music-property mmrest 'duration))
+ (ly (format #f "R~a~{~a ~}"
+ (duration->lily-string dur)
+ (map-in-order music->lily-string
+ (ly:music-property mmrest 'articulations)))))
+ (*previous-duration* dur)
+ ly))
(define-display-method SkipMusic (skip)
(format #f "\\skip ~a" (duration->lily-string (ly:music-property skip 'duration) #:force-duration #t)))
(define-display-method MetronomeChangeEvent (tempo)
(format #f "\\tempo ~a = ~a"
- (duration->lily-string (ly:music-property tempo 'tempo-unit) #:force-duration #f #:prev-duration #f)
+ (duration->lily-string (ly:music-property tempo 'tempo-unit) #:force-duration #t #:prev-duration #f)
(ly:music-property tempo 'metronome-count)))
(define-display-method KeyChangeEvent (key)
(define-display-method BarCheck (check)
(format #f "|~a" (new-line->lily-string)))
-(define-display-method BreakEvent (br)
- "\\break") ;; TODO: use page-penalty, penalty properties?
-
(define-display-method PesOrFlexaEvent (expr)
"\\~")
(define-display-method ContextSpeccedMusic (expr)
(let ((id (ly:music-property expr 'context-id))
+ (create-new (ly:music-property expr 'create-new))
(music (ly:music-property expr 'element))
(operations (ly:music-property expr 'property-operations))
(ctype (ly:music-property expr 'context-type)))
(format #f "~a ~a~a~a ~a"
- (if (and (not (null? id))
- (equal? id "$uniqueContextId"))
+ (if (and (not (null? create-new)) create-new)
"\\new"
"\\context")
ctype
- (if (or (null? id)
- (equal? id "$uniqueContextId"))
+ (if (null? id)
""
(format #f " = ~s" id))
(if (null? operations)
;; special cases: \figures \lyrics \drums
(define-extra-display-method ContextSpeccedMusic (expr)
(with-music-match (expr (music 'ContextSpeccedMusic
- context-id "$uniqueContextId"
+ create-new #t
property-operations ?op
context-type ?context-type
element ?sequence))
(define-extra-display-method ContextSpeccedMusic (expr)
"If `expr' is a bar, return \"\\bar ...\".
Otherwise, return #f."
- (with-music-match (expr (music
- 'ContextSpeccedMusic
- element (music
- 'ContextSpeccedMusic
- context-type 'Timing
- element (music
- 'PropertySet
- value ?bar-type
- symbol 'whichBar))))
+ (with-music-match (expr (music 'ContextSpeccedMusic
+ context-type 'Timing
+ element (music 'PropertySet
+ value ?bar-type
+ symbol 'whichBar)))
(format #f "\\bar \"~a\"~a" ?bar-type (new-line->lily-string))))
;;; \partial
;;;
(define-display-method ApplyOutputEvent (applyoutput)
- (let ((proc (ly:music-property applyoutput 'procedure))))
- (format #f "\\applyoutput #~a"
+ (let ((proc (ly:music-property applyoutput 'procedure))
+ (ctx (ly:music-property applyoutput 'context-type)))
+ (format #f "\\applyOutput #'~a #~a"
+ ctx
(or (procedure-name proc)
(with-output-to-string
(lambda ()
- (pretty-print (procedure-source proc)))))))
+ (pretty-print (procedure-source proc))))))))
(define-display-method ApplyContext (applycontext)
- (let ((proc (ly:music-property applycontext 'procedure))))
- (format #f "\\applycontext #~a"
+ (let ((proc (ly:music-property applycontext 'procedure)))
+ (format #f "\\applyContext #~a"
(or (procedure-name proc)
(with-output-to-string
(lambda ()
- (pretty-print (procedure-source proc)))))))
+ (pretty-print (procedure-source proc))))))))
;;; \partcombine
(define-display-method PartCombineMusic (expr)
(ly:music-property expr 'quoted-music-name)
(music->lily-string (ly:music-property expr 'element)))))
+;;;
+;;; Breaks
+;;;
+(define-display-method LineBreakEvent (expr)
+ (if (null? (ly:music-property expr 'break-permission))
+ "\\noBreak"
+ "\\break"))
+
+(define-display-method PageBreakEvent (expr)
+ (if (null? (ly:music-property expr 'break-permission))
+ "\\noPageBreak"
+ "\\pageBreak"))
+
+(define-display-method PageTurnEvent (expr)
+ (if (null? (ly:music-property expr 'break-permission))
+ "\\noPageTurn"
+ "\\pageTurn"))
+
+(define-extra-display-method EventChord (expr)
+ (with-music-match (expr (music 'EventChord
+ elements ((music 'LineBreakEvent
+ break-permission 'force)
+ (music 'PageBreakEvent
+ break-permission 'force))))
+ "\\pageBreak"))
+
+(define-extra-display-method EventChord (expr)
+ (with-music-match (expr (music 'EventChord
+ elements ((music 'LineBreakEvent
+ break-permission 'force)
+ (music 'PageBreakEvent
+ break-permission 'force)
+ (music 'PageTurnEvent
+ break-permission 'force))))
+ "\\pageTurn"))
+
;;;
;;; Lyrics
;;;
(parameterize ((*explicit-mode* #f))
(music->lily-string (ly:music-property expr 'element)))))
-(define-display-method OldLyricCombineMusic (expr)
- (format #f "\\oldaddlyrics ~a~a~a"
- (music->lily-string (first (ly:music-property expr 'elements)))
- (new-line->lily-string)
- (music->lily-string (second (ly:music-property expr 'elements)))))
-
;; \addlyrics
(define-extra-display-method SimultaneousMusic (expr)
(with-music-match (expr (music 'SimultaneousMusic
elements ((music 'ContextSpeccedMusic
context-id ?id
- ;;property-operations '()
context-type 'Voice
element ?note-sequence)
(music 'ContextSpeccedMusic
- context-id "$uniqueContextId"
- ;;property-operations '()
context-type 'Lyrics
+ create-new #t
element (music 'LyricCombineMusic
associated-context ?associated-id
element ?lyric-sequence)))))