• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Linie begrenzen

Begonnen von chf, Donnerstag, 10. April 2014, 17:49

Vorheriges Thema - Nächstes Thema

chf

Liebe Freunde,

die Länge dieser wunderschönen Wellenlinie von Torsten möchte ich in einer Kadenz gerne beliebig begrenzen können.
Könnt ihr mir helfen?

Gruß
Christa

martinmagtenor

Hallo Christa,

was genau verstehst Du unter beliebig begrenzen?

In Deinem Anhang sind zwei Scheme-Funktionen enthalten. Die Erste heißt squiggle und die Zweite zacken. Letztere kann man weglassen, da sie hier nicht verwendet wird.

Beide erzeugen letztlich Postscript-Code, der in die Lilypond-Ausgabe eingefügt wird. Es wird eine Grundform erzeugt, die dann mehrfach wiederholt wird.

Die Funktion squiggle hat drei Argumente: wd, ht und rep. rep steht für die Anzahl der Wiederholungen. In Deinem Beispiel (ganz am Ende) ist #40 angegeben, also 40 Wiederholungen. Falls Dir "ganze" Wiederholungen der Grundform genügen, brauchst Du nur diese Zahl zu variieren, z.B. #3 für 3 Wiederholungen.

Der Vollständigkeit halber das gekürzte Beispiel und mit modifizierter Anzahl der Wiederholungen:


\version "2.16.2"
#(define-markup-command (squiggle layout props wd ht rep )
  (number? number? number?)
  #:category graphic
  #:properties ((thickness 2))
  (let* ((th (* (ly:output-def-lookup layout 'line-thickness) thickness))
         (x 0)
         (step (* wd 0.5))
         (strht (number->string ht))
         (strps (string-append (number->string th) " setlinewidth "
                 "0 0 moveto "
                 (number->string (* step 1)) " " strht " "
                 (number->string (* step 2)) " " strht " "
                 (number->string (* step 3)) " 0 curveto "
                 (number->string (* step 3)) " 0 moveto "
                 (number->string (* step 4)) " -" strht " "
                 (number->string (* step 5)) " -" strht " "
                 (number->string (* step 6)) " 0 curveto stroke"  )))
       (interpret-markup layout props (markup #:pattern rep X (* 3 wd)
                                                                 #:postscript strps #:hspace (* 3 wd)))))

\relative c'' {
  s^\markup \squiggle #5 #1.5 #3
}

chf

Besten Dank!
Ich hatte die Bedeutung des letzten Wertes nicht begriffen...

chf