[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Lower-case letter rehearsal marks
From: |
Thomas Morley |
Subject: |
Re: Lower-case letter rehearsal marks |
Date: |
Wed, 9 Dec 2015 14:16:37 +0100 |
2015-12-09 12:52 GMT+01:00 Andrew Bernard <address@hidden>:
> Hi Abraham,
>
> Well, as a very quick hack, you can change the uppercase hardwired A in this
> code to lowercase hardwired as below. I am not suggesting this is the best
> solution, but it works.
>
> Andrew
>
>
>
> — snip
>
> define-markup-commands.scm
>
>
> (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->mark-alphabet-vector (list->vector
> (map (lambda (i) (integer->char (+ i
> (char->integer #\a)))) (iota 26))))
>
> — snip
>
This whole stuff looks quite obfuscated to me.
Currently we do a lot of calculation to end up with then hard-coded vectors.
Why not give the initial value directly?
Below three suggestions, via string, char-set, vector.
Maybe we could even introduce a context-property for it.
To get lowercase values uncomment the relevant line (see comments inline)
\version "2.19.32"
%%%% (1) Possible characters are given as string
%%{
#(define mark-string "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
%% uncomment for lowercase:
%#(set! mark-string (string-downcase mark-string))
#(define mark-vector
(list->vector
(string->list mark-string)))
#(define mark-vector-I
(list->vector
(string->list (string-delete mark-string (string->char-set "iI")))))
%}
%%%% (2) Possible characters are taken from a char-set
%{
#(define mark-char-set char-set:upper-case)
%% uncomment for lowercase:
%#(set! mark-char-set char-set:lower-case)
#(define mark-vector
(list->vector (char-set->list mark-char-set)))
#(define mark-vector-I
(list->vector
(char-set->list
(char-set-difference mark-char-set (string->char-set "iI")))))
%}
%%%% (3) Possible characters are given as vector
%{
#(define mark-initial-vector
#(#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S
#\T #\U #\V #\W #\X #\Y #\Z))
%% uncomment for lowercase:
%%% adjusted copy from music-functions.scm
%#(define (vector-map f v)
% "Map F over V. Returns a new created vector."
% (do ((n (vector-length v))
% (i 0 (+ i 1)))
% ((>= i n))
% (vector-set! v i (f (vector-ref v i))))
% v)
%
%#(set! mark-initial-vector (vector-map char-downcase mark-initial-vector))
#(define mark-vector mark-initial-vector)
#(define mark-vector-I
(list->vector
(remove
(lambda (c) (or (char=? #\i c) (char=? #\I c)))
(vector->list mark-initial-vector))))
%}
%%%% The following (adjusted) copies need to be here to make it work without
%%%% changing the source-code
%% c/p from define-markup-commands.scm
#(define (number->markletter-string vec n)
"Double letters for big marks."
(let* ((lst (vector-length vec)))
(if (>= n lst)
(string-append (number->markletter-string vec (1- (quotient n lst)))
(number->markletter-string vec (remainder n lst)))
(make-string 1 (vector-ref vec n)))))
%% adjusted copies from define-markup-commands.scm
#(define-markup-command (markalphabet layout props num)
(integer?)
#:category other
(interpret-markup layout props (number->markletter-string mark-vector num)))
#(define-markup-command (markletter layout props num)
(integer?)
#:category other
(interpret-markup layout props (number->markletter-string mark-vector-I num)))
%% c/p from translation-functions.scm
#(define (format-mark-letters mark context)
(make-bold-markup (make-markletter-markup (1- mark))))
\score {
\new Staff {
\mark #8
R1
\mark #9
R1
\mark #10
R1
\mark #30
}
\layout {
\context {
\Score
markFormatter = #format-mark-letters
}
}
}
Cheers,
Harm
- Lower-case letter rehearsal marks, Abraham Lee, 2015/12/08
- Re: Lower-case letter rehearsal marks, Andrew Bernard, 2015/12/09
- Re: Lower-case letter rehearsal marks,
Thomas Morley <=
- Re: Lower-case letter rehearsal marks, David Kastrup, 2015/12/09
- Re: Lower-case letter rehearsal marks, Thomas Morley, 2015/12/09
- Re: Lower-case letter rehearsal marks, David Kastrup, 2015/12/09
- Re: Lower-case letter rehearsal marks, Kieren MacMillan, 2015/12/09
- Re: Lower-case letter rehearsal marks, Thomas Morley, 2015/12/09
- Re: Lower-case letter rehearsal marks, David Kastrup, 2015/12/10
- Re: Lower-case letter rehearsal marks, Thomas Morley, 2015/12/10
- Re: Lower-case letter rehearsal marks, Kieren MacMillan, 2015/12/10
- Re: Lower-case letter rehearsal marks, David Kastrup, 2015/12/10
- Re: Lower-case letter rehearsal marks, Thomas Morley, 2015/12/10