Rhythm mode: duration command should use pitch of previous note where possible

• Jun 18, 2020 - 17:46
Reported version
Ergonomical (UX)
S5 - Suggestion

A number of requests over the years in the forum have started to solidify in mind as one simple request:

In rhythm mode, currently the duration commands always enter notes on the middle line,. This is because we assumed people would enter a complete phrase first, then go back and use repitch mode. But we were wrong. I mean, people do this, but they also want to be able to repitch notes as they go, using the up/down keys. And for this purpose, copying the pitch of the most recently entered note makes way more sense.

For people using rhythm mode as originally conceived, this change is a no-op - the previous pitch will still be the middle line. But for people who change pitch using up/down, this is an enormous time saver, as the pitch of the next note is much more likely to be close to that than to the middle line. This ends up being a "poor man's Capella" mode, behaving almost as if the note input cursor could be moved vertically from line to line.

See https://musescore.org/en/node/306781 for further discussion and some links to previous threads.


This also makes way more sense for drumset, allowing you to enter rhythms for individual drums. Huge win there, really. We'd probably also want to copy the stem direction.

Status PR created fixed

Fixed in branch 3.x, commit 981b259f0b

_fix #306936: use previous pitch/line in rhythm mode

Resolves: https://musescore.org/en/node/306936

Currently we always use the middle line
when entering pitches in rhyhtm mode.
This simply improves the algiorthm
to use the last entered pitch instead,
to facilitate a repitch-as-you-go approach
that has been a common request especially lately.

Also improved the default when these is no last entered pitch.
Previously we always tried to use line = 4,
which may or may not be the middle line.
Now we actually calculate the true middle.
For drum staves, this value produced random results,
because it depended on a pitch calculation.
I replaced this with using the current drum note from palette,
or first valid note in drumset.
For tab, the original algorithm also produced meaningless results,
usually resulting in an unplayable low note on the bottom string.
Instead, I use fret 0 of the current string._

Fix version