Autor Thema: Wellenlinie über Noten  (Gelesen 2690 mal)

temuta

  • Member
Wellenlinie über Noten
« 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

fugenkomponist

  • Member
Re: Wellenlinie über Noten
« Antwort #1 am: Sonntag, 5. Juni 2016, 12:55 »
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?

temuta

  • Member
Re: Wellenlinie über Noten
« Antwort #2 am: Sonntag, 5. Juni 2016, 13:04 »
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

harm6

  • Member
Re: Wellenlinie über Noten
« Antwort #3 am: Sonntag, 5. Juni 2016, 14:07 »
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

temuta

  • Member
Re: Wellenlinie über Noten
« Antwort #4 am: Sonntag, 5. Juni 2016, 15:48 »
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

fugenkomponist

  • Member
Re: Wellenlinie über Noten
« Antwort #5 am: Sonntag, 5. Juni 2016, 18:39 »
Oh, entschuldige, hab nicht an „tr“ gedacht, wusste wohl unterbewusst, dass man das relativ einfach abschalten kann (harms erste Lösung).