Video/Game Scoring, "Non-Musical" Measures: specify Duration (in frames or milliseconds) instead of Tempo

• Oct 24, 2016 - 16:59

This request relates to video or game scoring, where there might be non-musical spaces in time, spaces that will be defined by a number of video or animation frames, which can be translated to milliseconds, then to MIDI ticks at 480ppq, then to a floating point tempo value in BPS or BPM. But from the user point of view, if you are working to try to sync your score to a video or game, that measure or measures would have a duration instead of a tempo. It might be best to limit it to one measure per user-specified duration. There would still be a time signature, so that MuseScore could translate internally as needed.

Or it might be useful in a score with a section full of sampled sounds with their own predefined durations. There are some modern scores that use durations for portions of the score too, watching a clock instead of a metronome.

In this same vein, it might be useful to be able to display mm:ss.zzz, where zzz is milliseconds as a decimal value, and/or standard SMPTE code, HH:MM:SS:FF, where FF is elapsed frames, in the status/navigation bar for the selected note or measure (or instead of measure numbers within the score).

The status display is a relatively simple change. The inputting of a duration instead of a tempo requires an interactive UI change, which means it requires more careful thought and more peer review.


Comments

Some specific user interface requirements and questions for the feature:

Video, game and animation frame rates can vary. Film is fixed at 24fps. If the user wants to use Frames as the unit, there must be a place for them to specify the frame rate for this score. This applies to the display of elapsed frames as well as the user input of a duration in HH:MM:SS:FF. The best widget is probably a drop-down list, because there are preset frame rates that everyone uses.

The duration specifier can be either:
a) An option within a Tempo element
b) A new type of element, separate from Tempo
I tend towards option a), because it avoids the conflict of a duration and a tempo attached to the same note.

Option a) requires that the Tempo Inspector add these UI widgets and behaviors:
1) Widget: Tempo vs. Duration (radio buttons?) what is the name/label for this radio group?
2) Widget(s): Duration input box is formatted text: HH:MM:SS.zzz or SS.FF, or it's separate inputs for Hours, Minutes, Seconds, then Milliseconds or Frames.
3) Widget: Duration Units: Milliseconds vs. Frames (radio buttons?)
4) Disable or hide BPM input if Duration selected
5) Disable or hide Duration input if Tempo selected

The status display might create another user option, to hide or show elapsed frames or milliseconds.

In reply to by sideways

I would do it the other way around.

1. Indeed, we first need a place to choose the FPS.
2. In the play panel, eventually in the status bar, we can display the number of frames in addition to the current HH:MM:SS display
3. I would not try to mix tempo and duration. Instead I would add another element in MuseScore to be displayed at a given time (HH:MM:SS:FF), a time marker? it would by default display the current time. This time marker would move if the user changes the tempo of the music before the time marker.
4. We would probably need a function to adjust the tempo to match a time marker position with a position in the score.

In reply to by [DELETED] 5

edit: Your solution implies that to set a full duration I would need two elements, a start time and an end time. I don't like that from a UI perspective. I see the desire to know the starting point, but the user doesn't specify that, MuseScore does. The user sets the duration. I was thinking of this as a type of tempo marker. It encompasses the notes, measures up until the next tempo marker. But should be just one element, with a system-defined start time, and either a duration or end time input - ideally both, where one calculates the other on the fly. Again, that's what DAWs like Pro Tools do.

Your solution requires a #5 a) or b) - a) code to ensure that a duration element and a tempo element are not attached to the same note b) code to sync the two values when the user changes one or the other.

You're leaving out the milliseconds units, which is a commonly used unit in animations and is far more precise than any frame rate, which maxes out around 150fps.

Internally converting time to ticks to tempo is part of my original description. Making that a user duration to tempo calculator is another, less code-intensive option, but that solution doesn't appeal to me as much.

The play panel is a good place to display/input values, but it should also display as part of the status/navigation bar when the play panel is not visible.

Attached is a sample .mscz file with 2 examples of how this might display, and how it might be used (first is attached to a fermata, second is attached to a full measure rest). It only uses the HH:MM:SS:FF format, not milliseconds yet. For duration, you can shorten the display be only the used digits. 00:00:02:14 can be displayed as simply 02:14, or 2:14.

It also depends on how much you want to display in the score, and how much you want in the Inspector. This is just a starting point, using tempo markings with alt text. Feel free to mark this up further with other ideas so we can discuss them in the context of an actual MuseScore score.

Attachment Size
TimeVsTempo.mscz 18.99 KB

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