Hello David,

Thanks a lot, that solves my problem elegantly!

I’ll study your code to learn more about the integration of Scheme and LP and 
follow your suggestion of a single command to do the parenthesizing.

A nice day!

JM


> Le 4 mai 2015 à 14:57, David Nalesnik <[email protected]> a écrit :
> 
> 
> 
> On Mon, May 4, 2015 at 3:56 AM, Menu Jacques <[email protected] 
> <mailto:[email protected]>> wrote:
> Hello folks,
> 
> Someone recently supplied on this list a way to draw large, colored brackets 
> to emphasize repeats, with fixed X offsets though.
> 
> I tried to go one step further by defining functions in order to be able to 
> specify the X offset at will.
> 
> \displayMusic showed me what to put in their body, but I bump into the fact 
> that the music itself is frozen is their code.
> 
> How can I get the example below to work with a regular note as extra argument?
> 
> I’d like to be able to write something such as:
> 
>   \myColoredLeftBracket d’2. #-4.6
> 
> Or maybe would it be better and more in the LP spirit to be able to write:
> 
>   d’2. \myColoredLeftBracket #-4.6
> 
> I don’t know how to get:
> 
>            'duration
>            (ly:make-duration 0)
>            'pitch
>            (ly:make-pitch -1 0)
> 
> at the right place from a music argument such as d’2. .
> 
> The same question arises by the way for:
> 
>                     (list 1 0.647058823529412 0)
> 
> which is the orange color in this example.
> 
> Thanks for you help!
> 
> JM
> 
> 
> %%%%%%%%%%%%
> 
> \version "2.19.17"
> 
> coloredLeftRepeatBracketPath = #'(
>                                    (moveto 1 -4.5)
>                                    (lineto 0 -2.5)
>                                    (lineto 0 2.5)
>                                    (lineto 1 4.5))
> 
> coloredRightRepeatBracketPath = #'(
>                                     (moveto -1 -4.5)
>                                     (lineto 0 -2.5)
>                                     (lineto 0 2.5)
>                                     (lineto -1 4.5))
> 
> % Variables with frozen X offsets
> 
> coloredLeftBracket =
> -\tweak layer #-1
> -\tweak extra-offset #'( -2.3 . -2.5)
> ^\markup {
>   \with-color #(x11-color "orange")
>   \with-dimensions #'(0 . 0) #'(0 . 0)
>   \path #1 #coloredLeftRepeatBracketPath
> }
> 
> 
> coloredRightBracket =
> -\tweak layer #-1
> -\tweak extra-offset #'(4.4 . -3.1)
> ^\markup {
>   \with-color #(x11-color "orange")
>   \with-dimensions #'(0 . 0) #'(0 . 0)
>   \path #1 #coloredRightRepeatBracketPath
> }
> 
> 
> % Attempts at parameterized functions instead of frozen X offsets
> % Code obtained thru \displayMusic and adapted
> 
> myColoredLeftBracket =
> #(define-music-function (parser location x-offset) (number?)
>    (make-music
>     'SequentialMusic
>     'elements
>     (list (make-music
>            'NoteEvent
>            'articulations
>            (list (make-music
>                   'TextScriptEvent
>                   'tweaks
>                   (list (cons (quote layer) -1)
>                     (cons (quote extra-offset) (cons x-offset -2.5)))
>                   'direction
>                   1
>                   'text
>                   (markup
>                    #:line
>                    (#:with-color
>                     (list 1 0.647058823529412 0)
>                     (#:with-dimensions
>                      (cons 0 0)
>                      (cons 0 0)
>                      (#:path
>                       1
>                       (list (list (quote moveto) 1 -4.5)
>                         (list (quote lineto) 0 -2.5)
>                         (list (quote lineto) 0 2.5)
>                         (list (quote lineto) 1 4.5))))))))
>            'duration
>            (ly:make-duration 0)
>            'pitch
>            (ly:make-pitch -1 0))))
>    )
> 
> myColoredRightBracket =
> #(define-music-function (parser location x-offset) (number?)
>    (make-music
>     'SequentialMusic
>     'elements
>     (list (make-music
>            'NoteEvent
>            'articulations
>            (list (make-music
>                   'TextScriptEvent
>                   'tweaks
>                   (list (cons (quote layer) -1)
>                     (cons (quote extra-offset) (cons x-offset -3.1)))
>                   'direction
>                   1
>                   'text
>                   (markup
>                    #:line
>                    (#:with-color
>                     (list 1 0.647058823529412 0)
>                     (#:with-dimensions
>                      (cons 0 0)
>                      (cons 0 0)
>                      (#:path
>                       1
>                       (list (list (quote moveto) -1 -4.5)
>                         (list (quote lineto) 0 -2.5)
>                         (list (quote lineto) 0 2.5)
>                         (list (quote lineto) -1 4.5))))))))
>            'duration
>            (ly:make-duration 0)
>            'pitch
>            (ly:make-pitch -1 0))))
>    )
> 
> 
> {
>   \displayMusic {c1 \coloredLeftBracket}
> }
> 
> {
>   \displayMusic {d'2. \coloredRightBracket}
> }
> 
> {
>   \displayMusic {d'2.}
> }
> 
> {
>   \myColoredLeftBracket #-4.6
> }
> 
> {
>   \myColoredRightBracket #6.0
> }
> 
> %%%%%%%%%%%%
> 
> I'm not going to be able to give a detailed explanation right now (am going 
> to be late!), but the following shows how you might get \myColoredLeftBracket 
> to work with color and _music_ arguments.
> 
> Note that you could roll both commands into a command which would 
> parenthesize a range of music.
> 
> HTH,
> David
> 
> %%%%%%%%%%%%%%%%%%
> \version "2.19.17"
> 
> myColoredLeftBracket =
> #(define-music-function (parser location x-offset color music)
>    (number? color? ly:music?)
>    (let ((elts (ly:music-property music 'elements)))
>      (if (pair? elts)
>          (let ((art (ly:music-property (car elts) 'articulations)))
>            (set! (ly:music-property (car elts) 'articulations)
>                  (cons (make-music
>                         'TextScriptEvent
>                         'tweaks
>                         (list (cons (quote layer) -1)
>                           (cons (quote extra-offset) (cons x-offset -2.5)))
>                         'direction
>                         1
>                         'text
>                         (markup
>                          #:line
>                          (#:with-color
>                           color
>                           (#:with-dimensions
>                            (cons 0 0)
>                            (cons 0 0)
>                            (#:path
>                             1
>                             (list (list (quote moveto) 1 -4.5)
>                               (list (quote lineto) 0 -2.5)
>                               (list (quote lineto) 0 2.5)
>                               (list (quote lineto) 1 4.5)))))))
>                    art)))))
>    music)
> 
> {
>   \myColoredLeftBracket #-4.6 #(list 1 0.647058823529412 0) { d'->-\fermata }
> }
>  
> _______________________________________________
> lilypond-user mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/lilypond-user

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to