sorry, it seems Keith was the author of the above script. Am Di., 8. Sept. 2020 um 21:41 Uhr schrieb Martín Rincón Botero < martinrinconbot...@gmail.com>:
> actually, this works for me only in the example given here > https://lists.gnu.org/archive/html/lilypond-user/2013-12/msg01085.html. > Perhaps someone (maybe Kieren) might explain to me how this script is > properly used? > > Am Di., 8. Sept. 2020 um 21:29 Uhr schrieb Martín Rincón Botero < > martinrinconbot...@gmail.com>: > >> Ah, I found this old script by Kieren that seems to do the trick :-). >> >> #(define (append-merge x l r) >> "Add x to the head of list l, merging skips, >> and if r is true also merging full measure rests." >> (if (and (pair? l) >> (ly:music? x) >> (ly:music? (car l)) >> (or (and (music-is-of-type? x 'skip-event) >> (music-is-of-type? (car l) 'skip-event)) >> (and r >> (music-is-of-type? x 'multi-measure-rest) >> (music-is-of-type? (car l) 'multi-measure-rest))) >> (not (pair? (ly:music-property (car l) 'articulations)))) >> (let ((total >> (ly:moment-add >> (ly:music-duration-length (car l)) >> (ly:music-duration-length x) >> ))) >> (set! (ly:music-property x 'duration) >> (make-duration-of-length total)) >> (cons x (cdr l))) >> (cons x l))) >> >> mergeSkips = #(define-music-function >> (parser location rests-also music) ((boolean?) ly:music?) >> "Merge successive skips in sequential music, >> optionally merge full-measure rests as well." >> (music-map >> (lambda (m) >> (if (music-is-of-type? m 'sequential-music) >> (ly:music-set-property! m >> 'elements >> (fold-right (lambda (x l) >> (append-merge x l rests-also)) >> '() >> (ly:music-property m 'elements)))) >> m) >> music)) >> >> mergeFullBarRests = #(define-music-function >> (parser location music) (ly:music?) >> #{ \mergeSkips ##t $music #}) >> >> Am Di., 8. Sept. 2020 um 20:55 Uhr schrieb Martín Rincón Botero < >> martinrinconbot...@gmail.com>: >> >>> Hello again, >>> >>> my workflow with Lilypond involves using Frescobaldi and its useful >>> point & click. It also involves adding many "empty" measures (explicit >>> measures containing a full bar rest with no "multiplication", so: R1 R1 R1, >>> etc.) so that during composition I can just click on a rest wherever I want >>> and Frescobaldi takes me right to the line of code (I write one full >>> measure rest per line) and I just change the corresponding rests with >>> music. This has the great advantage that I don't have to count anything. I >>> just click where I want the music to be and replace silences with music >>> (much like in Sibelius or Musescore). However, the pending task will be at >>> the end of composing to clean all these repeated full bar rests and write >>> the explicit multiplications (R1*5, etc.), so that \compressFullBarRests >>> works in the parts. This makes me wonder if it's possible to "force" >>> Lilypond to always display full bar rests in a single staff (f. ex. in the >>> parts), or in multiple staves that have several full measure rests >>> simultaneously (percussion parts, for example), without having to >>> explicitly tell it how many measures that is, but instead, to make it >>> calculate that for me while compiling out of several single full measure >>> rests. This would essentially make that last manual task superfluous ;-). >>> >>> Best regards, >>> Martín. >>> >>> -- >>> www.martinrinconbotero.com >>> >> >> >> -- >> www.martinrinconbotero.com >> > > > -- > www.martinrinconbotero.com > -- www.martinrinconbotero.com