On Mon, May 4, 2015 at 3:56 AM, Menu Jacques <imj-...@bluewin.ch> 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 lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user