lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Midi: tremolo vs n:m


From: Benjamin Tordoff
Subject: Re: Midi: tremolo vs n:m
Date: Sun, 16 Oct 2022 21:33:53 +0100

Great - thanks for the quick response and work-around.

Ben

> On 16 Oct 2022, at 21:12, Jean Abou Samra <jean@abou-samra.fr> wrote:
> 
> 
> 
>> Le 16/10/2022 à 21:20, Benjamin Tordoff a écrit :
>> Hi all,
>> 
>> My understanding is that "\repeat tremolo 4 {c16}" and "c4:16"  should be 
>> equivalent, the latter just being a (welcome) shortcut for the former. In 
>> the PDF output (without expanding repeats) they look identical however in 
>> the midi playback (with repeats expanded) the former plays as four 
>> semi-quavers but the latter as a single crotchet. This seems wrong.
>> 
>> % This should produce 8 semi-quavers:
>> \version "2.23.10"
>> \score {
>>    \unfoldRepeats {
>>        \repeat tremolo 4 {c'16}
>>        c'4:16
>>    }
>>    \midi {}
>> }
>> 
>> Is this a bug, or am I doing something wrong here?
> 
> 
> 
> Yes, this is a known issue,
> 
> https://gitlab.com/lilypond/lilypond/-/issues/6145
> 
> Here's a workaround you could use:
> 
> \version "2.23.14"
> 
> fixTremolos =
> #(define-music-function (music) (ly:music?)
>    (music-map
>     (lambda (m)
>       (let ((event (any (lambda (a)
>                           (and (music-is-of-type? a 'tremolo-event)
>                                a))
>                         (ly:music-property m 'articulations))))
>         (if event
>             (let* ((total-tremolo-duration (ly:music-property m 'duration))
>                    (tremolo-type (ly:music-property event 'tremolo-type))
>                    (one-tremolo-note-duration (ly:make-duration (ly:intlog2 
> tremolo-type)))
>                    (tremolo-note-count (/ tremolo-type (expt 2 
> (ly:duration-log total-tremolo-duration)))))
>               (set! (ly:music-property m 'duration)
>                     one-tremolo-note-duration)
>               (set! (ly:music-property m 'articulations)
>                     (delete! event (ly:music-property m 'articulations)))
>               (make-music 'TremoloRepeatedMusic
>                           'repeat-count tremolo-note-count
>                           'element m))
>             m)))
>     music))
> 
> unfoldRepeats = \unfoldRepeats #'() \fixTremolos \etc
> 
> %%%
> 
> music = { c'2:16 \repeat tremolo 8 c'16 }
> 
> \new Score <<
>   \new Staff \music
>   \new Staff \unfoldRepeats \music
> >>
> 
> 
> 
> Best,
> Jean
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]