musescore / musescore/MuseScore
Kinetic Scrolling of the Score
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Your idea
Hello,
It would be much more convenient for MuseScore users if the score continued to scroll after "dragging and releasing" the mouse (with gradual deceleration), that is, if it had inertial scrolling (or kinetic scrolling).
MuseScore is primarily developed in C++ and uses the Qt framework for its graphical user interface.
After some research, I found that this module uses the QEasingCurve class (in C++ and QML), which allows defining the non-linear progression of animations (via classes like PropertyAnimation or QVariantAnimation) using many predefined types (such as InOutQuad, OutBounce, etc.), which are the equivalent of easing functions.
And modifying the code is relatively simple and quick.
Problem to be solved
To transition from a static movement to a fluid, pleasant, and comfortable movement.
Difficulty navigating the musical score, moving quickly from one section to another, and a lack of fluidity in the current movement.
Prior art
They solved it by simply using an easing function or equivalent.
Additional context
Inserting this into the code is relatively simple and effective. The choice of the easing function should be such that the movement decreases in speed until it comes to a complete stop. If a click occurs in the meantime, either you drag and release (new easing), or you drag with the mouse button pressed to another location (normal movement).
Checklist
- This request follows the guidelines for reporting issues
- I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no source files or tests; start by locating the C++/Qt GUI code that handles score mouse dragging and scrolling. Compare the current movement with the requested inertial behavior, including interruption by a new drag or click, and define completion by smooth deceleration to a stop without disrupting normal movement.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100