Non-lossy transposition

• Nov 28, 2009 - 15:36
Type
Functional
Severity
S4 - Minor
Status
active
Project

MuseScore transposes to the correct pitches but frequently spells the pitch incorrectly. This becomes critical when switching between concert pitch and written pitch for transposing instruments. For example:

  1. Create a new score for Bb trumpet
  2. Add a B flat to the score
  3. Notes > Concert Pitch (to switch to concert pitch)
  4. Notes > Concert Pitch (to switch back to written pitch

Expected behavior: In step 4 you should see the B flat as written in step 2

Actual behavior: In step 4 the B flat is respelled as A sharp. Although it is obvious and easy to correct when you have only one note, it is less obvious when you are working on a full score and the correct pitch spelling is lost.

Discussion: I am not yet comfortable with C++ and Qt to code this but I wrote up the details necessary to implement non-lossy transposition. See Interval transposition in MuseScore .


Comments

The new interval-based transposition works reliably for me (unless the transposed notes get into triple sharps/flats and then MuseScore hangs).

In the key-based section of the transposition dialog I originally proposed a drop-down menu with the letter names only. This works in Sibelius because it distinguishes between major and minor key signatures and can easily detect if the current selection is C major or A minor for example. MuseScore does not distinguish between major and minor keys that share the same number of sharps or flats. Therefore I changed the drop-down menu from single letters to the full key signature names (e.g. "C major / A minor" instead of simply "C") in r. 2599.

The hang on triple sharps/flats (they are reduced to double sharps/flats) is fixed now.
The "add interval" commands now use the same algorithm used for transposition by interval.
Still work in progress...

I'm new here but i noticed that in transposing using key names does not cause the chord names to change at all. Using interval-based transposition does cause the chords to change; however, in going up a major 2nd from Bb Major to C Major, the Bb Major chord is rendered as B# -- ouch. Transposing up a Major 3rd caused the program to freeze.

This is version 0.9.6 beta on Ubuntu.