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