Dorico adds .0001 to BPM

I entered 66, which was automatically
tempo adds .0001
changed to 66.0001

1 Like

Yes. It does that on many mm markings.

I think it’s a rounding error, it’s inherent to how BPM is calculated. It’s precise enough not to cause trouble, but still, it’s there.

In MIDI, a tempo is specified as the number of microseconds per quarter note. If we divide 60,000,000 microseconds per minute by 66 quarter notes per minute, the truncated quotient is 909090 microseconds per quarter note. If we now divide 60,000,000 microseconds per minute by 909090 microseconds per quarter note, the quotient is 66.000066 quarter notes per minute, which Dorico rounds to 66.0001 quarter notes per minute.

3 Likes

I believe this is simply a case of Dorico exposing the true underlying value. I’m by no means a computer science expert (that I think may be the biggest understatement I’ve ever made), but there are various different IEEE standards for the way in which floating point numbers are expressed in binary, using different numbers of bits to represent the exponent and the mantissa, and these have different trade-offs. Certain integers cannot be represented exactly, instead being rounded by some vanishingly small degree. (I recently watched a fun video about the fast inverse square root algorithm used in Quake III, which touches on the way floating point values are encoded in binary; you might also enjoy it – or you might not!)

For tempos in particular Dorico tries to show the floating point value to a reasonable amount of precision, since some people do seem to require knowing tempos to the level of thousandths of beats per minute. But perhaps we should always explicitly round these values to, say, three decimal places.

2 Likes

I’d say leave it. It wouldn’t be such a bad thing for people to get used to facing the truth. :smiling_imp:

3 Likes

I hate to disagree with @dspreadbury, but there is no IEEE floating point format which cannot represent an integer as small as 66 exactly. In order for an integer to fail to be represented exactly, the number of bits needed to represent its magnitude would have to exceed the number of bits in the mantissa of the floating point format.

To add further credence to the explanation I gave in an earlier post in this topic, try entering q=522 in the tempo popover; the tempo is displayed as 522.0024 in the properties panel. If we divide 60,000,000 by 522 and discard the fractional part of the quotient, thereby truncating toward zero, the result is 114942. If we now divide 60,000,000 by 114942 and round the quotient to four decimal places, the result is 522.0024 as displayed in the properties panel.

1 Like

Yes, @johnkprice is correct. It’s a MIDI aspect. My question is,. why display so many decimals in Dorico? Its actually annoying and misleading. I have to check and think about it every time. If I enter 66 BPM, I really dont care about four or five or six decimal places, and neither can musicians achive that (reql playsers, that is).

3 Likes

This is why I shouldn’t weigh in on computer science topics. I’m a musician by training, after all! :slight_smile:

And indeed I see now John that your explanation earlier in the thread is indeed absolutely right.

1 Like

There is some relevance to fractional bpm in film scoring where it sometimes is necessary to use them to sync up the music exactly to the action and these tempi will indeed reflect in the clicktrack for the recording.

1 Like

I had thought that to be the case and a valid need. Many of us don’t do film scoring and these little adjustments are not needed or wanted.

Okay, so just throw film professionals under the bus.
Right! :roll_eyes:

1 Like

Do film professionals make adjustments of the order of 0.0001 BPM? Just asking. Seems way too precise to me.

And still, if I am not film scoring, and I want 66 BPM, why should I have excess - and inaccurate - decimals displayed, when I have entered 66 exactly?

One could argue that this is a trivial thing, but as mentioned in a previous post it always gives me pause every time I see it at first.

In some cases we let the software calculate the needed tempo to hit a certain hit point where indeed fractions up to the fourth decimal might be possible. Showing the fourth decimal combined with the explanations earlier in this thread seems like an unavoidable technical limitation of the MIDI standard.

If your base speed were 66bpm with an error of 0.0001bpm and your film speed were 60fps (4k video), then by the end of a 2hr film the cumulative mismatch would be just 0.36 frames! @Andro is right.

Right, but eliminating that last digit at worst case doesn’t mean an inaccuracy of .0001bpm but .0005bpm and I’m really not sure whether an argument whether it should show 3 digits because 4 supposedly is too much of an eyesore is worth fighting.

1 Like

Because a tempo in MIDI is an integer expressed in microseconds per quarter note, it is impossible to achieve a tempo of exactly 66 quarter notes per minute. When you enter the desired tempo into Dorico, it first calculates the MIDI tempo value and then displays the actual tempo rounded to the nearest ten thousandth of a beat per minute. The actual tempo will be close to but not necessarily equal to the desired tempo.

What if Dorico displayed tempos with only two digits to the right of the decimal point instead of four? Then someone would eventually enter q=564 into the tempo popover, which Dorico would display as 564.01, and we could have a forum topic entitled “Dorico adds .01 to BPM” and have this discussion all over again.

Ultimately Dorico has to strike a balance between those who have a legitimate need for tempos with fractional beats per minute and those who are confused when the tempo they want isn’t the tempo they get.

3 Likes

My Studio One Professional 5.3.0 DAW displays tempi to 2 decimal places. Using the ‘irrational WRT MIDI’ tempo of 66 here is what we have:

image

Two decimal places is surely adequate, isn’t it? I do not deny the need for fractional tempos but I still claim 4 decimal places is misleading with its supposed level of accuracy, even if arithmetically correct. As far as I know Studio One is used by thousands of industry professionals and so far I have not heard complaints on forums that two decimal places of accuracy is inadequate.

Studio One (as any DAW) works with 4 decimal digits. You can enter 66.0001 and it will show it and play it accordingly. I don’t really understand why we’re having this discussion. In the MIDI world, 4 decimal digits are and have been standard, if I import a tempo track from a DAW into Dorico, I expect it to interpret and work with it as accurately as its source. Even if the fourth decimal digit in most cases is practically irrelevant, just not complying with the common form that all other DAWs work with will create potential problems when interchanging things between different softwares and platforms which is common practice in the scoring world.

1 Like

We are having the discussion because people (namely, the OP, and myself…) are confused about it, and there are even various different conflicting explanations about it in the thread, and the OP has marker the answer about IEEE rounding as the solution, but we think it is a MIDI aspect.

But I will now shush.