musescore / musescore/MuseScore
Keeping horizontal position (time) when moving cursor among staffs
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
Allow the edit cursor to jump across staffs, while keeping its horizontal position (timing)
Problem to be solved
We have a pair of actions like this (no key binding by default). But when jumping among staves / voices it won't keep the time of the cursor.
-
Suppose I'd like to write something like this for piano:
after finishing the bass clef, I press[, but the cursor jumps back to the start of the measure:
-
Another case, if I wanna enter the drums in fig.a:
Looking at the drum gizmo, I typeBGBGBGBG...but it results in fig.b instead.
It can be easily confirmed that this problem is caused by the same behavior of the edit cursor jumping:
The score looks like fig.c with the first 4 notes. When I type the next B, the cursor tries to move to position 4 of voice 2, only to find it is in the middle of the quarter rest at position 3. Thus it moves itself forward to find the closest note start (rest start in this case), which is at position 3. Manually move the cursor with a]yield the result of fig.d, in which the cursor sits at where the next kick would actually be.
Prior art
I don't use other notation software but found this from tanta's video:
Dorico seems to have a time ruler system, making this kind of input a little easier, but looks like it's not suitable for Musescore.
REAPER has a pair of actions like this:
Their names are strange but basically it's moving selected notes to treble clef or bass clef, plus making new input notes appearing on that clef.
(I use REAPER a lot but not for notation; someone told me that, and said although being generally bad at notation, REAPER does make piano sheets faster, and with musicxml exporting one can then edit it in MS later. Haven't tried this tho.)
Additional context
Some further thoughts:
- Merely adding these two shortcut will solve this problem for my case, but may not benefit in larger project scale, say writing for a full orchestra and want to continue a violin line on flute. Some possible solutions include adding a vertical line as global input time (and indicate that Musescore has memory of it), or maybe an extra hotkey or modifier based on current note input mode, to make new notes appear after last input timing position. I'm not quite sure if these are good ideas...
- For this particular case, I can just enter them all in bass clef, copy to treble clef and delete some notes. But it doesn't work when music become more complex, like #19046, in which case I came up with a different idea but doesn't work either.
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
No files or tests are named. Start by tracing the existing actions for moving the edit cursor among staves and voices, including the [ and ] shortcuts, then determine how cursor timing is selected across voices. Done should preserve the cursor's horizontal time position when changing staffs or voices without disrupting note entry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100