Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: temuta am Sonntag, 5. Juni 2016, 12:02
-
Hallo allerseits,
Torsten hat in https://liarchiv.joonet.de/index.php?topic=1311.msg7190#msg7190 eine tolle \squiggle-Funktion für Wellenlinien über Noten gepostet. Gibt es eine Variante davon, die ebenfalls eine Wellenlinie über Noten erzeugt, bei der man aber nicht die Anzahl der Wiederholungen der Welle als Parameter angibt, sondern die Ausdehnung von einer Startnote zu einer Endnote - ähnlich wie bei TextSpanner mit \startTextSpan und \stopTextSpan? Je nach Formatierung soll also die Wellenlinie über den Noten kürzer oder länger sein, aber immer von der Startnote bis zur Endnote reichen. Anhängend ein Beispiel einer Handschrift aus dem 18. Jhdt; in den Takten 3 und 5 sind die Wellenlinien jeweils über den Noten 2-4 gefordert - so sollte das Ergebnis aussehen. Danke!
Danke!
Burkard
-
Probiers mal mit \startTrillSpan und \stopTrillSpan, sieht auch ein bisschen eleganter aus und ist vermutlich für diesen Stil passender.
Wofür steht denn die Wellenlinie im Original? Bogenvibrato? Das würde man heutzutage doch mit Bögen (+ evtl. Strichen oder Punkten) schreiben, oder?
-
Hallo Fugenkomponist,
ja, an \startTrillSpan und \stopTrillSpan hatte ich auch schon gedacht, wenn nur das Trillerzeichen "tr" nicht wäre. Kann man denn das "tr" abschalten (unsichtbar machen)?
Und in der Tat: Wahrscheinlich (nicht sicher) ist ein Bogenvibrato gemeint. Wenn es keine Alternative gibt, werde ich das Problem auch mit einem Bogen lösen.
Burkard
-
Du könntest mit TextSpanner.style experimentieren.
Oder den TextSpanner.stencil überschreiben.
\version "2.19.42"
\paper { ragged-last = ##t indent = 0 }
\relative {
\override TrillSpanner.bound-details.left.text = ##f
b''8\startTrillSpan 8 8 8\stopTrillSpan
}
\relative {
\override TextSpanner.style = #'zigzag
b''8\startTextSpan 8 8 8\stopTextSpan
}
\relative {
\override TextSpanner.style = #'trill
b''8\startTextSpan 8 8 8\stopTextSpan
}
foo =
\override TextSpanner.stencil =
#(lambda (grob)
(let* ((stil (ly:line-spanner::print grob))
(stil-x-ext (ly:stencil-extent stil X)))
(grob-interpret-markup grob
#{
\markup
\override #'(height . 0.2) %% default: 0.5
\draw-squiggle-line
#0.5 %% squiggle-length
#(cons (cdr stil-x-ext) 0) %% destination
##f %% equal start-end?
#})))
\relative {
\time 2/4
\foo
b''8\startTextSpan 8 8 8
\break
b8 8 8 8\stopTextSpan
}
\markup \bold "Funny squiggles"
fooII =
\override TextSpanner.stencil =
#(lambda (grob)
(let* ((stil (ly:line-spanner::print grob))
(stil-x-ext (ly:stencil-extent stil X)))
(grob-interpret-markup grob
#{
\markup
\override #'(angularity . 5) %% default: 0
\override #'(height . 1) %% default: 0.5
\override #'(thickness . 1) %% default: 0.5
\draw-squiggle-line
#1 %% squiggle-length
#(cons (cdr stil-x-ext) 0) %% destination
##f %% equal start-end?
#})))
\relative {
\time 2/4
\fooII
b''8\startTextSpan 8 8 8
\break
b8 8 8 8\stopTextSpan
}
png im Anhang
HTH,
Harm
-
Hallo Harm,
super, vielen Dank! Das tut genau das, was ich wollte. Selbst wenn ich noch mit der stabilen Version 2.18.2 arbeite und somit die Funktion \draw-squiggle-line nicht zur Verfügung steht, klappt es mit der Änderungen bei TrillSpanner und TextSpanner sehr gut! Danke nochmals!
Burkard
-
Oh, entschuldige, hab nicht an „tr“ gedacht, wusste wohl unterbewusst, dass man das relativ einfach abschalten kann (harms erste Lösung).