Autor Thema: Crescendo und Pedalzeichen einseitig klammern  (Gelesen 2196 mal)

Manuela

  • Member
Crescendo und Pedalzeichen einseitig klammern
« am: Montag, 26. Dezember 2016, 11:55 »
Wieder nur Kosmetik  ;)

Wie setze ich in einem Dynamic-Staff Klammern vor/nach einem Pedalzeichen bzw. Crescendo-Hairpin?

Code für Textdynamikzeichen haben ich im LSR gefunden, bin jedoch daran gescheitert, das für Pedalzeichen umzuändern.

Z.B. eine linke Klammer:

\version "2.19.52"

lparen =
#(define-event-function (parser location dyn) (ly:event?)
   (make-dynamic-script
    #{ \markup \concat {
      \normal-text \italic \fontsize #2 (
      \pad-x #0.2 #(ly:music-property dyn 'text)
       }
    #}))

harm6

  • Member
Re: Crescendo und Pedalzeichen einseitig klammern
« Antwort #1 am: Dienstag, 27. Dezember 2016, 13:37 »
Hallo Manuela,

kannst Du bitte ein vollständiges Beispiel posten, welches Hairpin/Pedal enthält.
Es ist nicht klar, ob Du nur das mögliche Textzeichen oder auch den ganzen Spanner eines Pedals meinst.

Bitte verlinke wo Du etwas gefuden hast. Wahrscheinlich:
http://lsr.di.unimi.it/LSR/Item?id=382

Gruß,
  Harm

Manuela

  • Member
Re: Crescendo und Pedalzeichen einseitig klammern
« Antwort #2 am: Dienstag, 27. Dezember 2016, 14:13 »
Wenn ich ein Beispiel posten könnte, hätte ich das Problem schon selber gelöst  ;)

Ich füge zwei Screenshots bei, wie es ausschauen soll.

harm6

  • Member
Re: Crescendo und Pedalzeichen einseitig klammern
« Antwort #3 am: Mittwoch, 28. Dezember 2016, 12:21 »
Zitat
Wenn ich ein Beispiel posten könnte, hätte ich das Problem schon selber gelöst
Mir ging es doch nicht um ein Beispiel mit einer Lösung, sondern wie Du die Pedale angeben willst. Schließlich gibt es ja sustainOn/Off, sostenutoOn/Off und unaCorda/treCorde mit jeweils anderem Erscheinungsbild.
Auch sehe ich einen Widerspruch zwischen dem Titel diese threads:
"Crescendo und Pedalzeichen einseitig klammern" sowie Deinem eröffnenden post: "Wie setze ich in einem Dynamic-Staff Klammern vor/nach einem Pedalzeichen bzw. Crescendo-Hairpin?"

All das wäre aus einem (kommentierten) code-Beispiel wahrscheinlich ersichtlich gewesen.
Das zuletzt gepostete Bild hilft für die Pedale, aber Hairpin nur mit öffnender Klammer zur linken??

Insoweit hier zwei Versuche:
(1) Pedale
\version "2.18.2"

parenthesizeSustainPedal =
\override Staff.SustainPedal.after-line-breaking =
  #(lambda (grob)
     (let ((start? (string=? "Ped." (ly:grob-property grob 'text))))
       (ly:grob-set-property! grob 'stencil
         (ly:stencil-combine-at-edge
           (if start?
               (grob-interpret-markup grob "(")
               (ly:sustain-pedal::print grob))
           X
           RIGHT
           (if start?
               (ly:sustain-pedal::print grob)
               (grob-interpret-markup grob ")"))
           0.2))))
           
\relative {
  \parenthesizeSustainPedal
  c''4\sustainOn d e g
  c,1 d1\sustainOff
}

(2) Hairpin (beidseitig eingeklammert)
Dieser hat hat den Nachteil, daß die Hairpin nicht verändert wird, d.h. er ist Collisions-anfällig.
Um das zu vermeiden müßte man die Hairpin ebenfalls neu konstruieren.
Aber vielleicht reicht es ja schon...

\version "2.19.52"

%% c/p from stencil.scm
#(define (make-parenthesis-stencil
         y-extent thickness width angularity orientation)
  "Create a parenthesis stencil.
@var{y-extent} is the Y extent of the markup inside the parenthesis.
@var{half-thickness} is the half thickness of the parenthesis.
@var{width} is the width of a parenthesis.
@var{orientation} is the orientation of a parenthesis.
The higher the value of number @var{angularity},
the more angular the shape of the parenthesis."
  (let* ((start (cons 0 (car y-extent)))
         (stop (cons 0 (cdr y-extent)))
         (line-width 0.1)
         (bow-stil
           (make-bow-stencil
             start stop thickness angularity width orientation))
         (x-extent (ly:stencil-extent bow-stil X)))
    (ly:make-stencil
      (ly:stencil-expr bow-stil)
      (interval-widen x-extent (/ line-width 2))
      (interval-widen y-extent (/ line-width 2)))))
     
%% c/p from stencil.scm, extended
#(define-public (parenthesize-stencil
stencil half-thickness width angularity padding size)
  "Add parentheses around @var{stencil}, returning a new stencil."
  (let* ((y-extent (interval-widen (ly:stencil-extent stencil Y) size))
         (lp (make-parenthesis-stencil
              y-extent half-thickness width angularity 1))
         (rp (make-parenthesis-stencil
              y-extent half-thickness width angularity -1)))
  (ly:stencil-combine-at-edge
    (ly:stencil-combine-at-edge stencil X LEFT lp padding)
      X RIGHT rp padding)))
     
parenthesizeHairpin =
\override Hairpin.stencil =
  #(lambda (grob)
    (parenthesize-stencil
        (ly:hairpin::print grob) ;; stencil
        0.05 ;; half-thickness
        0.4  ;; width
        0    ;; angularity
        0.2  ;; padding
        0.5  ;; additional size
        ))
 
mus =
{
   c''4\> d'' e'' g'' \break
   c''1 c''\!
}

\new StaffGroup <<
  \new Staff { \parenthesizeHairpin \mus }
  \new Staff \mus
>>

HTH,
  Harm

Manuela

  • Member
Re: Crescendo und Pedalzeichen einseitig klammern
« Antwort #4 am: Mittwoch, 28. Dezember 2016, 12:47 »
Harm, danke für deine schier unerschöpfliche Geduld  :) :) :)

Das Pedal sieht perfekt aus, der Hairpin auch. Wie ich beim Hairpin wahlweise die linke oder die rechte Klammer weglasse, werde ich vermutlich selbst rausfinden können  ;)