Transposing Instrument scores from XML

• Feb 15, 2022 - 22:52

This question is about the Staff/Part Properties box.
When I import scores from XML that have parts for transposing instruments, they play correctly in both "Concert Pitch" on and off, but the transposing information doesn't show in the Staff/Part Properties box until I "Change Instrument" to the named instrument from within MuseScore.

Here is the Part Properties info shown right after import from XML for "Horn in F":
Horn in F from XML.png
And here is the same Part Properties info after having MuseScore "Change Instrument" to the "Horn in F":
Horn in F from XML, reset in MuseScore.png

I have included the XML file and my MuseScore file for analysis.
Can someone explain this behavior?


I can't explain it, just confirm.
Edit: actually I can explain, see below ;-)
Seems a bug to me, and I've seen it several times before (last time just recently), but can't find a record in the issue tracker.

Interesting: when looking at the instruments of this score, none are transposing, but do have the correct transposing key sig, and also the setting of radio buttons "Up" and Down" differs between those that are non-transposing ("Up") and those that are (supposed to be) transposing ("Down").
The key sigs do respond to the Concert Key setting too, just the pitches stay where they are.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "">
<score-partwise version="2.0">
  <creator type="composer">Menuetto da capo.</creator>
  <creator type="poet"></creator>
   <software>Neuratron PhotoScore</software>
   <encoding-description>MusicXML 2.0</encoding-description>
  <source>Scanned sheet music</source>

So might be a bug in PhotoScore?

Hmm, maybe not:


for the Clarinets and


for the Horns in F and


for the Horns in E-flat and


for the Contrabasson. Looks correct to me

In reply to by Jojo-Schmitz

But apparently the diatonic element is optional, while the chromatic element is mandatory, so the importing program would need to somehow calculate the former from the latter.
Like with

        if (!interval.diatonic) {
            interval.diatonic = round(interval.chromatic * 7.0 / 12.0);

Or by just using the existing chromatic2diatonic(int semitones)...

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