Hi Michael, Below is some code that replaces a horizontal bracket with a curly brace of the same width. The math is the result of experimentation, but it seems to hold up to changes in staff size and for medium-sized groupings of notes.
\version "2.19.84" #(define curly-analysis-brace (lambda (bracket) (let* ((bracket-width (interval-length (ly:stencil-extent (ly:horizontal-bracket::print bracket) X))) (bracket-dir (ly:grob-property bracket 'direction)) (bracket-layout (ly:grob-layout bracket)) (output-scale (/ (ly:output-def-lookup bracket-layout 'output-scale) 1.75729901757299)) (brace-rotation (if (eq? bracket-dir DOWN) 90 270)) (brace-size (* 5 bracket-width output-scale)) (y-scale (- 1 (* brace-size (/ brace-size 1.5) 0.000004 (/ 1 output-scale)))) (brace-offset (* (/ 1 output-scale) (+ (* 0.2 output-scale) (* 0.103 brace-size)))) ) (ly:grob-set-property! bracket 'text #{ \markup \scale #`(1 . ,y-scale) \translate #`(,brace-offset . 0) \rotate #brace-rotation \left-brace #brace-size #}) (ly:grob-set-property! bracket 'stencil ly:text-interface::print) ))) % \startCurlyGroup is a convenience for doing just one curly analysis bracket startCurlyGroup = \tweak after-line-breaking #curly-analysis-brace \startGroup \score { \relative { c''4\startGroup \startGroup \startGroup d4\stopGroup e4 d4 c d e d\stopGroup c d e d\stopGroup } \layout { \context { \Voice \consists "Horizontal_bracket_engraver" \override HorizontalBracket.after-line-breaking = #curly-analysis-brace } } } Kevin On Thu, 9 Apr 2020 at 17:51, Pierre Perol-Schneider <pierre.schneider.pa...@gmail.com> wrote: > > Hi Michael, > That may work, e.g.: > > \version "2.20.0" > > #(define-markup-command (lcb layout props arg) > (number?) > "Draw a curly bracket with a variable length." > (interpret-markup layout props > (markup > (#:override (cons (quote filled) #t) > (#:path 0 `( > (moveto -0.8 0.0) > (curveto -0.2 0.4 -0.3 0.7 -0.3 1.5) > (lineto -0.3 ,arg) > (curveto -0.4 ,(+ arg 1.3) 0.5 ,(+ arg 2.8) 0.7 ,(+ arg 2.8)) > (curveto 0.6 ,(+ arg 2.5) 0.1 ,(+ arg 2) 0.1 ,arg) > (lineto 0.1 1.5) > (curveto 0.1 0.7 0.1 0.0 -0.8 0.0) > (closepath) > (curveto -0.2 -0.4 -0.3 -0.7 -0.3 -1.5) > (lineto -0.3 ,(* arg -1)) > (curveto -0.4 ,(* (+ arg 1.3) -1) 0.5 ,(* (+ arg 2.8) -1) 0.7 > ,(* (+ arg 2.8) -1)) > (curveto 0.6 ,(* (+ arg 2.5) -1) 0.1 ,(* (+ arg 2) -1) 0.1 > ,(* arg -1)) > (lineto 0.1 -1.5) > (curveto 0.1 -0.7 0.1 0.0 -0.8 0.0) > (closepath))))))) > > > \relative c'' { > c4 _\markup { > \with-dimensions-from \null > \left-align { > \override #'(baseline-skip . 0) > \center-column { > "a" \vspace #-.1 > \rotate #90 \lcb #3 > \vspace #.1 "b" > } > } > } d e > -\tweak extra-offset #'(0 . -5) > _\markup { > \with-dimensions-from \null > \left-align { > \override #'(baseline-skip . 0) > \center-column { > "a" \vspace #-.1 > \rotate #90 \lcb #5 > \vspace #.1 "b" > } > } > }d c > b > -\tweak extra-offset #'(.5 . 3) > ^\markup { > \with-dimensions-from \null > \left-align { > \override #'(baseline-skip . 0) > \center-column { > "a" \vspace #.1 > \rotate #-90 \lcb #6 > \vspace #-.1 "b" > } > } > } a g f e d c > } > > HTH, > Cheers, > Pierre > > Le jeu. 9 avr. 2020 à 17:27, Michael Taylor <wmichael.tay...@gmail.com> a > écrit : >> >> Dear David, >> Many thanks for this. I was curious about the curly analysis brackets when I >> saw this in Snippets http://lsr.di.unimi.it/LSR/Search?q=curly but couldn't >> figure out how (or if) these >> shapes could be used for what I wanted. The only application I could find >> was to group an >> ensemble within a larger instrumental contingent. >> With best wishes >> Michael >> >> On Tue, 7 Apr 2020 at 23:00, David Nalesnik <david.nales...@gmail.com> wrote: >>> >>> On Tue, Apr 7, 2020 at 11:07 AM Michael Taylor >>> <wmichael.tay...@gmail.com> wrote: >>> > Would it be possible in a future version to have the option of placing >>> > text within analysis brackets as well as the default above? MT >>> >>> HorizontalBracketText.direction with a little more tweaking than >>> should be necessary. >>> >>> \layout { >>> \context { >>> \Voice >>> \consists "Horizontal_bracket_engraver" >>> \override HorizontalBracket.direction = #UP >>> } >>> } >>> >>> { >>> \once\override HorizontalBracketText.direction = #DOWN >>> \once\override HorizontalBracketText.text = "a" >>> \once\override HorizontalBracketText.padding = #-0.5 >>> \once\override HorizontalBracket.padding = 1 >>> c''\startGroup d''\stopGroup >>> }