Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Sonntag, 29. September 2019, 19:13

Titel: Mit Scheme erzeugten Score beliebig oft wiederholen - wie?
Beitrag von: Manuela am Sonntag, 29. September 2019, 19:13
Hi,

ich stehe wieder mal vor einem Scheme-Problem.
Wie kann ich folgenden Code beliebig oft wiederholen, am besten per Parameter eine Scheme-Funktion?
\version "2.19.82"
\language "deutsch"

myScore =
#(define-void-function () ()
   (add-score
    (scorify-music #{ { c'1 } \pageBreak #}))
     (add-score
     (list #{ \markup \null
       #}))
   )

\myScore \myScore %% wie anders wiederholen?


Oder gibt es eine ganz andere Möglichkeit? Der Hintergrund ist der, dass ich aus einer Seite mit leeren Notenzeilen ein Heft bilden will,  und dabei nur die Seitenzahl angeben möchte.
Titel: Antw:Mit Scheme erzeugten Score beliebig oft wiederholen - wie?
Beitrag von: Malte am Montag, 30. September 2019, 08:15
Zitat von: Manuela am Sonntag, 29. September 2019, 19:13
Wie kann ich folgenden Code beliebig oft wiederholen, am besten per Parameter eine Scheme-Funktion?
Mit einer Schleife und apply geht das ganz gut:printScoreTimes =
#(define-void-function (the-score the-times) (procedure? number?)
   (let loop ((c the-times))
     (if (> c 0)
         (begin
          (apply the-score '())
          (loop (1- c))))))

\printScoreTimes #myScore 5


Edit: Du kannst auch das ganze scorify-music etc. in die Funktion mit reinpacken:\version "2.19.83"

myScore = { { c'1 } \pageBreak }

printScoreTimes =
#(define-void-function (the-score the-times) (ly:music? number?)
   (let loop ((c the-times))
     (if (> c 0)
         (begin
          (add-score (scorify-music the-score))
          (loop (1- c))))))

\printScoreTimes \myScore 5
Titel: Antw:Mit Scheme erzeugten Score beliebig oft wiederholen - wie?
Beitrag von: Manuela am Montag, 30. September 2019, 13:45
Danke Malte, ich probier das so bald wie möglich aus