Pitch before Duration input method

• Jul 19, 2021 - 05:52

All the exiting note input methods are based on the Duration first rule. There had been suggestions and discussions about the other way around before. It appears that there are some popularity for the Pitch first method, as it is available in all other three major apps now. I consider the advantage of Pitch before Duration method when inputting only using computer keyboard as:
1. Improved ergonomics. Unlike one hand on numbers while another on A-G, With left hand on the number keys and right hand on the arrow keys, two hands are properly separated (This requires the pitch can be defined by the up/down arrow keys).
2. Not needing to worry about the letter names, I can think in terms of relative pitch, which can be very musical. In my case, I have the solfege in mind. As long as I find the tonic note, the rest are all relative.
3. By reducing A-G seven letters to two arrow keys, the process is greatly simplified, thus increased speed.
I genuinely hope MU can add this new input method, as Solfege is a recognized, if not the mainstream approach. Thanks for your consideration.


How do you envision pitch being defined by the up/down arrow keys?
There is one up arrow and one down arrow. How do 2 arrow keys cover all notes A-G?
Then there's the matter of sharps and flats.

In reply to by Jm6stringer

In Solfege system, it is easy to think in terms of interval even without knowing their letter names. In G major, for example, the tonic is G(Do), the second scale degree is A(Re), the third is B(Mi). When I input a melody like G-A-B, I have “Do-Re-Mi” in my mind instead of G-A-B . After I find the tonic G, I hit the up arrow key once to bring the caret to A, and then hit number key for the duration. So, to input the melody comprised of all 7 scale degrees, I just hit the arrow key X number of times according to the interval. To save time for the higher scale degree, La (E, the submediant) i.e. I use Comd+up arrow to bring the caret one octave up, then hit the down arrow key twice( it’s faster than hit up arrow key 5 times to get to the La). It seems tedious, but I can do it very fast because I rely on the input sound to judge if the notes are right, rather than check the letter names. In Sibelius, to use this method of input, you need to do some setting in the Preferences first. Please see the attached screen shot. It is also necessary to set the shortcut to notebook keyboard in the General tab. For the accidentals, you will need to use mouse to click them on the Tool menu or on the Palette after the input (the behavior of the arrow keys are different in Duration first and Pitch first method). I hope there will be shortcuts for the accidentals in the future though.

Attachment Size
SibeliusPreferences.png 679.05 KB

In reply to by ysu168

FWIW, if you press "R" while in note input mode, it repeats the previous pitch, and then you can use up/down to change pitch (chromatically, but Alt+Shift+Up/Down moves diatonically, and you can customize that in Edit / Preferences / Shortcuts). So as far as I can see, it's basically the thing as you are describing.

In reply to by jeetee

This seems to work perfectly to address the duration after pitch issue. I like that the note is actually displayed, unlike with dorico where you don't actually get the note until you assign a duration.

This ends up being just like noteflight, which is the most intuitive note entry method for me. Well done!

I bet most of us, unless you are a percussionist, always think pitch first, whether you are performing or composing. Then, the note inputting should follow the same order. Without the pitch, we have nothing to think about it’s time value. What’s why I feel Pitch Before Duration method is more natural.

Your suggestion is a valid one, but I don't see how pressing 4 times up arrow to enter a D after a A would be faster than just pressing D.
My fingers are used to the letters to enter notes, and using them is as quick as a single key press can be.

Although I don't share the OPs interest in solfege, I do like doing pitch first, because, like so many musicians, I start playing a note before I end it ;) Noteflight works this way, and it's still the fastest for me, although I have to do serious work in Sibelius or Dorico (only now probably with musescore!)

The 'selected note' workaround really does work fine, there is one adjustment I'd like to see.

The keycommands for adjusting length of a just-entered note include 'halve and double selected note length', and then 'halve and double selected duration (including dot)'

I can live with using the second of these two, but ideally I would only use the first pair and have a third option:
'add dot to duration of selected note'

That said, a possible alternative note-length option I'd like to suggest, which really would be 'musical':

Advancing the caret increases the length of the existing note.

For linear note input, what follows the current note must be either a rest or another note. Currently moving the caret 'creates' rests.... which can just as easily be created with '0'.... This approach is more commensurate with how music is played, vs. how it is notated, and the end of the note, or 'note-off' gets created either by inserting a rest or another note. As a musician playing a note, I'm not thinking 'maybe I'll double the length of this note', I'm thinking 'maybe I'll hold this note out for another beat or two or three'.

Not for everybody, I'm sure. And probably some issues to be worked out, given I just thought of this as I was writing this reply! ;)


In reply to by woodslanding

Okay, I did some more thinking about this, and the command 'increase selected note length' would be an utter game changer, especially for folks who perform music more than writing it.

Here is a little test ditty:


Here is the current set of keycommands to create that passage:

select 1/2 note
select quarter note
add dot
select 8th note
select quarter note

14 keystrokes total....

or the way I currently do it:
select 1/4 note
double incl dot
double incl dot
halve note incl dot
halve note incl dot
halve note incl dot
halve note incl dot
double note incl dot
double note incl dot

18 keystrokes. More strokes, but fewer unique strokes. I might prefer using straight double and half commands for this, but repeating a key is easier than finding a different one, or worse yet, having to mouse.

Now, with the increaseNoteLength command, look at what the keystrokes are. In the following example, the keycommands can all be written out as EIGHTH NOTES! I changed the noteheads to show the increaseNoteLength command as a circle, and the '0' command as an X. You start by selecting 8th note for duration:

Now of course, you will lose the rhythm as soon as you have 16th notes, or a triplet. (If you have a bunch of 16th notes, you'd want to set that as the basic duration) and there are no octave skips or accidentals here. But still, from a musical perspective, the 'flow' of this writing is, I think, indisputably better than the one above.

What do you all think??

In reply to by woodslanding

I'm not following how this proposed command would work, but for the record, not only is your second example more keystrokes, it's also more thinking to decide whether to increase or decrease the duration.

If I assume this "increaseNoteLength" command works similar to the existing increase duration command but increasing the most recently-entered note while leaving the selected duration on the toolbar unchanged, then this is objectively by far the least efficient - 24 keystrokes. I can't imagine that being preferable to many people, but also, seems it would be pretty easy to write a plugin for that.

In reply to by woodslanding

sorry, computer crashed and sent(!)

Number of keystrokes is not the issue at all. Yes it's a few more keystrokes, my point is that all keystrokes are not created equal.... It's the ease. Except for note names, there are only two keys required in example 3, where as the first example uses 6. Also, most of the keys are repeated strokes (which is why example 2 is easier for me...once again, only 2 keys plus note names.)

If I'm using a midi keyboard, in both cases I can put two fingers on two keys and never move them. That's a different model of efficiency, and one a drummer can appreciate, especially if EACH KEY REPRESENTS THE SAME SPECIFIC DURATION. I can type example 3 at 200 bpm. None of the others leverages any of my musical skills, just my ability to type random strings of numbers and letters.

You can't compare keystrokes in that situation....

If somebody can write this in a plugin, I will be eternally grateful! It will make notating finally feel something like playing.

In reply to by woodslanding

Great Idea,
Instead of having 8th note, just use the currently selected length.
If 16th note is the selected duration, then the "increaseNoeLength" would increase the note by a 16th...
If 8th note is the selected duration, then the "increaseNoeLength" would increase the note by a 8th...

In reply to by moogly81

Something like this ?


(this is an early Proof-of-concept plugin, that will (if I find sometime to finish it) only work in 3.6 (at least until the MuseScore's team stabilises the plugin API of MuseScore 4 - which doesn't seem planned for very soon).

In reply to by parkingb

Looks nice! But, although it’s true there are certain limitations in MU4 plugin API, I can’t see anything in this that wouldn’t work unchanged (other than the quit vs Qt.quit difference of course). So it should be simple to make this plugin work in either version.

In reply to by Marc Sabatella

The first uncompatible point is that it is a dock-type plugin, which is not supported by MS4. A window-type plugin wouldn't work in that case.
And honestly, I have spent so many hours trying to convert my plugin to MS4, and with such an extremely low success percentage, that I don't try any more. I write my plugins with MS3.6 in mind, using the canvas and the guidelines I wrote for MS4 plugins. If it works in MS4, fine. Otherwise, I call it quit.

In reply to by Marc Sabatella

Please elaborate... I'm open to ant suggestion.
How do you see running without UI ?
What the UI would achieve is:

  • Fast call : a click on a button is fast. Calling a plugin could be fast if one could assign keyboard shortcuts to plugin. Is this possible ?
  • Duration selection: what duration to add ? Here i've hardcoded it would be eighth note. But in the end I guess it would look like my Duration Editor plugin:
    How to you see this without a UI ? 7plugin, each dedicated to one duration, with 7 shortcuts (one by possible duration) ? Or retrieving the selected duration in the toolbar ? For this latest, I've no idea how to achieve this though plugin.

In reply to by parkingb

Yes, you can assign shortcuts to plugins.

Duration selection could be via the normal toolbar. Some of its info is available, but also you can leverage the existing increase duration commands to piggyback in it. Or just have separate plugins (and hence separate shortcuts) for eight vs quarter etc.

In reply to by Marc Sabatella

Could you elaborate this one :
> Duration selection could be via the normal toolbar. Some of its info is available
Do you mean that it is somehow possible to know (from the plugin API) which is the duration button who is selected ?
> but also you can leverage the existing increase duration commands to piggyback in it.
I don't get this one at all 8-O

In reply to by parkingb

I see in the API there references to the input state and having it sync with the cursor. I haven't tried but it sure seems like this suggests to can get and set the input toolbar that way, but failing that, you could simply execute the "pad" command to set an appropriate duration.

By "leverage the existing increase duration commands", I meant, simply call cmd("inc-duration-dotted") or whatever, and then I had the idea you could reset the toolbar afterwards. But, I see now that's what is being asked for, since I gather the desire here is that with eighth note selected, a half would turn into a half tied to an eighth. So yes, I think the ties are needed here. It's just so hard for me to wrap my brain wanting to press that many keystrokes, so sometimes I think I lose track of what is being requested.

In reply to by Marc Sabatella

> It's just so hard for me to wrap my brain wanting to press that many keystrokes,
> so sometimes I think I lose track of what is being requested.
I think you have to feel the request !

You add a note on the score. And then, in your head with the tempo in mind you click the button (or using a shortcut) at every beat until you feel like it is time to stop the note. Then you stop clicking on the button . And there you go. You have the right duration.

Did that never occurred to you that, while searching for the right duration or the right repetition number of some part, explicitly counting "1, 2, 3, ..." biased your feeling ? I occurs to me often.

At some occasion, I sing or play my passages (with a metronome) and record it. Just be able to count after and not during, to avoid being biased by some intellectual belief...

This what this request IMO is about.

In reply to by parkingb

> "You add a note on the score. And then, in your head with the tempo in mind you click the button (or using a shortcut) at every beat until you feel like it is time to stop the note."

This is almost starting to feel like how the semi-realtime manual input mode works, except there you have to keep the original key pressed while hitting the advance key.

In reply to by jeetee

Yes, that is the observation I made in the other thread. So, it would also be interesting to consider whether there would be a way to leverage that. Probably not directly via a plugin, but it might be possible to modify the code internally to allow the real-time advance comment to function this way in step-time mode.

In reply to by parkingb

The more accurate / efficient way to work out rhythms isn't based on durations but on start positions of notes. Music notation unfortunately doesn't do a good job of that, but the ways of translating from that to duration are based on seeing the big picture of the measure - the eight basic rhythmic patterns - first. So no, I'm never counting durations while entering notes; I'm entering the patterns directly, after having worked them out in my head first.

I get that during real-time input, counting can seem natural, which is why this method is provided there.

In reply to by Marc Sabatella

For me the overriding quesion here which no one has offered the answer to is:

How do you get note duration from the toolbar, and is it even possible?

I have not dug into it yet, but it sounds like the documentation for the scripting API is not up to date, so maybe a developer could chime in on this??

In reply to by moogly81

For now, I've just reused pieces from my Duration Editor plugin. I've not spend a lot of time on that POC.

Regrouping rhythms is more complicated. Because it breaks some rules of my DE plugin (whom action is strictly limited to the current measure). Here the note needs to expand outside of its start measure, which is not foreseen/possible in my DE plugin. So more development is needed. For which I may find time in the coming weeks.
But, please have a look also at the question I asked to Marc about the use of that plugin. UI or not UI ? Keyboard shortcuts ? This will influence the design of the plugin('s).

In reply to by parkingb

Ideally, I would not use any UI. I would use the l shortcut (make note Longer)

Also ideally, the capital L shortcut would do the reverse operation (make note shorter)

And also ideally, the note length would be taken from the currently selected note length. So you could change it by just typing 3,4 or 5 .

I realize this is hard work. That’s why I never started doing this work myself (despite being a Sofware engineer)


In reply to by moogly81

I was thinking to your use case and I think it doesn't work.
Let's say I have an half note somewhere and I want to increase it incrementely by eights.
How would you process ?
Select the note, press "4" and press "l" (the increase duration shortcut) ?


(here instead of pressing "l" I just click the button).
Do you see that pressing "4" begins by changing the note duration from a half to an eighth ?
And that increasing that half note by one eighth will require you 4 clicks ?
Is this how you see that feature ?
IMO I don't find that effective. Even if one could build this natively in MuseScore.
I'd prefer having a shortcut like "SHIFT+4" for incrementing the current selected note by one eighth.

In reply to by parkingb

If I have eighth note selected in the toolbar, and select a half note in the score, it doesn't immediately change it to an eighth note does it? I would hope not. I haven't noticed that happening.

The fact that the key command is dependent on the duration shown in the toolbar means that you do have to make sure that nothing is selected when you set that duration, otherwise you will change existing material. But that's true anytime you set the duration, right? If I want to enter a string of quarter notes, I'd better make sure a whole note isn't selected, or it will turn into a quarter note when I change the duration setting to 1/4. Am I wrong? I could be, I'm new, and not in front of the software.

I would expect the method to be:
for note entry:
deselect material, select duration, enter note, now previous note is selected and you can increase its duration. enter a new note, increase. Repeat.
OR, for editing:
deselect material, select duration, select any note, increase or decrease its duration by the selected duration. Repeat if desired.

If this isn't how it works, then it's definitely a more complex idea to implement. Tomorrow I'll try out the existing halve and double commands and see how they work. I have a big transcription to do, so I'll get a much better feel for note entry.

In reply to by woodslanding

When you select a note in the score, the toolbar automatically updates. So even if you previously had eighth note selected on the toolbar, it wouldn't be anymore after selecting the half in the score. And then trying to select eighth on the toobar would change the note in the score, if you did this in normal mode. But I was thinking of this more as a note input mode thing, and there, of course selecting a duration doesn't change the current note at all.

In reply to by parkingb

Let’s talk normal mode vs note input mode. The plug-in would not need to behave differently.

On the example above, you start with a half note. In normal mode, this half note would not be changed to an 8th, and we can add the corresponding length to it. It makes sense that we would be in normal mode, since the half note is already there, meaning it was already input, and we’re now coming back to it for edition.

In note input mode, the half note would be changed to an 8th. This is ok. In note input mode, you likely write “on a blank sheet”, with no notes in front of you. If you come back to edit a note, then you’re in edition mode (or normal mode). This makes sense.

Then you could write “Mary had a little lamb”: edcdee el dd dl eg gl …

For me the whole thing would only make sense if you regroup rhythm on the fly. Otherwise, in note input mode , the behavior would be the same as adding a tie using t, which already makes the current note longer.

So to reframe the feature I have in mind :
- In note input mode, it behaves like a tie, with “regroup rhythm being called at the end of each note.
- in normal mode , the current note is lengthen by the currently selected note duration.

I realize this deviates significantly from your original idea. So maybe all my comments should not be in this thread. Sorry for the noise of this is the case.

In reply to by moogly81

The plugin itself might not need to work differently between normal and note input mode, but MuseScore would need to if you plan on using the regular note input toolbar, because as mentioned, it most definitely works very differently between the two modes.

Again, if you try selecting a half note in normal mode, the toolbar updates to show half. And if you then press the eighth button, the half note itself is changed to an eighth. There would be no way to tell MsueScore, I still want this half note, I just want to start increasing its length by eighths. Unless the command didn't operate based on the toolbar, but was simply a hard-coded "increase duration by eighth note" (and a separate command for quarter, etc)

Do you still have an unanswered question? Please log in first to post your question.