Oh how funny, I didn't realize this was from one of my snippets. I should post an updated version at some point. That snippet might have been the first substantial Scheme code I ever wrote. There ought to be a simpler way to do the same thing.
On Wed, Jan 1, 2025 at 3:29 PM Thomas Morley <thomasmorle...@gmail.com> wrote: > Am Di., 31. Dez. 2024 um 20:02 Uhr schrieb H. S. Teoh via LilyPond > user discussion <lilypond-user@gnu.org>: > > > > On Tue, Dec 31, 2024 at 01:55:28PM -0500, Saul Tobin wrote: > > > Did you run convert-ly from HEAD? > > > > I just tried it, the only difference in the output is the \version > > number. > > > > > > > On Tue, Dec 31, 2024, 1:53 PM H. S. Teoh via LilyPond user > discussion > > > <[1]lilypond-user@gnu.org> wrote: > > [...] > > > > The last good version AFAIK is commit f1ad21caa. The following > > > > commit, 6c1081a82, appears to be the change that broke this, > > > > though I've no idea why it should, and what my score has to do > > > > with it (nowhere in my score do I reference ly:duration-length > > > > directly). > > > > Actually, I take that back. I'm using a helper Scheme function I got > > from somewhere, that does reference ly:duration-length: > > > > #(define (add-durations dur1 dur2) > > (let* ((len1 (ly:duration-length dur1)) > > (len2 (ly:duration-length dur2)) > > (mult (ly:moment-div (ly:moment-add len1 len2) len1))) > > (ly:make-duration (ly:duration-log dur1) > > (ly:duration-dot-count dur1) > > (* (ly:duration-scale dur1) > (ly:moment-main mult))))) > > > > How do I update this function to work with the new version of lilypond? > > I tried to change duration-length to duration->number but it still gave > > me this error: > > > > Parsing...ice-9/eval.scm:159:9: Throw to key > `numerical-overflow' with args `("divide" "Numerical overflow" #f #f)'. > > > > > > --T > > > > The original code by Shevek: > https://lists.gnu.org/archive/html/lilypond-user/2013-04/msg00615.html > > Did you try to run convert-ly from HEAD over the file containing > `add-durations`? > For me it works and I get: > > #(define (add-durations dur1 dur2) > (let* ((len1 (ly:duration->moment dur1)) > (len2 (ly:duration->moment dur2)) > (mult (ly:moment-div (ly:moment-add len1 len2) len1))) > (ly:make-duration (ly:duration-log dur1) > (ly:duration-dot-count dur1) > (* (ly:duration-scale dur1) (ly:moment-main mult))))) > > HTH, > Harm > >