Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Multimax am Freitag, 17. November 2023, 10:26

Titel: funktion zum erzeugen von patterns
Beitrag von: Multimax am Freitag, 17. November 2023, 10:26
Hallo zusammen,

ich habe vor, ein Stück, was sehr viele Takte mit dem identischen rhythmischen pattern, aber unterschiedlichen Noten hat, zu setzten und dabei eine Funktion zu verwenden.

Also Pseudo-Code sozusagen:

\pattern{c d}

erzeugt als Noten dann:

c4 d8.

Folgende Funktion würde ich gerne erweitern:
\version "2.20.0"

pattern_one = #(define-music-function
     (parser location note)
     (ly:pitch?)
     (make-relative (note) note
     #{
       $note 4
     #}))

\pattern_one c

Aktuell gebe ich die Note c in die Funktion und bekomme das c als viertel Note zurück. Wie kann ich nun diese Funktion um weitere Variablen erweitern und damit ein komplexeres Muster erzeugen?

Ich vermute, das die alten Hasen das hier in einer Sekunde lösen können, wofür ich einen Tag bräuchte und wäre um Hilfe dankbar.

Viele Grüße
Multimax
Titel: Antw:funktion zum erzeugen von patterns
Beitrag von: harm6 am Freitag, 17. November 2023, 10:53
https://lsr.di.unimi.it/LSR/Item?id=465
bzw
https://lsr.di.unimi.it/LSR/Item?id=654
mag helfen.

HTH,
  Harm
Titel: Antw:funktion zum erzeugen von patterns
Beitrag von: Multimax am Freitag, 17. November 2023, 10:54
Ich bin schon weitergekommen:

Zitat\version "2.20.0"
pattern_one = #(define-music-function (notea noteb) (ly:pitch? ly:pitch?)
    #{
      $notea 4 $noteb 8
    #})

\pattern_one c d

liefert ein Ergebnis. Allerdings kann ich danach keine Note mehr schreiben:

\pattern_one c d e funktioniert nicht,
\pattern_one {c d} eführt auch zu einem Fehler.

Titel: Antw:funktion zum erzeugen von patterns
Beitrag von: Multimax am Freitag, 17. November 2023, 11:03
In einer Staffumgebung scheint es zu funktionieren.
\version "2.20.0"
pattern_one = #(define-music-function (notea noteb) (ly:pitch? ly:pitch?)
     #{
       $notea 4 $noteb 8
     #})


 \new Staff \relative c'
 {
  \pattern_one c d e
  }

Danke auch Harm, falls ich selbs nicht weiterkomme, guck ich mir die Snippets noch an.