]> git.donarmstrong.com Git - lilypond.git/commitdiff
* input/regression/rehearsal-mark-letter.ly: new file.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 18 Jan 2004 16:46:13 +0000 (16:46 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 18 Jan 2004 16:46:13 +0000 (16:46 +0000)
* scm/translation-functions.scm (number->mark-string): new function
(format-mark-letters): new function
(format-mark-numbers): new function

input/regression/rehearsal-mark-letter.ly
lily/parser.yy
scm/music-functions.scm
scm/new-markup.scm
scm/translation-functions.scm

index 48fbe8176678256958daa6297a19788f34204dda..b28c22156f0425b7eab113524d6e552cb7787578 100644 (file)
@@ -7,12 +7,15 @@ with @code{\mark NUMBER}, or with @code{Score.rehearsalMark}."
 
 \version "2.1.7"
 \score {  \notes \relative c'' {
-  c1 | \mark #6
-  c1 | \mark \default
-  c1 | \mark \default
-  c1 | \mark \default
+  c1  \mark \default
+  c1  \mark #7
+  c1  \mark \default
+  c1  \mark \default
+  c1  \mark \default
   \property Score.rehearsalMark = #24
-  c1 | \mark \default
-  c1 | \mark \default
+  c1  \mark \default
+  c1  \mark \default
+  c1  \mark \default
+  c1  \mark \default
   }
 }
index fc618acb5e67226222ca9bac7337cc7d7047088a..91fd3b613f4c2161aec487b44b9798d52a89148d 100644 (file)
@@ -1391,6 +1391,15 @@ command_element:
                scm_gc_protect_object (result);
                $$ = unsmob_music (result);
        }
+       | MARK scalar {
+               static SCM proc;
+               if (!proc)
+                       proc = scm_c_eval_string ("make-mark-set");
+
+               SCM result = scm_call_1 (proc, $2);
+               scm_gc_protect_object (result);
+               $$ = unsmob_music (result);
+       }
        ;
 
 command_req:
@@ -1415,11 +1424,7 @@ verbose_command_req:
                Music * m = MY_MAKE_MUSIC("MarkEvent");
                $$ = m;
        }
-       | MARK scalar {
-               Music *m = MY_MAKE_MUSIC("MarkEvent");
-               m->set_mus_property ("label", $2);
-               $$ = m;
-       }
+       
        | SKIP duration_length {
                Music * skip = MY_MAKE_MUSIC("SkipEvent");
                skip->set_mus_property ("duration", $2);
index 5159d13b7a4cc8e0dbc0d25ac25df0ce8671e3ff..cf9ecd7e55422aa665852a1f29584f352631b925 100644 (file)
@@ -436,6 +436,30 @@ Rest can contain a list of beat groupings
     (context-spec-music
      (make-sequential-music basic) 'Timing)))
 
+(define-public (make-mark-set label)
+  " Set properties for time signature NUM/DEN.
+Rest can contain a list of beat groupings 
+
+"
+  
+  (let*
+      ((set (if (integer? label)
+               (context-spec-music (make-property-set 'rehearsalMark label)
+                                   'Score)
+               #f))
+       (ev (make-music-by-name 'MarkEvent))
+       (ch (make-event-chord (list ev)))
+       )
+
+    
+    (if set
+       (make-sequential-music (list set ch))
+       (begin
+         (ly:set-mus-property! ev 'label label)
+         ch))))
+    
+
+
 (define-public (set-time-signature num den . rest)
   (ly:export (apply make-time-signature-set `(,num ,den . ,rest))))
 
index aef4bb31f6e42f41f4bc698d9c052c33ef9b8290..65e608c877dadf1a46c16d703d641b67c684baa2 100644 (file)
@@ -499,6 +499,36 @@ any sort of property supported by @ref{font-interface} and
     (ly:molecule-set-extent! m X '(1000 . -1000))
     m))
 
+
+(define number->mark-letter-vector (make-vector 25 #\A))
+
+(do ((i 0 (1+ i))
+     (j 0 (1+ j)) )
+    ((>= i 26))
+  (if (= i (- (char->integer #\I) (char->integer #\A)))
+      (set! i (1+ i)))
+  (vector-set! number->mark-letter-vector j
+              (integer->char (+ i (char->integer #\A))))  )
+
+(define (number->markletter-string n)
+  "Double letters for big marks."
+  (let*
+      ((l (vector-length number->mark-letter-vector)))
+    
+  (if (>= n l)
+      (string-append (number->markletter-string (1- (quotient n l)))
+                    (number->markletter-string (remainder n l)))
+      (make-string 1 (vector-ref number->mark-letter-vector n)))))
+
+
+(define-public (markletter-markup paper props . rest)
+  "Markup letters: skip I and do double letters for big marks.
+Syntax: \\markletter #25"
+  
+  (Text_item::interpret_markup paper props
+                              (number->markletter-string (car rest))
+                              ))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
@@ -644,7 +674,7 @@ any sort of property supported by @ref{font-interface} and
    (cons note-markup (list string? number?))
    (cons note-by-number-markup (list number? number? number?))
    (cons fraction-markup (list markup? markup?))
-   
+   (cons markletter-markup (list number?))
    (cons column-markup (list markup-list?))
    (cons dir-column-markup (list markup-list?))
    (cons center-markup (list markup-list?))
index eec30297023cda0c774a062f2a1c213cb1e154e3..0dd2787a4cdce3a4fecf3e52d33898ac3f071e03 100644 (file)
 
 
 
-(define number->mark-letter-vector (make-vector 25 #\A))
-
-(do ((i 0 (1+ i))
-     (j 0 (1+ j)) )
-    ((>= i 26))
-  (if (= i (- (char->integer #\I) (char->integer #\A)))
-      (set! i (1+ i)))
-  (vector-set! number->mark-letter-vector j
-              (integer->char (+ i (char->integer #\A))))  )
-
-(define-public (number->mark-string n)
-  "Double letters for big marks."
-  (let*
-      ((l (vector-length number->mark-letter-vector)))
-    (display n) (newline)
-    (display l) (newline)
-    
-  (if (>= n l)
-      (string-append (number->mark-string (1- (quotient n l)))
-                    (number->mark-string (remainder n l)))
-      (make-string 1 (vector-ref number->mark-letter-vector n)))))
-
-
 (define-public (format-mark-letters mark context)
-  (make-bold-markup (number->mark-string (1- mark))))
+  (make-bold-markup (make-markletter-markup (1- mark))))
 
 (define-public (format-mark-numbers mark context)
   (make-bold-markup (number->string mark)))