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

Reply via email to