musescore / musescore/MuseScore

Kinetic Scrolling of the Score

Open
#30,952 6 comments 2 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.