lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to generate \scaleDurations values procedurally


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

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]