[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Unterminated glissando
From: |
Thomas Morley |
Subject: |
Re: Unterminated glissando |
Date: |
Fri, 15 Feb 2019 23:38:09 +0100 |
Am Fr., 15. Feb. 2019 um 14:04 Uhr schrieb Andrew Bernard
<address@hidden>:
>
> Sorry people, my mistake - there were actually glissandos with no following
> notes at the end of my score. Please ignore that.
>
> But I still see this, with no lines number:
>
> programming error: overwriting glissando
> continuing, cross fingers
>
> So my question partially stands. What does this mean? What should I look for?
>
> Andrew
Hi Andrew,
"programming error: overwriting glissando" comes from glissando-engraver.cc.
Though, I wasn't able to force this error with any code I tried.
Do you apply some Glissando-overrides?
Maybe some coding is not as clean as wished.
Anyway, it's pretty easy to get the "unterminated glissando"-warning.
To check in a long, complicated file I wrote a helper-tool.
It checks for grob::is-live?, sufficient for all unterminated
glissandi. Maybe it is of help for "programming error: overwriting
glissando" as well.
N.B.: it is not tested widely...
But here the code:
tst =
#(lambda (ctx)
(let ((gliss '())
(gliss-to-test '()))
(make-engraver
((initialize translator)
(set! gliss '())
(set! gliss-to-test '()))
(acknowledgers
((glissando-interface engraver grob source-engraver)
(set! gliss
(list grob
(ly:prob-property
(ly:grob-property grob 'cause)
'origin)))))
((stop-translation-timestep translator)
(if (and (pair? gliss) (ly:grob? (car gliss)))
(set! gliss-to-test
(cons
(list
(car gliss)
(second gliss)
(grob::rhythmic-location (car gliss)))
gliss-to-test))))
((finalize translator)
(if (pair? gliss-to-test)
(let ((init #f))
(for-each
(lambda (e)
(if (and (not (grob::is-live? (car e)))
(not (equal? (car e) init))
;; mhh...Do I exclude too much?
(pair? (third e)))
(format #t
"Check Glissandi: \n\tin file: ~a\n\tin music: measure ~a, moment ~a\n"
(second e)
(car (third e))
(ly:moment-main (cdr (third e)))))
(set! init (car e)))
gliss-to-test)))))))
\layout {
\context {
\Voice
\consists \tst
}
}
Compiling:
<<
\new Staff {
s2. c'4\glissando s1
}
\new Staff {
c'1 c'1\glissando
}
\new Staff {
c'1 c'1\glissando
}
>>
returns (for my atest-83.ly-file):
[...]
warning: unterminated glissando
Check Glissandi:
in file: #<location atest-83.ly:5926:14>
in music: measure 1, moment 3/4
warning: unterminated glissando
Check Glissandi:
in file: #<location atest-83.ly:5929:14>
in music: measure 2, moment 0
warning: unterminated glissando
Check Glissandi:
in file: #<location atest-83.ly:5932:14>
in music: measure 2, moment 0
[...]
HTH a bit,
Harm