musescore / musescore/MuseScore

Keeping horizontal position (time) when moving cursor among staffs

Open
#19,045 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
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

image

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.

  1. Suppose I'd like to write something like this for piano:
    image
    after finishing the bass clef, I press [, but the cursor jumps back to the start of the measure:
    image

  2. Another case, if I wanna enter the drums in fig.a:
    image
    Looking at the drum gizmo, I type BGBGBGBG... 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:
    image
    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:
image
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:
image
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:

  1. 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...
  2. 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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.