Skip to content

Commit dd26cd2

Browse files
committed
Fix #311792, GH#23063: Override alter tag with note tuning value if present
Code revivew issues from musescore#25022, for musescore#6693, that had been ported earlier
1 parent 0eccb13 commit dd26cd2

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

importexport/musicxml/exportxml.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3824,27 +3824,22 @@ static void writePitch(XmlWriter& xml, const Note* const note, const bool useDru
38243824
xml.tag(useDrumset ? "display-step" : "step", step);
38253825
// Check for microtonal accidentals and overwrite "alter" tag
38263826
const Accidental* acc = note->accidental();
3827-
double alter2 = 0.0;
3827+
double microtonalAlter = 0.0;
38283828
if (acc) {
38293829
switch (acc->accidentalType()) {
3830-
case AccidentalType::MIRRORED_FLAT: alter2 = -0.5; break;
3831-
case AccidentalType::SHARP_SLASH: alter2 = 0.5; break;
3832-
case AccidentalType::MIRRORED_FLAT2: alter2 = -1.5; break;
3833-
case AccidentalType::SHARP_SLASH4: alter2 = 1.5; break;
3834-
default: break;
3830+
case AccidentalType::MIRRORED_FLAT: microtonalAlter = -0.5; break;
3831+
case AccidentalType::SHARP_SLASH: microtonalAlter = 0.5; break;
3832+
case AccidentalType::MIRRORED_FLAT2: microtonalAlter = -1.5; break;
3833+
case AccidentalType::SHARP_SLASH4: microtonalAlter = 1.5; break;
3834+
default: break;
38353835
}
38363836
}
38373837
// Override accidental with explicit note tuning
38383838
qreal tuning = note->tuning();
3839-
if (fabs(tuning) > 0.01)
3840-
alter2 = tuning / 100.0;
3841-
// `alter` represents the "regular" (Western) pitch which can be
3842-
// 0 (natural), 1 (sharp), -1 (flat), etc. or some other integer depending on transposing instruments.
3843-
// `alter2` represents a microtone or manually-adjusted note tuning.
3844-
// In MusicXML, These two values are merged in the same "alter" tag.
3845-
// https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-alter.htm
3846-
if (alter || alter2)
3847-
xml.tag("alter", alter + alter2);
3839+
if (!qFuzzyIsNull(tuning))
3840+
microtonalAlter = tuning / 100.0;
3841+
if (alter || microtonalAlter )
3842+
xml.tag("alter", alter + microtonalAlter );
38483843
xml.tag(useDrumset ? "display-octave" : "octave", octave);
38493844
xml.etag();
38503845
}

0 commit comments

Comments
 (0)