Tempo Change Functionality Update: Allow users to select relative or absolute tempo changes

• Sep 17, 2023 - 16:00

Hi,

Overview

I'd like to propose an update to the current MS 4.1.1 tempo change functionality. Specifically, I think allowing it to function more like the MS3 TempoChanges Plugin would give more expressive control to the user if they want it.

Reasoning

I mentioned this in this Github comment I wrote but I'll review my reasoning here as well.

In MS 4.1.1, the tempo change is relative; you set the starting and ending notes of the tempo change but the slowdown or speed up is computed using percentages (i.e. 50% slowdown or 175% speedup). You also have to manually keep track of the current tempo marking that acts as the start tempo of the tempo change which may be several /measures pages before. Similarly, the control of the exact curve that the tempo change follows in built-in MS4 is limited to 2 options. This becomes difficult to manage and know the exact tempo that MS4 is using internally if you want to do complex tempo transitions (like multiple rit. or accel. back to back, each slightly different). That and I still don't know what the exact tempo at the end of the tempi without busting out a calculator to compute it myself.

In the plugin version, however, I have significantly greater control. I can control the start and end BPM, how to get there with the curve setting, and the exact starting and ending notes in which it is applied. This method is absolute since you know the start and ending tempos and there is less ambiguity.

This issue was raised once before in the Musescore forums here.

Proposed Implementations

  • Keep current relative tempo change computation and allow user to toggle to more advanced absolute tempo change (i.e. the MS3 plugin)
  • Replace current implementation entirely (which may be wasteful of current work)

Conclusion

Making this functionality available with MS4 for users that want more control would be fantastic. Right now, MS4 tempo change is okay but the tweaking I have to do to achieve the same results with the MS3 plugin is more effort and the end result is generally not to the quality that I'd like.

I'm a software engineer by day so I know how to use git and submit PRs; I can contribute if the devs think that will help.

Thanks,
Bassam Bikdash


Comments

There are so many things that need to be improved that it's hard to know where to start. This is ....interesting.
For the sake of discussion, let's consider a live performance. In the process, the score calls for the tempo to slow down. The tempo may not be specified, but the conductor slows down an amount that seems right at the moment. Later there is an A Tempo. So the conductor speeds back up to what they think is the original tempo. Is it exactly the same? We don't know. Does it make any difference? Probably not. There are several tempo changes as the piece goes on. I suspect that they are all controlled by what the conductor feels is right in the moment.
I think that just because we are using a computer for playback, we don't have to rely on math to render it. I think I am more interested in making the music sound like music. What seems right in the score in the moment. Which is not perfect. But it just might be music.
Again, this is just an idle thought.

In reply to by bobjp

This is a bit of an aside but I agree that being able to automate playback in a way that sounds more musical is always the end goal.

However if we want a computer to execute playback (at least in the way Musescore is doing it now which is read note values at certain time stamps and play them at a specific speed and volume), the only way to do it is through math. A computer only "understands" math.

I would say that the playback feature is and will always be an approximation of the original intent of the written music and is very helpful to get the gist of the music. I don't think it serves as a high quality representation that a performer is capable of producing and I don't think it was designed to. Perhaps in the future, AI methods will be able to better approximate more expressive playback.

To keep things realistic from a development and computer programming perspective, I don't think it's particularly meaningful to suggest "yeah, man, just make the playback sound more musical...". I don't mean this particularly about your comment but just as a thought in general. There will always be limitations to trying to get computers to do what humans can do (in certain tasks).

Which is why I suggested this feature update (which has been successfully implemented in the past): to improve the approximation a little closer to what the user envisions when they listen to the music.

Years ago, and as a former user of the cumbersome "hidden tempo texts technique" to simulate rit. and accel. in MuseScore playback, I was duly impressed when @jetee released his TempoChanges plugin:
https://musescore.org/en/project/tempochanges.
It's versatility, depth of control, and built-in interface was remarkable for a plugin:
http://jeetee.github.io/MuseScore_TempoChanges/
(In the "Show me" section, click on the various buttons under "Some common values" and observe the graph)

In your Github comment you wrote:
You also have to manually keep track of the current tempo marking that acts as the start tempo of the tempo change which may be several /measures pages before. Similarly, the control of the exact curve that the tempo change follows in built-in MS4 is limited to 2 options. This becomes difficult to manage and know the exact tempo that MS4 is using internally...

I agree that the limit of 2 control options is a far cry from the limitless possibilities of jeetee's midpoint setting facility available in the plugin's user interface.

However, keeping track of the tempo and the changes that occur (and "the tempo that MS4 is using internally") may be accomplished by observing the play toolbar to see the changes:
Play_toolbar.png
For example, and hoping this may be of some use to you:
To determine the tempo at the beginning of where you may wish an accel. to begin, you can click on a note and quickly tap the spacebar twice to toggle playback on/off. The current bpm is displayed on the right side of the play toolbar (i.e., quarter note equals bpm).
Similarly, after adding an accel. you can play it back while observing the play toolbar to see when/where the tempo changes occur and what the current bpm is at that location. Furthermore, with playback stopped, a single note under the accel. line can be selected and the spacebar toggled on/off to see the bpm assigned at that moment.

Do you still have an unanswered question? Please log in first to post your question.