MIDI keyboard input to transposed instruments
I have just gotten started with MuseScore 2.1.0.2 (after using Finale for many years), and have found myself pleasantly surprised at the simple yet extremely powerful (free) software that runs on Ubuntu (as I can't stand Windows 10). Part of my challenge is discovering all the ins-and-outs of this program without asking questions. Just found out how to "install" the appimage, which IMO should be listed on the download page.
Just a few feature suggestions regarding music input with a MIDI keyboard:
- I have a Yamaha PSR-248 keyboard...by no means a great machine, but it gets the job done. My problem is that when I turn it on, it "initializes" the MIDI port by sending "key down" on the lowest A-Flat on the piano (beyond the range of the PSR-248's keyboard). In Finale, I could simply switch back and forth between "select" and "speedy entry" and it would reset the MIDI driver, clearing the stuck note. MuseScore may have a feature to clear stuck notes that I haven't found, but at least for now, I have to restart MuseScore to be able to enter notes without that low A-Flat.
- MuseScore transposes the keyboard based on the instrument's transposition. However, I have some semblance of perfect pitch (from hours of entering in music in Finale), which is extremely confusing when entering notes on transposed instruments (clarinets, French Horn, etc.), as the note I press on the keyboard is NOT the pitch I hear, making me think I have my hand in the wrong place. Currently, when I am entering music on a B-Flat clarinet, if I press a "C", MuseScore writes a "C" on the staff, but I hear a "B-flat" (the sounding pitch of the transposed instrument.) I would greatly appreciate an option to disable the keyboard transposition while entering music, so that regardless of the instrument's transposition, if I press "C" on the keyboard, MuseScore writes a "C" on the staff, and I hear a "C" in the speakers. In either case, when playing back written music, MuseScore should transpose the instrument (as it does).
Thanks in advance!
Comments
For the second point, see https://musescore.org/en/handbook/concert-pitch
In reply to For the second point, see by [DELETED] 5
Not quite. I'm fully aware of the "display in concert pitch" feature, and that's not what I'm referring to. I do a lot of typesetting/transcribing/arranging, and often am just copying notes from a PDF scan to Finale or MuseScore, without bothering to decipher the transposition of the instrument. I'm just copying from a transposed scanned part to a transposed instrument in MuseScore, and after I complete the "conductor's score", then I can arrange the piece down for string quintet (or whatever).
My request is to add an option to make it so that when I press a key on the MIDI keyboard, the pitch that MuseScore plays (called "MIDI thru" in Finale) is not transposed, regardless of the current instrument's transposition status. (This does not change score playback, just MIDI thru during note input with a MIDI keyboard.) Hope that makes sense?
P.S. If I turn "Display in Concert Pitch" on, MuseScore will "MIDI thru" without transposition like I want (verified), but then I will have to mentally transpose that Eb French Horn part to concert pitch myself during note entry, which is not an exercise I'd appreciate! I'm a (BASIC and Assembler) programmer myself, and it can't be that difficult to add an option to just bypass the code that applies the transposition to the MIDI out note value during MIDI note input.
In reply to Not quite. I'm fully aware by FullSound
it can't be that difficult to add an option to just bypass the code that applies the transposition to the MIDI out note value during MIDI note input.
You asked for it ;) Here is the code https://github.com/musescore/MuseScore
Feel free to add this option. Happy to review your changes.
In reply to it can't be that difficult to by [DELETED] 5
I know I asked for it, but I'm not that well versed in C/C++...and for the life of me, I can't figure out how to use GitHub. If I spent a week trying to find the offending lines, it would be easy to bypass them (just comment out the block with /* and */ --that much C I know), but that doesn't make it an option as a solution for everyone.
In reply to it can't be that difficult to by [DELETED] 5
Well, spent 15 minutes digging around GitHub, and did I find the offending line??
From MuseScore/thirdparty/portmidi/pm_test/midithread.c, line 143 (yes, I know this forum isn't GitHub...)
/* this is a note-on or note-off, so transpose and send */
data1 += transpose;
It's easy to remove...but that doesn't make it a MuseScore option for everybody, and I don't have a clue how to implement an option.
In reply to Well, spent 15 minutes by FullSound
FWIW, I don't think that would be the right place. It's much too low-level, would probably affect all playback, not just the sound you hear during note input. The place to do it depends on whether you'd like this to happen only for MIDI input or also keyboard input and mouse input, also whether you'd like it to happen while navigating the score with cursor keys (eg, while not in note input mode). In any case, the relevant code is likely to be in the libmscore or mscore folders.
In reply to FWIW, I don't think that by Marc Sabatella
I'd only like it to apply while in note input mode. If I enter a "C" (by whichever means I have available, whether MIDI, mouse or keyboard), I'd like to hear a "C" as confirmation that I entered the right note, regardless of the instrument's transposition. And in that case, yes, the file I found would not be the right location.
When not in note input mode, hearing the notes transposed is very helpful for scoring (especially as I don't have an extremely good grasp of transposition).
Spent another while digging through the GitHub folders you mentioned, and I'm just plain lost. While I've done a little C++ programming of my own, I always found it very frustrating, and never got the hang of it (stuck in Basic, I guess). Pointers versus definitions, typecasting, header files, hierarchy, includes, etc...and forget about "point to element" ("->"). It seems to me from my experience that half of the code is written down, and the other half (how it all fits together) is in the programmer's head.
In reply to Not quite. I'm fully aware by FullSound
If I understand correctly, you want to enter the written pitch, but hear playback of some pitch that is *not* what it will actually sound like when played by that instrument, but is more in line with what that note should sound like when played by some other instrument? This seems like a highly specialized request so I can't imagine it being a high priority feature in comparison to other things being considered, but meanwhile you could disable the transposition for the instrument, enter the notes, then transpose manually as appropriate, and then re-enable the transposition for the instrument.
In reply to If I understand correctly, by Marc Sabatella
I would like the option to enter the written pitch and hear the written pitch, not the transposed pitch. Once again, this is only for note input, not playback (which should sound the transposed pitch). Perfect pitch can be a blessing, and it can also be quite the challenge! Obviously, I understand that many people probably like it just the way it is (hearing the transposed pitch while entering the written pitch), which is why I'm asking for this to be an option, so we can set it to whichever our personal preference is.
Yes, I understand your suggested workaround--not bad, actually.
In reply to I would like the option to by FullSound
Or alternatively always enter your notes on a piano staff; then copy-paste them onto the staff of the transposed instrument and transpose them as required.
In reply to Or alternatively always enter by jeetee
Almost...I'll have to really do something wonky with the key signature, 'cause when copying notes from a transposed part, the key signature won't match the concert key signature.
In reply to Almost...I'll have to really by FullSound
I'm not sure what you expect/think will happen when you copy from an instrument in one key to another. Here's how it works.
If you have concert pitch on, all notes are entered and pasted in concert pitch. If you copy a C from a piano, it will paste a concert C into an E-flat also sax staff.
If concert pitch is turned off, all notes are entered and pasted in transposed pitch. So if you enter a C on a piano then copy and paste it to an E-flat alto sax, it will paste an A. Since I don't use Midi input, I'm not sure what will happen if you enter a C on the sax line with concert pitch turned off. I would expect a C (concert E-flat) to be entered (and sounded if that option is turned on).
It works the same with other transposing instruments. A C copied from a B-flat clarinet will paste as a G on the sax...
In reply to Almost...I'll have to really by FullSound
You can make the key signature however you like. If you attach a sample score, we can help you work out a process that works.