\version "2.19.55" #(define (format-moment moment) (exact->inexact (/ (ly:moment-main-numerator moment) (ly:moment-main-denominator moment)))) #(define (grob-get-ancestor-with-interface grob interface axis) (let ((parent (ly:grob-parent grob axis))) (if (null? parent) #f (if (grob::has-interface parent interface) parent (grob-get-ancestor-with-interface parent interface axis))))) #(define (grob-get-paper-column grob) (grob-get-ancestor-with-interface grob 'paper-column-interface X)) #(define (mkvideo-dump type grob) (let* ( (paper-column (grob-get-paper-column grob)) (cause (ly:grob-property grob 'cause)) (time (ly:grob-property paper-column 'when 0)) (start (+ 0.0 (ly:moment-main time) (* (ly:moment-grace time) (/ 9 40)))) (duration (if (ly:prob? cause) (format-moment (ly:duration-length (ly:event-property cause 'duration))) 0.0)) ) (if (not (equal? (ly:grob-property grob 'transparent) #t)) (format #t "\n~8f ~a ~f" start type duration)) )) #(define (mkvideo-dump-note grob) (mkvideo-dump "note" grob)) #(define (mkvideo-dump-stem grob) (mkvideo-dump "stem" grob)) \layout { \context { \Voice \override NoteHead #'after-line-breaking = #mkvideo-dump-note \override Stem #'after-line-breaking = #mkvideo-dump-stem } } \score {{ a1 2 2 4 8 8 16 16 32 32 }}