lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: TimeSignature with note in denominator


From: Kieren MacMillan
Subject: Re: TimeSignature with note in denominator
Date: Sat, 13 Nov 2021 13:12:48 -0500

Hi Lukas,

>> 1. Is there any objection to me adding a TimeSignature style which would 
>> immediately apply to all already-accepted time signatures?
> I think that would be a great first contribution for you.
> As for the name: Probably "denominator" and "note" should be a part of the 
> name. "notehead" is wrong (you want to be able to distinguish crotchets and 
> quavers and whatever English names I can come up with to annoy you ;-).) And 
> if note-denominator is too long, note-denom might actually be a reasonable 
> candidate.

Okay… I’ll make this happen.

At the same time, I think I’ll add a second style, matching the “canonical” 
Orff format of num / notehead. As for the name, 'orff and 'note-fraction are my 
first offers (in order of preference).

Thoughts?

> For this longer-term project (\time \musicDenom 3 { 8.~8 }), there would be 
> significant design choices involved: Which part of a music expression should 
> be honoured, and what effect should they have especially on the beat 
> structure of the created time signature?

I look forward to that discussion, and the subsequent code work!

Question (mostly from a design philosophy standpoint): What are the pros and 
cons of adding a new 'style to TimeSignature versus just using something like 
Harm’s “format-time-sig-with-note” callback [ed: Is that the correct term?]:

\version "2.19.83"

#(define (format-time-sig-with-note grob)
   (let* ((frac (ly:grob-property grob 'fraction))
          (num (if (pair? frac) (car frac) 4))
          (den (if (pair? frac) (cdr frac) 4)))
         
    (cond ((and (integer? (/ num 3))
             (integer? (/ den 2)))
           (grob-interpret-markup grob
                (markup
                  #:override '(baseline-skip . 0.5)
                  #:column
                    (#:number (number->string (/ num 3))
                     #:override '(style . default)
                     #:note
                       (string-append (number->string (/ den 2)) ".")
                       DOWN))))
          ((and (integer? (/ num 2))
             (integer? (/ den 2)))
           (grob-interpret-markup grob
                (markup
                  #:override '(baseline-skip . 0.5)
                  #:column
                    (#:number (number->string (/ num 2))
                     #:override '(style . default)
                     #:note
                       (number->string (/ den 2))
                       DOWN))))
           (else (ly:time-signature::print grob))))
     )
     
fancyTimeSig =
  \override Staff.TimeSignature.stencil = #format-time-sig-with-note

\relative c' {   
  \once \fancyTimeSig
  \time 9/4
  \repeat unfold 9 c4
  \time 3/4
  \repeat unfold 3 c4 
  \bar"|."
}

Thanks,
Kieren.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]