lilypond-user
[Top][All Lists]
Advanced

[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



reply via email to

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