|
From: | Jean Abou Samra |
Subject: | Re: How to generate \scaleDurations values procedurally |
Date: | Mon, 12 Jun 2023 00:08:22 +0200 |
User-agent: | Evolution 3.48.3 (3.48.3-1.fc38) |
Le dimanche 11 juin 2023 à 23:55 +0200, Lib Lists a écrit :
Hello, I'm (re)working on a series of pieces for player piano. I'd like to find a way to generate all the \scaleDurations values so that I don't have to type them by hand. In the example below they follow a simple pattern (60/60k 60/59, 60/58, etc.). Unfortunately my knowledge of Scheme is very limited. Moreover, I wouldn't know how to insert the generated values to the right staves. Any hint would be really appreciated!
Like this?
\version "2.25.5"
mus = \repeat unfold 3 { c c c c }
\score {
\new StaffGroup <<
#@(map (lambda (i)
#{ \new Staff { \scaleDurations #(cons 60 i) \mus } #})
(iota 10 60 -1))
>>
\layout {
\enablePolymeter
\context {
\Score
\override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/4)
proportionalNotationDuration = #(ly:make-moment 1/10)
\override SpacingSpanner.uniform-stretching = ##t
\override SpacingSpanner.strict-note-spacing = ##t
\remove "Timing_translator"
forbidBreakBetweenBarLines = ##f
}
\context {
\Staff
\remove "Time_signature_engraver"
\override BarLine.stencil = ##f
\override BarLine.allow-span-bar = ##f
}
\context {
\Voice
\remove Forbid_line_break_engraver
}
}
}
The 60/59
notation is just LilyPond syntax for the Scheme pair (60 . 59)
.
There is some info about #@
here (and if you didn't know about pairs, you can read this).
Best,
Jean
signature.asc
Description: This is a digitally signed message part
[Prev in Thread] | Current Thread | [Next in Thread] |