A final point on this thread. These better functions now count the notes in the tuplet, calculate durations and ratios, and lay it out. It's therefore a way of filling a time span with a sequence of notes without having to calculate possibly complex ratios. However, I can't work out why the "\once override.... " line inserted in the makeTuplet function is ignored. Maybe it should be possible to add a \note to the 'numerator and 'denominator elements in this block, but I just can't work it out. Can anyone help solve this? Cheers.
Peter \version "2.11.49" #(define (count-notes notes) ( let*( (es (ly:music-property notes 'elements)) (i (length es)) ) i )) #(define (transformEachNote chordElt d) (begin (if (or (eq? 'NoteEvent (ly:music-property chordElt 'name)) (eq? 'RestEvent (ly:music-property chordElt 'name))) (set! (ly:music-property chordElt 'duration) d) ) chordElt )) #(define (getChords musicElt d) (begin (if (eq? 'EventChord (ly:music-property musicElt 'name)) (map (lambda (x) (transformEachNote x d)) (ly:music-property musicElt 'elements) ) ) musicElt )) % Converts duration into ly form - dnl is one of {1 2 4 8 ..} with no "."s attached #(define (string->duration tdur num den) ( let*( (dur (ly:intlog2 tdur)) ;; dur = 0 1 2 3 .. ) (ly:make-duration dur 0 num den) )) % Constructs the tuplet makeTuplet = #(define-music-function (parser location span baseunit notes) (number? number? ly:music?) ( let*( (count (count-notes notes)) ;; number of notes in sequence (udf (inexact->exact (expt 2 (floor (+ 1 (- (/ (log span) (log 2)) (/ (log count) (log 2)))))))) ;; unit duration factor (tdur (/ baseunit udf)) ;; tuplet note duration (num (if (< udf 1) (/ span udf) span)) ;; numerator of tuplet duration ratio (den (if (< udf 1) count (* count udf))) ;; denominator of tuplet duration ratio ) (music-map (lambda (x) (getChords x (string->duration tdur num den))) notes ) #{ \once \override TupletNumber #'text = #(markup #:italic "$count" #:fontsize -5 #:note "$tdur" 1 ":" "$span" #:fontsize -5 #:note "$baseunit" 1) #} (make-music 'TimeScaledMusic 'numerator span 'denominator count 'element notes ) )) \relative { \time 4/4 \autoBeamOff \override TupletNumber #'text = #tuplet-number::calc-fraction-text c16 \makeTuplet #11 #16 {d e f g a } b4 | c1 } -- View this message in context: http://www.nabble.com/different-rhythmic-units-for-tuplet%27s-numerator-and-denominator-tp18321046p18412866.html Sent from the Gnu - Lilypond - User mailing list archive at Nabble.com. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user