lilypond-user
[Top][All Lists]
Advanced

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

Re: SOLVED: going backwards in time


From: Adam James Wilson
Subject: Re: SOLVED: going backwards in time
Date: Thu, 4 Sep 2008 14:01:24 -0700

It looks like I'm going down a road of rhythmic complexity that breaks Lilypond rendering in the absence of arbitrary precision arithmetic.

Han-Wen: would it be possible for me to sponsor a move to arbitrary precision arithmetic?  As you say, GUILE does support this option, and it would be possible to select it with some sort of flag so that other users wouldn't take the performance hit.  Such a fix would be necessary for me to use Lilypond to fully render my scores (I can render only a few pages at the moment).

My scores typically require things like the example below, which breaks with an "unterminated beam" error, and I *think* it is exceeding 32-bit precision (I'm assuming that Lily is using lowest common multiple of denominators to deal with resolution):

\version "2.11.56"

\layout {
\context { \Score
\override NonMusicalPaperColumn #'line-break-permission = ##f
\override NonMusicalPaperColumn #'page-break-permission = ##f
\override SpacingSpanner #'uniform-stretching = ##t
\override SpacingSpanner #'strict-note-spacing = ##t
proportionalNotationDuration = #(ly:make-moment 1 20)
ragged-right = ##t
}
\context { \Voice
\remove Forbid_line_break_engraver
\override Beam #'breakable = ##t
}
}
\new Staff {
<<
\new Voice { 

\time 4/1
c'2.*2351/3696
\scaleDurations #'(495 . 4336) { 
d'8*11[ \bar "|" \break d'8*100 d'8*100]
}
e'1*827949/8012928
\bar "|"
\time 3/8 
c'4.
}
>>
}

%{
warning: unterminated beam d'8*11[ \bar "|" \break d'8*100 d'8*100]

[a=3696, b=34688 (denom. of 495/4366*211/8), c=8012928, d=8]
gcf(a,b,c,d) = 8
lcm(a,b,c,d) = 1027312242130944
32-bit precision maxes out at 4.3 billion (less than the lcm above)
64-bit is more like 18.4 quintillion
%}

reply via email to

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