lilypond-user
[Top][All Lists]
Advanced

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

Re: tempo percentage


From: David Kastrup
Subject: Re: tempo percentage
Date: Mon, 27 Nov 2017 00:24:31 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux)

Gianmaria Lari <address@hidden> writes:

> On 8 November 2017 at 18:15, David Kastrup <address@hidden> wrote:
>
>> Gianmaria Lari <address@hidden> writes:
>>
>> > Talking about midi, is there any way to to reduce or increase the tempo
>> of
>> > some measures by a certain percentage instead of setting it to an
>> absolute
>> > value?
>> >
>> > For example instead of:
>> >
>> > \tempo 4=100 a b c d
>> > \tempo 4=110 e f g a
>> >
>> >
>> > something like
>> >
>> > \tempo 4=100 a b c d
>> > \tempo 4=currentTempo*1.1 e f g a
>> >
>>
>> Well, it's not pretty (but then one can try wrapping the prettiness into
>> a music function), but here goes:
>
> I tried to make it pretties. Here it is the code:
>
> \version "2.19.80"
> increaseTempo =
> #(define-music-function (factor)(number?) #{
>   \context Timing \applyContext
>   #(lambda (c)
>        (set! (ly:context-property c 'tempoWholesPerMinute)
>              (ly:moment-mul (ly:context-property c 'tempoWholesPerMinute)
>                (ly:make-moment factor))))
>
>    #} )
>
> \score {
>   {
>     \tempo 4=100
>     a b c' d'
>     \increaseTempo 3
>     e' f' g' a'
>   }
>   \midi {}
>   \layout {}
> }
>
> This works ok only when \increaseTempo argument is integer. If i try
> \increaseTempo 2.5 it doesn't work. How to fix it?

You need exact numbers.  So \increaseTempo ##e2.5 should work.  Which is
equivalent to \increaseTempo #5/2 .

Either that, or you write instead of factor something like
(rationalize (inexact->exact factor) #e0.0001)

-- 
David Kastrup



reply via email to

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