Warn about missing repeat: Difference between revisions
New page, with the useful custom engraver by Lukas-Fabian to detect missing repeats |
m Trying to debug the page. |
||
| Line 1: | Line 1: | ||
When typesetting orchestral pieces, you will not discover if a repeat is missing in one of the parts if you proof read the score, since the repeat will be typeset anyway if it's included in some other parts. The following engraver (generously contributed in https://lists.gnu.org/archive/html/lilypond-user/2025-11/msg00172.html) automatically detects such missing repeats and issues a warning like | When typesetting orchestral pieces, you will not discover if a repeat is missing in one of the parts if you proof read the score, since the repeat will be typeset anyway if it's included in some other parts. The following engraver (generously contributed in https://lists.gnu.org/archive/html/lilypond-user/2025-11/msg00172.html) automatically detects such missing repeats and issues a warning like | ||
<nowiki><lilypond version="2.24"></nowiki> | <nowiki><lilypond version="2.24"></nowiki> | ||
Revision as of 20:45, 24 November 2025
When typesetting orchestral pieces, you will not discover if a repeat is missing in one of the parts if you proof read the score, since the repeat will be typeset anyway if it's included in some other parts. The following engraver (generously contributed in https://lists.gnu.org/archive/html/lilypond-user/2025-11/msg00172.html) automatically detects such missing repeats and issues a warning like
<lilypond version="2.24">
#(define Repeat_warn_engraver
(let
((repeat-start-anywhere? #f)) ; shared across all instances
(lambda (ctx)
(let ((repeat-start-local? #f)) ; local for one context
(make-engraver
((start-translation-timestep engraver)
(set! repeat-start-anywhere? #f))
(listeners
((volta-repeat-start-event engraver event)
(set! repeat-start-anywhere? #t)
(set! repeat-start-local? #t)))
((stop-translation-timestep engraver)
(if (and repeat-start-anywhere?
(not repeat-start-local?))
(ly:warning "Global repeat not stated in context ~a" ctx))
(set! repeat-start-local? #f)))))))
\layout {
\context {
\Staff
\consists #Repeat_warn_engraver
}
}
% Example of usage:
<<
\new Staff = upper {
c'1
\repeat volta 2 { c' c' c' }
\repeat volta 2 {
d
}
}
\new Staff = lower {
c'1
\repeat volta 2 { c' c' c' }
% \repeat volta 2 { % Mistakenly missing repeat in one of the parts
e
% }
}
>>
</lilypond>