Hi Jean, As always… remarkable.
One question: How hard would it be to have this output more precise timings (e.g., 1/4 or 1/10th or 1/100th of a second, or SMPTE timecode in minutes:seconds:frames)? I could imagine this being *very* useful for film/video/media composers. Thanks! Kieren. > On Mar 14, 2024, at 5:45 PM, Jean Abou Samra <j...@abou-samra.fr> wrote: > >> “This sounds like a job for… Custom Engraver!!” :) > > \version "2.24.2" > > #(define (Custom_engraver!! context) > (define (format-time seconds) > (let ((minutes (euclidean-quotient seconds 60)) > (rest (euclidean-remainder seconds 60))) > (string-append (if (zero? minutes) "" (format #f "~am" minutes)) > (format #f "~as" (round rest))))) > (let ((wholes-per-minute 15) > (last-time ZERO-MOMENT) > (total-time 0) > (marks '())) > (make-engraver > ((process-music engraver) > (let* ((new-time (ly:context-current-moment context)) > (time-delta (ly:moment-main (ly:moment-sub new-time last-time))) > (new-wholes-per-minute > (and=> (ly:context-property context 'tempoWholesPerMinute #f) > ly:moment-main))) > (set! total-time > (+ total-time (* 60 (/ time-delta wholes-per-minute)))) > (set! last-time new-time) > (when new-wholes-per-minute > (set! wholes-per-minute new-wholes-per-minute)))) > (acknowledgers > ((text-mark-interface engraver grob source-engraver) > (set! marks (cons grob marks)))) > ((process-acknowledged engraver) > (for-each (lambda (grob) > (when (assq-ref (ly:grob-property grob 'details) 'time-mark) > (ly:grob-set-property! grob 'text (format-time > total-time)))) > marks) > (set! marks '()))))) > > \layout { > \context { > \Score > \consists #Custom_engraver!! > } > } > > timeMark = \tweak details.time-mark ##t \tweak color "red" \textEndMark > "Abracadabra" > > { > c'1 > \timeMark > \tempo 4 = 120 > c'4 8. 16 2 > \timeMark > \tempo 4 = 180 > c'2 2 > \timeMark > \repeat unfold 180 c'4 > \timeMark > } > ______________________________________________ My work day may look different than your work day. Please do not feel obligated to read or respond to this email outside of your normal working hours.