lilypond-devel
[Top][All Lists]
Advanced

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

Add \numbered-time-signature markup command (issue 173260043 by address@


From: nine . fierce . ballads
Subject: Add \numbered-time-signature markup command (issue 173260043 by address@hidden)
Date: Sat, 15 Nov 2014 17:34:41 +0000

Reviewers: ,

Message:
New patch for review.

The notation reference has a black rectangle at the ends of two of the
lines of the sample code. I'm not sure why.

How's the organization?  I wasn't sure how much, if anything, I should
put in define-markup-commands.scm.

Thanks.

Description:
Add \numbered-time-signature markup command

This command can produce compound, simple, and single-digit time
signatures using minor extensions of the list format that \compoundMeter
uses.

In this patch, compound time signature formatting relies on this
command.  In the future, all numeric time signatures may rely on it.

Please review this at https://codereview.appspot.com/173260043/

Affected files (+76, -15 lines):
  A input/regression/markup-numbered-time-signature.ly
  M ly/music-functions-init.ly
  M scm/time-signature-settings.scm


Index: input/regression/markup-numbered-time-signature.ly
diff --git a/input/regression/markup-numbered-time-signature.ly b/input/regression/markup-numbered-time-signature.ly
new file mode 100644
index 0000000000000000000000000000000000000000..04567c9ea49c3402724fcceae2b84f977fa3c6a9
--- /dev/null
+++ b/input/regression/markup-numbered-time-signature.ly
@@ -0,0 +1,28 @@
+\version "2.19.16"
+
+\header {
+ texidoc = "The @code{\\numbered-time-signature} markup command can produce various kinds of numeric time signature."
+}
+
+\markup {
+  \vspace #2
+  These are conventional time signatures:
+  \numbered-time-signature #3
+  \numbered-time-signature #'(3 . 4)
+  \numbered-time-signature #'(4 4)
+  (Aren't they pretty?)
+}
+
+\markup {
+  \vspace #2
+  This is single-digit compound time signature:
+  \numbered-time-signature #'((2) (3))
+  (Isn't it pretty?)
+}
+
+\markup {
+  \vspace #2
+  This is an unusual time signature:
+ \numbered-time-signature #'((6.22e23 1) (-4 . 3) (3.14) (9876 5432 0) (-1))
+  (Isn't it pretty?)
+}
Index: ly/music-functions-init.ly
diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly
index daf2b93a6ff804443365b0a2b4e6c57cfe60da7f..d4aad23b5954e8762c8b7b9aa64d537e3b3de750 100644
--- a/ly/music-functions-init.ly
+++ b/ly/music-functions-init.ly
@@ -287,7 +287,7 @@ as @code{\\compoundMeter #'((3 2 8))} or shorter
                         (ly:moment-main-denominator mlen))))
   #{
     \once \override Timing.TimeSignature.stencil = #(lambda (grob)
-      (grob-interpret-markup grob (format-compound-time args)))
+ (grob-interpret-markup grob (make-numbered-time-signature-markup args)))
     \set Timing.timeSignatureFraction = #timesig
     \set Timing.baseMoment = #beat
     \set Timing.beatStructure = #beatGrouping
Index: scm/time-signature-settings.scm
diff --git a/scm/time-signature-settings.scm b/scm/time-signature-settings.scm index 902a68706726d28944d80fc27a262866124261db..658b846d8e54381016633ba83dcf9339d9b07c66 100644
--- a/scm/time-signature-settings.scm
+++ b/scm/time-signature-settings.scm
@@ -294,8 +294,9 @@ a fresh copy of the list-head is made."


 ;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-;;; Formatting of complex/compound time signatures
+;;; Formatting of numeric time signatures (compound and simple)

+; There ought to be a \join-line sep {...} command
 (define (insert-markups l m)
   (let ((ll (reverse l)))
     (let join-markups ((markups (list (car ll)))
@@ -311,24 +312,56 @@ a fresh copy of the list-head is made."
          (den (car revargs))
          (nums (reverse (cdr revargs))))
     (make-override-markup '(baseline-skip . 0)
-                          (make-number-markup
                            (make-left-column-markup
                             (list (make-center-column-markup
(list (make-line-markup (insert-markups nums "+"))
-                                         den))))))))
+                                         den)))))))

-(define (format-complex-compound-time time-sig)
-  (make-override-markup '(baseline-skip . 0)
-                        (make-number-markup
-                         (make-line-markup
- (insert-markups (map format-time-fraction time-sig)
-                                          (make-vcenter-markup "+"))))))
+(define (format-time-numerator time-sig)
+  (make-vcenter-markup (number->string (car time-sig))))

-(define-public (format-compound-time time-sig)
-  (cond
-   ((not (pair? time-sig)) (null-markup))
-   ((pair? (car time-sig)) (format-complex-compound-time time-sig))
-   (else (format-time-fraction time-sig))))
+(define (format-time-element time-sig)
+  (cond ((number-pair? time-sig)
+         (format-time-fraction (list (car time-sig) (cdr time-sig))))
+        ((pair? (cdr time-sig))
+         (format-time-fraction time-sig))
+        (else
+         (format-time-numerator time-sig))))
+
+(define (format-time-list time-sig)
+  (make-override-markup '(baseline-skip . 0)
+                        (make-line-markup
+                         (insert-markups (map format-time-element time-sig)
+                                         (make-vcenter-markup "+")))))
+
+(define (format-numbered-time time-sig)
+  (make-number-markup
+   (cond
+    ((number? time-sig) (format-time-element (list time-sig)))
+    ((number-pair? time-sig)
+     (format-time-element (list (car time-sig) (cdr time-sig))))
+    ((pair? (car time-sig)) (format-time-list time-sig))
+    (else (format-time-element time-sig)))))
+
+(define-markup-command (numbered-time-signature layout props time-sig)
+  (number-or-pair?)
+  #:category music
+  "Draw a numeric time signature.
+
address@hidden,quote]
+\\markup {
+  \\column {
+    \\line { Single number: \\numbered-time-signature #3 }
+    \\line { Conventional: \\numbered-time-signature #'(4 . 4)
+                       or \\numbered-time-signature #'(4 4) }
+    \\line { Compound: \\numbered-time-signature #'(2 3 8) }
+ \\line { Single-number compound: \\numbered-time-signature #'((2) (3)) } + \\line { Complex compound: \\numbered-time-signature #'((2 3 8) (3 4)) }
+  }
+}
address@hidden lilypond
+"
+  (interpret-markup layout props (format-numbered-time time-sig)))


 ;;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%





reply via email to

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