musescore / MuseScore

MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!
https://musescore.org
Other
11.82k stars 2.57k forks source link

Ability to transpose MIDI signal up or down #19148

Open Reloup38 opened 10 months ago

Reloup38 commented 10 months ago

Your idea

There would be a way to transpose the MIDI signal from a part up or down without altering the notation. For exemple, add a -1 transposition, play MIDI note 64, but the instrument receive the instruction to play the note 63.

Problem to be solved

This would allow for more control over midi playback, like when using a soundfont or VST at A415 you might want to transpose MIDI instead of pitch shifting.

I also allows you to fake other instruments using the "transpose then pitch shift back" method, used to fake instruments of weird transposition, and fake unison playing without messing up the notation part.

Prior art

This is a feature present in many DAWs, with very simple implementation.

Additional context

No response

shoogle commented 10 months ago

There is actually a way to do this already, but it's quite labour intensive and risks changing the enharmonic spelling of some notes.

Workaround:

Step 1: Transpose the notes

  1. Select all notes for the instrument you want to transpose.
    • E.g. select its first measure, then shift+click its final measure.
    • Or select its first measure, then press Ctrl+Shift+End (macOS: Cmd+Shift+Fn+Right).
  2. Go to Tools > Transpose.
  3. Choose "Transpose chromatically" and "By interval".
  4. Enter your desired interval (e.g. "Minor second") and direction ("Up" or "Down").
  5. Make sure that "Transpose key signatures" is selected.
  6. Press OK.

This changed how the notes look as well as how they sound. In the next step we will make the notes look like they did before, while keeping their new sound.

Step 2: Transpose the instrument

  1. Right-click on an empty region of the staff you want to transpose.
    • Empty region means a region that is not a note or a rest. You need to right click on the actual staff lines.
  2. Go to Staff/Part properties.
  3. Look next to "Transposition". What are the interval and direction currently displayed there?
    • If it currently says "Perfect unison" up or down, simply change it to match the interval and direction used in step 1.
    • If it says anything else, you must add this interval to the interval you used in step 1, taking direction into account. The result of this sum gives you the new interval to use in this dialog.
      • E.g. major 3rd up + perfect 5th down = minor 3rd down.
      • Adding intervals is tricky, but you can use trial and error until the key signature and most of the notes go back to what they were prior to step 1. There may be some changes in enharmonic spelling (e.g. C-natural becomes B-sharp, or vice versa). Pick the interval that gives the fewest of these changes.

If you got step 2 correct then the key signature and most of the notes will look like they did at the very beginning, but sound like they did after step 1.

shoogle commented 10 months ago

A proper (non-workaround) solution might be to ask this when the Staff/Part properties dialog is closed after adjusting the transposition setting:

Transposition changed How should the new setting affect notes already written in the score? ◉ Transpose the notation (keep the current sound) ◎ Transpose the sound (keep the current notation)

If the user chooses to transpose the sound then the current notation would be preserved, including enharmonic spelling.

FWIW, this is another case where the expected outcome depends on whether you are composing a new piece or transcribing something that has already been written.

Reloup38 commented 10 months ago

@shoogle while the workaround works, It has the problem of forcing you to work in written pitch. I personnally tend to compose in concert pitch then transpose to written when i have to give a part to a performer for exemple.

The old "capo setting" in musescore 3 did exactly what i would need, except you could only transpose up because you can't put a capo on fret -7, it would transpose MIDI without altering notation wether concert or written, and display the same note names i before. While i feel like this is bad for a capo feature (as i don't think you read a G on a guitar with a capo on the 3rd fret as an E...), it's exactly what would be needed for the applications i described.

rgreen5 commented 10 months ago

The old "capo setting" in musescore 3 did exactly what i would need, …

There is a capo feature in MS4 as well. See also, #16838.

Reloup38 commented 10 months ago

The old "capo setting" in musescore 3 did exactly what i would need, …

There is a capo feature in MS4 as well. See also, #16838.

Ok, so the capo setting does work for transposing up instruments, however it messes with the ranges of the instruments, which isn't a really big deal, and it's actually great for actual capo settings, but not great when you just want dumb transposition