Mit Scheme erzeugten Score beliebig oft wiederholen - wie?

Begonnen von Manuela, Sonntag, 29. September 2019, 19:13

« vorheriges - nächstes »

Manuela

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.
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

#1
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

Manuela

Danke für eure Hilfe
viele Grüße
-- Manuela