Syncing with audio via MIDI or BPM

The MIDI standard stores tempo in microseconds per quarter note. 180bpm (for instance) cannot be exactly represented in this format - it’s 60,000,000/180 = 333,333.333… microsecs/qn. If you convert this back to bpm you get 180.000180. When you set a tempo of 180 bpm in most sequencers, actually you’ll be setting it to 180.000180, but you won’t see this in the UI.

In Sibelius there is a conflict because tempo events are interpreted directly from the tempo text, so it has to either store as ‘q=180’ or ‘q=180.000180’. Many people don’t like seeing that number of decimal places, so you can reduce them, but then the tempo value is wrong…

In Dorico we get around these problems by treating tempo changes as a proper event type, whose text can be independent of its internal value. So we can store the value at the full microsecs/qn resolution and display the value to the user’s preferred number of decimal places.