2016-12-05 16:52 GMT+01:00 Brin Solomon <[email protected]>:
> Hello all,
>
> I'm trying to typeset a piece where one player has an unmetered cadenza
> while every other player rests. I'm trying to use mmrest-of-length to
> generate the rests, but if I use \cadenzaOn, I get the error "programming
> error: Multi_measure_rest::get_rods (): I am not spanned!" and the rests are
> not printed. This error doesn't happen if I use skip-of-rest instead, but in
> that case, I don't get the rests.
>
> Here is a minimal example that demonstrates the problem:
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> \version "2.18.2"
>
> MyCadenza = \relative c' {
> c4 d8 e f g g4
> f2 g4 g \bar "|"
> }
>
> \new GrandStaff <<
> \new Staff {
> \cadenzaOn
> \MyCadenza
> \cadenzaOff c'1
> }
> \new Staff {
> \cadenzaOn
> #(mmrest-of-length MyCadenza)
> \cadenzaOff
> c'1
> }
>>>
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> I'm running version 2.18.2 on Mac OS 10.11.6. Is there a different command I
> should be using to get a full measure rest while I'm using \cadenzaOn?
>
> Thanks in advance,
> Brin
Hi,
found some code on the list (can't say anymore who posted it
initially) and extended it a bit. See attached.
It completely avoids \cadenzaOn/Off, because of the hassle you experienced.
midi may come out strange (not tested), I don't care about midi, though ...
It's 2.15.24 code, but still working. Anyway running convert-ly over
it may be a good idea.
Maybe it helps,
Harm
\version "2.15.24"
cadenzaNotes =
#(define-music-function (parser location fermata? music cad-music) (boolean? ly:music? ly:music?)
(let* ((mus-len (ly:music-length cad-music))
(num (ly:moment-main-numerator mus-len))
(denom (ly:moment-main-denominator mus-len))
(fermata (make-music 'MultiMeasureTextEvent
'tweaks (list
;; Set the 'text based on the 'direction
(cons 'text (lambda (grob)
(if (eq? (ly:grob-property grob 'direction) DOWN)
(markup #:musicglyph "scripts.dfermata")
(markup #:musicglyph "scripts.ufermata"))))
(cons 'outside-staff-priority 40)
(cons 'outside-staff-padding 0))))
(lst (list
#{
\set Timing.measureLength = $mus-len
\scaleDurations #(cons num denom) $music
\unset Timing.measureLength
#}))
)
(make-sequential-music
(if fermata?
(cons fermata lst)
lst))))
othernotes = \relative c'' { d1 c1 }
cnotes = \relative c'' { c8[ d e f g] c,8[ d e f g]}
snotes = { $(skip-of-length cnotes) }
mnotesI = \cadenzaNotes ##t R1 \cnotes
mnotesII = \cadenzaNotes ##f \relative c'' { c2 d } \cnotes
\score {
<<
\new Staff { \othernotes \cnotes \othernotes }
\new Staff { \othernotes \snotes \othernotes }
\new Staff { \othernotes \mnotesI \othernotes }
\new Staff { \othernotes \mnotesII \othernotes }
\new Staff \relative c'' { d1 c1~ \cadenzaNotes ##t { c2\fermata g4\fermata c~ } \cnotes c1 d }
% manually:
\new Staff { \othernotes R1*10/8\fermataMarkup \othernotes }
\new Staff { \othernotes \scaleDurations #'(10 . 8) \relative c'' { c2\fermata g4\fermata c } \othernotes }
>>
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user