2016-12-05 16:52 GMT+01:00 Brin Solomon <amphio...@gmail.com>: > 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 lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user