Autor Thema: Verzierungen in Klammern (GELÖST)  (Gelesen 2500 mal)

ingmar

  • Gast
Verzierungen in Klammern (GELÖST)
« am: Sonntag, 11. Oktober 2015, 14:25 »
hallo,

ich suche eine Möglichkeit, Praller, Mordents und Triller...
\version "2.18.2"
\relative c' { c d e\prall f g\mordent a b\trill c}

... in eckige Klammern zu setzen (weil Herausgeberzutat). Sie können dabei auch ruhig ein wenig kleiner werden. Aber alle meine Versuche mit \markup werden umfangreich und funktionieren trotzdem nicht, wie sie sollen.

Gruß,
--ingmar
« Letzte Änderung: Montag, 28. März 2016, 15:59 von ingmar »

harm6

  • Gast
Re: Verzierungen in Klammern
« Antwort #1 am: Sonntag, 11. Oktober 2015, 15:50 »
Du kannst ParenthesesItem.stencils verändern:

\version "2.18.2"

#(define-public (bracket-stencils axis thick protrusion)
  (let* ((lb (ly:bracket axis (cons -0.8 0.8) thick protrusion))
         (rb (ly:bracket axis (cons -0.8 0.8) thick (- protrusion))))
   (list lb rb)))

bracketify = #(define-music-function (parser loc arg) (ly:music?)
  (let ((axis Y)
        (thick 0.1)
        (protrusion 0.2)
        (padding 0.5))
  (if (music-is-of-type? arg 'event-chord)
      #{
      \once \override ParenthesesItem.stencils = #(bracket-stencils axis thick protrusion)
      \once \override ParenthesesItem.padding = #padding
      \parenthesize $arg
      #}
      #{
      \tweak ParenthesesItem.stencils #(bracket-stencils axis thick protrusion)
      \tweak ParenthesesItem.padding #padding
      \parenthesize $arg
      #})))
       
\relative c'' {
  \bracketify c4
  \bracketify g4
  <e \bracketify g b> -\bracketify \prall
  \bracketify
  <e g b>4
  \bracketify r4
}

\relative c' {
  c d e-\bracketify \prall f
  g-\bracketify \mordent a b-\bracketify \trill c
}

HTH,
  Harm

ingmar

  • Gast
Re: Verzierungen in Klammern
« Antwort #2 am: Sonntag, 11. Oktober 2015, 16:42 »
Zitat
harm6: Du kannst ParenthesesItem.stencils verändern

Funktioniert gut! Danke!

Vor allem kann ich es auch in eine Variable auslagern, so dass ich nach Wahl eine der folgenden drei Zeilen schreiben kann, um es im ganzen Notentext mit Klammern, ohne oder überhaupt nicht erscheinen zu lassen:

PR = \bracketify \prall % 1
PR = \prall             % 2
PR = { }                % 3

..und im Notentext dann:

\relative c' { c d\PR e\PR f g1}

--ingmar

ingmar

  • Gast
Problem bei punktierten Noten
« Antwort #3 am: Sonntag, 11. Oktober 2015, 20:39 »
Es entsteht in einem speziellen Fall leider doch ein Problem! Wenn eine punktierte Achtel auf der 5. Linie betroffen ist, trifft der untere waagerechte Strich der Klammer genau auf den Verlängerungspunkt, der dann nicht mehr sichtbar ist. Das ist besonders störend bei kleiner Schrift. Man müsste also die schließende Klammer ein, zwei Pixel nach rechts schieben.

Sorry, ich kann so schnell kein Minimalbeispiel geben; mein File ist sehr umfangreich, mit Definitionen in drei anderen Files – das ist nicht so leicht auf die reine Problemdarstellung einzudampfen. Daher hier nur ein Beweisfoto... : - )

--ingmar

harm6

  • Gast
Re: Verzierungen in Klammern [GELÖST]
« Antwort #4 am: Sonntag, 11. Oktober 2015, 21:39 »
Nun, ich hatte die Ausdehung der brackets nach oben/unten hard-coded. Ist jetzt ein optionales Argument der music-function.

\version "2.18.2"

#(define-public (bracket-stencils ext axis thick protrusion)
  (let* ((lb (ly:bracket axis ext thick protrusion))
         (rb (ly:bracket axis ext thick (- protrusion))))
   (list lb rb)))

bracketify = #(define-music-function (parser loc ext  arg)
  ((pair? (cons -0.8 0.8)) ly:music?)
  (let ((axis Y)
        (thick 0.1)
        (protrusion 0.2)
        (padding 0.5))
  (if (music-is-of-type? arg 'event-chord)
      #{
      \once \override ParenthesesItem.stencils =
         #(bracket-stencils ext axis thick protrusion)
      \once \override ParenthesesItem.padding = #padding
      \parenthesize $arg
      #}
      #{
      \tweak ParenthesesItem.stencils
         #(bracket-stencils ext axis thick protrusion)
      \tweak ParenthesesItem.padding #padding
      \parenthesize $arg
      #})))

\relative c' {
  c
  d
  e-\bracketify \prall f
  g-\bracketify #'(-0.5 . 0.5) \mordent
  a
  b-\bracketify #'(-1 . 1) \trill
  c
}

Andere Einstellmöglichkeiten finden sich an dieser Stelle im code:
Zitat
  (axis Y)
  (thick 0.1)
  (protrusion 0.2)
  (padding 0.5))
Sind somit zwar hard-coded, aber natürlich änderbar. Man könnte sie auch als Argument der music-function kodieren. Aber zu viele optionale Argumente sind häufig nicht machbar, wenn man sie aber obligatorisch macht, muß man sie jedesmal angeben, dann wird es nachher schnell unhandlich...


HTH,
  Harm

ingmar

  • Gast
re: Verzierungen in Klammern (GELÖST)
« Antwort #5 am: Montag, 16. Mai 2016, 06:56 »
Die Frage und die Antwort ist jetzt schon einige Zeit her. Ich hab leider einige Fälle gefunden, wo Teile der Klammer mit einem anderen Zeichen zusammenstießen, besonders bei Verwendung kleinerer Schrift. Leider hatte ich keine Gelegenheit, das in ein paar griffigen Minimalbeispielen zu demonstrieren und kann die auch jetzt nicht bieten. Dennoch danke für die Lösung, die in meinen Partituren schließlich aber doch immer ausgereicht hat.

--ingmar