Several postevents including non-shorthand articulations were printed with
redundant direction flag - , command events on single note events were
missing the required direction flag - , and a few other problems.
\test ##[ { c-> c^> c_> } #]
\test ##[ { c-. c^. c_. } #]
\test ##[ { c-_ c^_ c__ } #]
\test ##[ { c-> c^> c_> } #]
\test ##[ { c-. c^. c_. } #]
\test ##[ { c-_ c^_ c__ } #]
-\test ##[ { c-\trill c^\trill c_\trill } #]
+\test ##[ { c\trill c^\trill c_\trill } #]
\test ##[ { c-1 c^2 c_3 } #] % FingerEvent
\test ##[ { c-"foo" c^"foo" c_"foo" } #] % TextScriptEvent
\test ##[ { R1*4-"foo" R^"foo" R_"foo" } #] % MultiMeasureTextEvent
\test ##[ { < c\harmonic >4 < c e\harmonic > } #] % HarmonicEvent
\test ##[ { c-1 c^2 c_3 } #] % FingerEvent
\test ##[ { c-"foo" c^"foo" c_"foo" } #] % TextScriptEvent
\test ##[ { R1*4-"foo" R^"foo" R_"foo" } #] % MultiMeasureTextEvent
\test ##[ { < c\harmonic >4 < c e\harmonic > } #] % HarmonicEvent
-\test ##[ { c-\glissando c^\glissando c_\glissando } #] % GlissandoEvent
-\test ##[ { c-\arpeggio c^\arpeggio c_\arpeggio } #] % ArpeggioEvent
+\test ##[ { c\glissando c^\glissando c_\glissando } #] % GlissandoEvent
+\test ##[ { c\arpeggio c^\arpeggio c_\arpeggio } #] % ArpeggioEvent
\test ##[ { c\p c^\ff c_\sfz } #] % AbsoluteDynamicEvent
\test ##[ { c[ c] c^[ c^] c_[ c_] } #] % BeamEvent
\test ##[ { c( c) c^( c^) c_( c_) } #] % SlurEvent
\test ##[ { c\p c^\ff c_\sfz } #] % AbsoluteDynamicEvent
\test ##[ { c[ c] c^[ c^] c_[ c_] } #] % BeamEvent
\test ##[ { c( c) c^( c^) c_( c_) } #] % SlurEvent
\test ##[ \breathe #]
\test ##[ { c \[ c \] } #] % LigatureEvent
\test ##[ \~ #] % PesOrFlexaEvent
\test ##[ \breathe #]
\test ##[ { c \[ c \] } #] % LigatureEvent
\test ##[ \~ #] % PesOrFlexaEvent
-\test ##[ { c-\bendAfter #3 } #] % BendAfterEvent
-\test ##[ < c-\rightHandFinger #1 > #] % StrokeFingerEvent
+\test ##[ c\bendAfter #3 #] % BendAfterEvent
+\test ##[ c\rightHandFinger #1 #] % StrokeFingerEvent
\test ##[ \break #]
\test ##[ \noBreak #]
\test ##[ \break #]
\test ##[ \noBreak #]
-(define-post-event-display-method ArticulationEvent (event parser) #t
- (let ((articulation (ly:music-property event 'articulation-type)))
- (case (string->symbol articulation)
- ((marcato) "^")
- ((stopped) "+")
- ((tenuto) "-")
- ((staccatissimo) "|")
- ((accent) ">")
- ((staccato) ".")
- ((portato) "_")
- (else (format #f "\\~a" articulation)))))
+(define-display-method ArticulationEvent (event parser) #t
+ (let* ((articulation (ly:music-property event 'articulation-type))
+ (shorthand
+ (case (string->symbol articulation)
+ ((marcato) "^")
+ ((stopped) "+")
+ ((tenuto) "-")
+ ((staccatissimo) "|")
+ ((accent) ">")
+ ((staccato) ".")
+ ((portato) "_")
+ (else #f))))
+ (format #f "~a~:[\\~;~]~a"
+ (event-direction->lily-string event shorthand)
+ shorthand
+ (or shorthand articulation))))
(define-post-event-display-method FingeringEvent (event parser) #t
(ly:music-property event 'digit))
(define-post-event-display-method FingeringEvent (event parser) #t
(ly:music-property event 'digit))
(define-post-event-display-method MultiMeasureTextEvent (event parser) #t
(markup->lily-string (ly:music-property event 'text)))
(define-post-event-display-method MultiMeasureTextEvent (event parser) #t
(markup->lily-string (ly:music-property event 'text)))
-(define-post-event-display-method BendAfterEvent (event parser) #t
+(define-post-event-display-method BendAfterEvent (event parser) #f
(format #f "\\bendAfter #~a" (ly:music-property event 'delta-step)))
(define-post-event-display-method HarmonicEvent (event parser) #f "\\harmonic")
(format #f "\\bendAfter #~a" (ly:music-property event 'delta-step)))
(define-post-event-display-method HarmonicEvent (event parser) #f "\\harmonic")
-(define-post-event-display-method GlissandoEvent (event parser) #t "\\glissando")
-(define-post-event-display-method ArpeggioEvent (event parser) #t "\\arpeggio")
+(define-post-event-display-method GlissandoEvent (event parser) #f "\\glissando")
+(define-post-event-display-method ArpeggioEvent (event parser) #f "\\arpeggio")
(define-post-event-display-method AbsoluteDynamicEvent (event parser) #f
(format #f "\\~a" (ly:music-property event 'text)))
(define-post-event-display-method AbsoluteDynamicEvent (event parser) #f
(format #f "\\~a" (ly:music-property event 'text)))
-(define-post-event-display-method StrokeFingerEvent (event parser) #t
+(define-post-event-display-method StrokeFingerEvent (event parser) #f
(format #f "\\rightHandFinger #~a" (ly:music-property event 'digit)))
(define-span-event-display-method BeamEvent (event parser) #f "[" "]")
(format #f "\\rightHandFinger #~a" (ly:music-property event 'digit)))
(define-span-event-display-method BeamEvent (event parser) #f "[" "]")
;;;
(define (simple-note->lily-string event parser)
;;;
(define (simple-note->lily-string event parser)
- (format #f "~a~a~a~a~a~a~{~a~}" ; pitchname octave !? octave-check duration optional_rest articulations
+ (format #f "~a~a~a~a~a~a~:{~:[-~;~]~a~}" ; pitchname octave !? octave-check duration optional_rest articulations
(note-name->lily-string (ly:music-property event 'pitch) parser)
(octave->lily-string (ly:music-property event 'pitch))
(let ((forced (ly:music-property event 'force-accidental))
(note-name->lily-string (ly:music-property event 'pitch) parser)
(octave->lily-string (ly:music-property event 'pitch))
(let ((forced (ly:music-property event 'force-accidental))
(if ((make-music-type-predicate 'RestEvent) event)
"\\rest" "")
(map-in-order (lambda (event)
(if ((make-music-type-predicate 'RestEvent) event)
"\\rest" "")
(map-in-order (lambda (event)
- (music->lily-string event parser))
+ (list
+ (post-event? event)
+ (music->lily-string event parser)))
(ly:music-property event 'articulations))))
(define-display-method NoteEvent (note parser)
(ly:music-property event 'articulations))))
(define-display-method NoteEvent (note parser)