funktion zum erzeugen von patterns

Begonnen von Multimax, Freitag, 17. November 2023, 10:26

« vorheriges - nächstes »

Multimax

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


Multimax

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.


Multimax

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.