[LAU] BPM in music software [WAS] Re: Connect pipewire to running JACK server

David Kastrup dak at gnu.org
Fri Jan 28 13:35:23 CET 2022


Lorenzo Sutton <lorenzofsutton at gmail.com> writes:

> Now... this is a very, very interesting new thread...
>
>> On Thu, Jan 27, 2022 at 5:27 PM Tim <termtech at rogers.com
>> <mailto:termtech at rogers.com>> wrote:
>>     On 1/27/22 1:08 PM, Paul Davis wrote:
>>     Hiya Paul. Could you explain that a bit more?
>>     Human exponential vs. linear, I don't quite understand.
>> Let's suppose you are playing the simplest of beats, let's say you
>> just play a note/tone at 120bpm. There's 0.5 seconds between your
>> playing.
>> To do a linear speedup, you would gradually reduce the time between
>> notes, maybe like this: 0.5, 0.45, 0.40, 0.35, 0.30 and so on
>
> I think most software users have always 'adapted' linear
> tempo-changing and ramping interfaces to try and mimic somewhat
> 'realistic' human behaviour and indeed that can be challenging :-)
>
> What I'm wondering is: when a software offers exponential ramps
> etc. isn't that just a user interface? i.e. how the software then
> calculates the ramp values automatically for the users and sets the
> BPM at certain instants depending on the granularity?
> In that case I'd assume the software is then exposing the (calculated)
> BPM to e.g. plugins or a transport mechanism if it were the 'master'?

I cannot speak in general terms, but you need to keep several sources
with different note lengths in sync.  LilyPond, a music typesetter, does
this by using exact rational numbers.  Exponential speedups/slowdowns
are pretty bad at managing the mapping of a rational note length grid to
a rational timeline, with nominators and denominators of manageable
size.  So one needs to be somewhat careful about the formulas to employ.

-- 
David Kastrup


More information about the Linux-audio-user mailing list