Autor Thema: Klammern um ganze Akkorde  (Gelesen 6169 mal)

kilgore

  • Member
Klammern um ganze Akkorde
« am: Mittwoch, 5. August 2009, 14:45 »
Noch eine Frage heute.... es geht um Klammern um Töne.

\parenthesize  <c e g>   macht klammern um jeden einzelnen Ton.  Wie kann man aber Klammern um das ganze Akkord machen?   Also ein Klammer auf jede Seite die das ganze Akkord umfangen?
 

kilgore

  • Member
Re: Klammern um ganze Akkorde
« Antwort #1 am: Montag, 10. August 2009, 18:07 »
echt? keiner beisst?

comper

  • Member
Re: Klammern um ganze Akkorde
« Antwort #2 am: Dienstag, 11. August 2009, 00:11 »
Es gab einmal Vorschläge mit \markup.
Passabel (aber umständlich) für kleine Akkorde, etwa Terz oder so.

Offenbar arbeitet jemand an etwas Ähnliches für Gitarren.

Und Arpeggio macht neuerdings den linken Teil ...


Gruss

kilgore

  • Member
Re: Klammern um ganze Akkorde
« Antwort #3 am: Dienstag, 11. August 2009, 09:29 »
Nochmal danke Comper!  Gestern abend habe ich die Mailing liste entdeckt, und auch dieses Thema gesucht.   Letztendlich benutze ich den \markup Vorschlag in Kombination mit den schlankeren Klammern die bei dem Arpeggio-Kösung erscheinen.  Sieht super aus, aber ja, etwas umständlich weil man die jedes mal einstellen muss.  Trotzdem siehts OK aus, und ich brauche es nur ungefähr 10 mal in dem Stück, geht schon :)
vielleicht auch was für 2.13!!!

schade egeintlich, dass unsere Foren getrennt sind.  Warum kann nicht die Mailingliste und die Foren kombiniert werden?  Und warum sind diese Kleinigkeiten noch nicht im LSR erschienen?  naja....fragen über fragen... :P

comper

  • Member
Re: Klammern um ganze Akkorde
« Antwort #4 am: Dienstag, 11. August 2009, 10:17 »
Vielleicht weniger umständlich, weil Grösse und Höhe automatisch: 

parch =  #(define-music-function (parser location gap) (number?)
#{
   \once \override Arpeggio #'stencil = #(lambda (grob)
     (ly:stencil-add
       (ly:arpeggio::brew-chord-slur grob)
       (ly:stencil-translate-axis
         (ly:stencil-rotate (ly:arpeggio::brew-chord-slur grob) 180 0 0)
         $gap X)))
   \once \override Arpeggio #'X-extent = #(lambda (grob)
     (ly:stencil-extent (ly:arpeggio::brew-chord-slur grob) X))
   \once \override Arpeggio #'positions = #(lambda (grob)
     (interval-widen (ly:arpeggio::calc-positions grob) 0.5))
   $(make-music 'EventChord 'elements (list (make-music 'ArpeggioEvent)))
#})

{
  \parch #3.5  <d' c' >4
  \once \override Stem #'X-extent = #'(0 . 1)
  \parch #3  <c'' g' c' >4
  \once \override Stem #'X-extent = #'(0 . 2)
  \parch #4  <c'' g' c' d' >4
  \once \override Stem #'X-extent = #'(0 . 1.5)
  \parch #5  <cis'' g' c' >4
}

Aber waagerecht braucht's manuell:
 - immer die Breitenangabe (rot)
 - meistens mehr Abstand rechts (blau)


Gruss

etilli33

  • Member
Re: Klammern um ganze Akkorde
« Antwort #5 am: Mittwoch, 12. August 2009, 11:57 »
schade egeintlich, dass unsere Foren getrennt sind.  Warum kann nicht die Mailingliste und die Foren kombiniert werden?  Und warum sind diese Kleinigkeiten noch nicht im LSR erschienen?  naja....fragen über fragen... :P

Was meinst du: "unsere Foren"? Hier wird ja schliesslich deutsch geschreiben, auf der Mailingliste dagegen englisch, es gibt weiterhin noch eine spanische und französische mailingliste. Das wäre doch nicht sinnvoll, wenn alle die Nachrichten in den verschiedenen Sprachen kriegen würden. Versucht die Lösung zuerst auf der Sprache, die man am liebsten spricht, und wenn keine Antwort kommt, kann man auf englisch weitermachen, da wo die Experten mitreden. Obwohl, mit Comper und Hindemith haben wir ja auch unsere Experten. :-)

Schätze, comper hat sein Schnipsel auch schon ins lsr gepackt (oder hoffe das wenigstens)...

Gruss
Till

murov

  • Member
Re: Klammern um ganze Akkorde
« Antwort #6 am: Sonntag, 26. April 2015, 07:06 »
Ich habe genau diese Funktion lange gesucht und bin - endlich - auf die Lösung von comper gestoßen. Allerdings funktioniert es bei mir nicht (lilypond 2.18.2). Lilypond beendet mit Return-Code 1:

Zitat
While evaluating arguments to ly:stencil-translate-axis in expression (ly:stencil-translate-axis (ly:stencil-rotate # 180 ...) $gap ...):
[ ... ]: Unbound variable: $gap
Wurde mit dem Return-Code 1 beendet.

Ich habe das zuvor unter die \header Anweisung kopiert:

parch =  #(define-music-function (parser location gap) (number?)
#{
   \once \override Arpeggio #'stencil = #(lambda (grob)
     (ly:stencil-add
       (ly:arpeggio::brew-chord-slur grob)
       (ly:stencil-translate-axis
         (ly:stencil-rotate (ly:arpeggio::brew-chord-slur grob) 180 0 0)
         $gap X)))
   \once \override Arpeggio #'X-extent = #(lambda (grob)
     (ly:stencil-extent (ly:arpeggio::brew-chord-slur grob) X))
   \once \override Arpeggio #'positions = #(lambda (grob)
     (interval-widen (ly:arpeggio::calc-positions grob) 0.5))
   $(make-music 'EventChord 'elements (list (make-music 'ArpeggioEvent)))
#})

und dann den (verbundenen) Akkord eben versucht mit dieser Anweisung zu umklammern:

\parch #3.5 <e d g,>]
Aber bereits bei der Definition von \parch bleibt lilypond hängen, bei dieser Zeile:

(ly:stencil-translate-axis
Oder gibt es inzwischen vielleicht eine andere Funktion, die das abdeckt?

Gruß
Dieter

harm6

  • Member
Re: Klammern um ganze Akkorde
« Antwort #7 am: Sonntag, 26. April 2015, 13:32 »
Hallo,

comper's function ist von 2009. Da hat es natürlich seitdem einige Syntaxänderungen gegeben.
Aber es gibt ja convert-ly

Schreib eine alte version ins file, z.B. \version "2.10.0"
dann im Terminal
converty-ly -e my-file.ly

Ansonsten ist gerade ein patch in Arbeit welcher \parenthesize verbessert. Wenn ich das richtig verstehe ist es aber auch mit diesem patch noch nicht möglich Akkorde einzuklammern.

HTH,
  Harm

murov

  • Member
Re: Klammern um ganze Akkorde
« Antwort #8 am: Sonntag, 26. April 2015, 19:26 »
Super! Danke für den Tipp, Harm! Es funktioniert auch schon ganz gut, nur die rechte Klammer ist zu nah dran und will ihren Abstand nicht ändern. Der Code
\once \override Stem.X-extent = #'(0 . 2)scheint keine Wirkung auf die rechte Klammer zu haben.

Aber nach einigem Herumprobieren habe ich festgestellt, dass die linke Klammer immer einen passablen Abstand zum Akkord hat - unabhängig von
\parch #3.5(oder einer anderen Zahl), dass aber mit \parch #... der Abstand der rechten Klammer beeinflusst wird!

Damit ist aber genau das erreicht, was gewünscht war (solange die linke Klammer keine Zicken macht  :D )!

Ach ja! Hier nochmals der Code von comper - angepasst an die Syntax von lilypond 2.18.2:
parch =  #(define-music-function (parser location gap) (number?)
#{
   \once \override Arpeggio.stencil = #(lambda (grob)
     (ly:stencil-add
       (ly:arpeggio::brew-chord-slur grob)
       (ly:stencil-translate-axis
         (ly:stencil-rotate (ly:arpeggio::brew-chord-slur grob) 180 0 0)
         gap X)))
   \once \override Arpeggio.X-extent = #(lambda (grob)
     (ly:stencil-extent (ly:arpeggio::brew-chord-slur grob) X))
   \once \override Arpeggio.positions = #(lambda (grob)
     (interval-widen (ly:arpeggio::calc-positions grob) 0.5))
   $(make-music 'EventChord 'elements (list (make-music 'ArpeggioEvent)))
#})
und dann bei den Noten:
\parch #4 <e d g,>wobei eben die Zahl den Abstand der rechten Klammer vergrößert …


Gruß
Dieter
« Letzte Änderung: Montag, 27. April 2015, 18:06 von murov »