Allgemein > Fragen zu Funktionen

Crescendo und Pedalzeichen einseitig klammern

(1/1)

Manuela:
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:


--- Code: ---\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)
       }
    #}))
--- Ende Code ---

harm6:
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:
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:

--- Zitat ---Wenn ich ein Beispiel posten könnte, hätte ich das Problem schon selber gelöst
--- Ende Zitat ---
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

--- Code: ---\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
}

--- Ende Code ---

(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...


--- Code: ---\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
>>

--- Ende Code ---

HTH,
  Harm

Manuela:
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  ;)

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln