Phrasierungsbogen / Bindebogen / Legatobogen (gelöst)

Begonnen von Swetom2011, Dienstag, 10. April 2018, 08:53

« vorheriges - nächstes »

Swetom2011

Wie kann ich die Phrasierungsbögen / Bindebögen / Legatobögen für eine Harfenstimme erzeugen ohne "Folgenoten", siehe angehängten Bild?

Ich habe recht lange in den verschieden Handbücher gesucht aber nicht adäquates gefunden.  Das heißt natürlich nicht dass es nicht irgendwo beschrieben ist aber ich habe es jedenfalls nichts gefunden.

Malte

#1
Dafür gibts den Befehl \laissezVibrer, der allerdings standardmäßig sehr kurze Bögen erzeugt, evtl. brauchst du zum Verlängern snippet 715. Das erinnert mich daran, daß ich mal vorschlagen wollte, LaissezVibrer auf minimum-length o. ä. hören zu lassen.

Edit: hab ne entsprechende Mail an bug-lilypond geschickt.

harm6

#2
Seitdem es make-tie-stencil gibt kann man auch so vorgehen:

\version "2.19.81"

{
  \override LaissezVibrerTie.stencil =
  #(lambda (grob)
    (let ((cps (ly:grob-property grob 'control-points))
          (thickness (ly:grob-property grob 'thickness 1))
          (orientation (ly:grob-property grob 'direction -1))
          (minimum-length (ly:grob-property grob 'minimum-length 4))
          (line-thick (ly:staff-symbol-line-thickness grob))
          )
       (make-tie-stencil
         (car cps)
         (cons minimum-length (cdr (car cps)))
         (* thickness line-thick)
         orientation)
         ))
     
  c'1\laissezVibrer
  \once \override LaissezVibrerTie.direction = #UP
  c'1\laissezVibrer
  \once \override LaissezVibrerTie.minimum-length = 20
  c'1\laissezVibrer
}


Aber das ist jetzt natürlich ein custom-stencil. Besser wäre es das ganze in C++ zu integrieren, die feature-request bleibt also berechtigt.

Gruß,
  Harm

harm6

Noch etwas ausgefeilter:


\version "2.19.81"

lvTest = c'1\laissezVibrer

{
  %% default
  \lvTest
  \once \override LaissezVibrerTie.direction = #UP
  \lvTest
  %% tweaked
  \override LaissezVibrerTie.stencil =
  #(lambda (grob)
    (let* ((cps (ly:grob-property grob 'control-points))
           (first-cp (car cps))
           (last-cp (last cps))
           (actual-length
             (- (car last-cp) (car first-cp)))
           (thickness (ly:grob-property grob 'thickness 1))
           (orientation (ly:grob-property grob 'direction -1))
           (minimum-length
             (ly:grob-property grob 'minimum-length
               (+ (car first-cp) actual-length)))
           (line-thick (ly:staff-symbol-line-thickness grob)))
       (make-tie-stencil
         first-cp
         (cons minimum-length (cdr first-cp))
         (* thickness line-thick)
         orientation)))
     
  \lvTest
  \once \override LaissezVibrerTie.direction = #UP
  \lvTest
  \once \override LaissezVibrerTie.minimum-length = 20
  \lvTest
}


Gruß,
  Harm

Swetom2011

Danke für die schnelle Antwort. Probiere ich heute oder morgen aus.

Gruß
Tommy

Swetom2011

Funktioniert perfekt. Benutze die Lösung von snippet 715. Wenn ich Zeit habe, werde ich auch die von Harm ausprobieren.

ValidUserName

Gibt es auch eine Möglichkeit, die Ausrichtung (und eventuell auch Überhöhung) jedes einzelnen Laissez-Vibrer-Bogens einzeln einzuistellen, so wie man das für normale Bögen auch kann? Standardmäßig ergibt sich nämlich oft ein sehr unausgeglichenes Bild, z.B. bei dichten Akkortden.

harm6

ZitatGibt es auch eine Möglichkeit, die Ausrichtung (und eventuell auch Überhöhung) jedes einzelnen Laissez-Vibrer-Bogens einzeln einzuistellen, so wie man das für normale Bögen auch kann? Standardmäßig ergibt sich nämlich oft ein sehr unausgeglichenes Bild, z.B. bei dichten Akkortden.

Ich weiß nicht recht was Du meinst. Vor allem was "Überhöhung" bedeuten soll. Vielleicht kannst Du es mal mit "normale(n) Bögen" demonstrieren.

Möglicherweise hilft auch schon:


{
\override LaissezVibrerTieColumn.tie-configuration =
#'((2.5 . 1)
   (-1.0 . 1)
   (-4.5 . -1)
   (-6.5 . -1))
<c' e' g' c''>4\laissezVibrer
r2.
}


Gruß,
  Harm

ValidUserName

Zitat von: harm6 am Sonntag, 15. April 2018, 17:11
ZitatGibt es auch eine Möglichkeit, die Ausrichtung (und eventuell auch Überhöhung) jedes einzelnen Laissez-Vibrer-Bogens einzeln einzuistellen, so wie man das für normale Bögen auch kann? Standardmäßig ergibt sich nämlich oft ein sehr unausgeglichenes Bild, z.B. bei dichten Akkortden.

Ich weiß nicht recht was Du meinst. Vor allem was "Überhöhung" bedeuten soll. Vielleicht kannst Du es mal mit "normale(n) Bögen" demonstrieren.
Höhe des Ansatzes und Krümmung, bzw. technisch gesehen die Position der Bézierpunkte. Für einzelne Bögen wäre das also mit \shape zu lösen.

ZitatMöglicherweise hilft auch schon:


{
\override LaissezVibrerTieColumn.tie-configuration =
#'((2.5 . 1)
   (-1.0 . 1)
   (-4.5 . -1)
   (-6.5 . -1))
<c' e' g' c''>4\laissezVibrer
r2.
}


Gruß,
  Harm
Kann man auf jeden Fall gut mir Leben. Dass man die Position nur ganzzahlig setzen kann, verhindert allerdings eine wirklich gleichmäßige Verteilung.

harm6

ZitatDass man die Position nur ganzzahlig setzen kann
??
Die zweite Zahl eines jeden Paares bestimmt die Ausrichtung des LV-Ties, konkav/konvex, hat (eigentlich) nichts mit der Position zu tun.
Wenn man andere ganze Zahlen als +/- 1 verwendet, dann ist der Effekt auf die Höhe des LVTies eher eine Art von bug-using. Auf jeden Fall aber weder dokumentiert noch in irgendeiner Art empfohlen

ZitatFür einzelne Bögen wäre das also mit \shape zu lösen.

Ein Blick in die Archive kann manchmal hilfreich sein ;)
https://lists.gnu.org/archive/html/lilypond-user/2016-03/msg00846.html
(Orginalcode ist von David Nalesnik, der link führt zu Verbesserungen, die einer höheren LilyPondversion wegen nötig waren.)

Gruß,
  Harm

ValidUserName

#10
Zitat von: harm6 am Sonntag, 15. April 2018, 21:13
ZitatDass man die Position nur ganzzahlig setzen kann
??
Die zweite Zahl eines jeden Paares bestimmt die Ausrichtung des LV-Ties, konkav/konvex, hat (eigentlich) nichts mit der Position zu tun.
Wenn man andere ganze Zahlen als +/- 1 verwendet, dann ist der Effekt auf die Höhe des LVTies eher eine Art von bug-using. Auf jeden Fall aber weder dokumentiert noch in irgendeiner Art empfohlen
Die zweite Zahl als etwas anderes als +1, -1 oder 0 (default?) zu setzen führt bei mir sogar zu eine Fehlermeldung. Ich spreche von der ersten (vertikale Position). Ob ich da jetzt 5 oder 5.5 eintrage, macht keinen visuellen Unterschied.

Zitat
ZitatFür einzelne Bögen wäre das also mit \shape zu lösen.

Ein Blick in die Archive kann manchmal hilfreich sein ;)
https://lists.gnu.org/archive/html/lilypond-user/2016-03/msg00846.html
(Orginalcode ist von David Nalesnik, der link führt zu Verbesserungen, die einer höheren LilyPondversion wegen nötig waren.)

Gruß,
  Harm
Naja, wenn's die Suchmaschine nicht findet ...
Ich werd's mir anschauen, danke.

harm6

Zitat
Ich spreche von der ersten (vertikale Position). Ob ich da jetzt 5 oder 5.5 eintrage, macht keinen visuellen Unterschied.
Das ist nicht ganz richtig.
Tatsächlich kann es sein das die Eingabe von 5 keinen visuellen Unterschied zu 5.5 macht.
Allerdings vergleiche 5.0 und 5.5

Kurz gesagt, wenn man eine im scheme-Sinne exakte und integere Zahl verwendet, so berechnet LilyPond eine Position anhand gewisser Kriterien und dieser Zahl.
Ist die Zahl nicht exact, so wird sie direkt und unverändert übernommen.

Zum Unterschied von 1 und 1.0 bzgl exact?/integer?
Zitat von: guile-prompt im terminal
~$ guile
guile> (and (exact? 1.0) (integer? 1.0))
#f
guile> (and (exact? 1) (integer? 1))
#t
guile>

Das hat schon für Verwirrung gesorgt:
https://sourceforge.net/p/testlilyissues/issues/4955/

Siehe auch den output von:

{
  b'4\laissezVibrer
 
  \override LaissezVibrerTieColumn.tie-configuration = #'((2 . 1))
  b'4\laissezVibrer
 
  \override LaissezVibrerTieColumn.tie-configuration = #'((2.0 . 1))
  b'4\laissezVibrer
 
  \override LaissezVibrerTieColumn.tie-configuration = #'((2.8 . 1))
  b'4\laissezVibrer
}


Gruß,
  Harm