|
From: | Gianmaria Lari |
Subject: | Re: tempo percentage |
Date: | Mon, 27 Nov 2017 07:39:46 +0100 |
You need exact numbers. So \increaseTempo ##e2.5 should work. Which isGianmaria 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?
equivalent to \increaseTempo #5/2 .
Either that, or you write instead of factor something like
(rationalize (inexact->exact factor) #e0.0001)
--
David Kastrup
[Prev in Thread] | Current Thread | [Next in Thread] |