lilypond-user
[Top][All Lists]
Advanced

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

Compilation time (was: Generate \scaleDurations procedurally)


From: Lib Lists
Subject: Compilation time (was: Generate \scaleDurations procedurally)
Date: Tue, 13 Jun 2023 09:16:15 +0200

Hello,
When trying to compile the complete score of the piece below (88
staves and 120 quarter notes), I noticed it was taking many hours (I
didn't finish the compilation). Trying with shorter versions, I got
the following compilation times:
- 2x quarter notes -> 16.7",
- 4x quarter notes -> 1'17",
- 8x quarter notes -> > 57'47" (!)

Is there anything that could be optimised to reduce the compilation
time? I'm afraid the final version could potentially take many days to
compile.

I'm on a MacBook Air M2 with macOS Ventura 13.4, Lilypond 2.25.5

Thank you for any hint,
Lib

- - -

\version "2.25.5"

#(set-default-paper-size "a0")
#(set-global-staff-size 15)

mus = { \relative c'''''  \repeat unfold 1 { c c c c }} % modify the
\repeat unfold value for testing, final version should be 40

#(define my-semitone->pitch
   (make-semitone->pitch
    (music-pitches #{ { c cis d ees e f fis g gis a bes b } #})))

\new StaffGroup  <<
  #@(map (lambda (i)
           #{
              \new Staff {
                \scaleDurations #(cons 120 i) {
                  \transpose c' #(my-semitone->pitch (- (- 120 i))) {
                    #(cond
                      ((<= 108 i 120) #{ \ottava 2 #})
                      ((<= 97 i 107) #{ \ottava 1 #})
                      ((<= 72 i 96) #{ \ottava 0 #})
                      ((<= 48 i 71) #{ \clef bass #})
                      ((<= 33 i 47) #{ \clef bass \ottava -1 #} )
                      (else #{ #}))
                    \mus
                  }
                }
              }
            #})
         (iota 88 120 -1))
>>

   \layout {
     indent = #0
    \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
      forbidBreakBetweenBarLines = ##f
      \cadenzaOn
    }
    \context {
      \Staff
      \remove Time_signature_engraver
    }
    \context {
      \Voice
      \remove Forbid_line_break_engraver
    }
  }



reply via email to

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