Deutschsprachiges LilyPond Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Hilflos-im-Code am Mittwoch, 27. November 2019, 12:37

Titel: Eine Klammer für den Akkord
Beitrag von: Hilflos-im-Code am Mittwoch, 27. November 2019, 12:37
\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?
Titel: Antw:Eine Klammer für den Akkord
Beitrag von: harm6 am Donnerstag, 28. November 2019, 00:17
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