\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
}
}
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:
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);
(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))))
(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))
+ ))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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?))
-(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)))