Eine Klammer für den Akkord

Begonnen von Hilflos-im-Code, Mittwoch, 27. November 2019, 12:37

« vorheriges - nächstes »

Hilflos-im-Code

\version "2.19.83"

{\parenthesize  <g' c'' e''>8}


Ich finde es sieht etwas doof aus, wenn jede Note eingeklammert ist. Kann man den Akkord mit einer Klammer einklammern?

harm6

Hallo,

ich kenne keine gute Methode Akkorde einzuklammern.

Du könntest nur eine Note einklammern und dann das ParenthesesItem tweaken, bis es den ganzen Akkord umspannt.
Ist lästig...

Auch lästig und ebenfalls mit Nachteilen behaftet ist folgendes (aber zumindest ein klein wenig komfortabler):


foo =
#(define-music-function (y-pos-add style x-off)((pair? '(0 . 0))(symbol? 'slur)
number?)
#{
\once \override Arpeggio.stencil =
#(lambda (grob)
     
     (ly:grob-set-property! grob 'positions
       (let* ((y-pos (ly:grob-property grob 'positions)))
         (cons
           (+ (car y-pos) (car y-pos-add))
           (+ (cdr y-pos) (cdr y-pos-add)))))
           
     (case style
       ((slur) (ly:grob-set-property! grob 'X-extent '()))
       ((bracket) (ly:grob-set-property! grob 'X-extent '()))
       (else '()))

   (let* ((stil
            (case style
              ((slur) (ly:arpeggio::brew-chord-slur grob))
              ((bracket) (ly:arpeggio::brew-chord-bracket grob))
              (else (ly:arpeggio::print grob)))))
       
     (ly:stencil-add
       stil
       (ly:make-stencil
         (ly:stencil-expr
           (ly:stencil-translate-axis
             (ly:stencil-rotate stil 180 0 0)
             x-off
             X))
         '(0 . 0)
         '(0 . 0)))))
  <>\arpeggio
#})

chrdI = <g' c'' e''>8
chrdII = <gis' cis'' eis''>8
chrdIII = <gis' cis'' eis''>8..

{
  \autoBeamOff
  \foo #2.8 \chrdI
  s
  \foo #'(-1 . 1) #3 \chrdI
  s
  \override Arpeggio.padding = 1
  \foo #'(-1 . 0.5) bracket #2.5 \chrdI
}

{
  \autoBeamOff
  \accidentalStyle forget
 
  \once \override Arpeggio.padding = 4
  \foo #6.3 \chrdII
  s4
  \once \override Arpeggio.padding = 3.5
  \foo #'(-1 . 1) #5.8 \chrdII
  s4
  \once \override Arpeggio.padding = 4
  \foo #'(-1 . 0.5) bracket #5.6 \chrdII
}


{
  \autoBeamOff
  \accidentalStyle forget
 
  \once \override Arpeggio.padding = 4
  \foo #8 \chrdIII
  s2
  \once \override Arpeggio.padding = 3.5
  \foo #'(-1 . 1) #7.3 \chrdIII
  s2
  \once \override Arpeggio.padding = 4
  \foo #'(-1 . 0.5) bracket #7.3 \chrdIII
}


Gruß,
  Harm