diff --git a/src/importexport/musicxml/internal/musicxml/exportxml.cpp b/src/importexport/musicxml/internal/musicxml/exportxml.cpp index 2525b8fb69..0b60b51e9e 100644 --- a/src/importexport/musicxml/internal/musicxml/exportxml.cpp +++ b/src/importexport/musicxml/internal/musicxml/exportxml.cpp @@ -6017,10 +6017,13 @@ static int findPartGroupNumber(int* partGroupEnd) // scoreInstrument //--------------------------------------------------------- -static void scoreInstrument(XmlWriter& xml, const int partNr, const int instrNr, const QString& instrName) +static void scoreInstrument(XmlWriter& xml, const int partNr, const int instrNr, const QString& instrName, const Instrument* instr = nullptr) { xml.startElementRaw(QString("score-instrument %1").arg(instrId(partNr, instrNr))); xml.tag("instrument-name", instrName); + if (instr && !instr->instrumentId().isEmpty()) { + xml.tag("instrument-sound",instr->instrumentId()); + } xml.endElement(); } @@ -6505,9 +6508,9 @@ static void partList(XmlWriter& xml, Score* score, MxmlInstrumentMap& instrMap) for (int i = 0; i < 128; ++i) { DrumInstrument di = drumset->drum(i); if (di.notehead != NoteHeadGroup::HEAD_INVALID) { - scoreInstrument(xml, static_cast(idx) + 1, i + 1, di.name); + scoreInstrument(xml, static_cast(idx) + 1, i + 1, di.name, nullptr ); } else if (pitches.contains(i)) { - scoreInstrument(xml, static_cast(idx) + 1, i + 1, QString("Instrument %1").arg(i + 1)); + scoreInstrument(xml, static_cast(idx) + 1, i + 1, QString("Instrument %1").arg(i + 1), nullptr); } } int midiPort = part->midiPort() + 1; @@ -6525,7 +6528,7 @@ static void partList(XmlWriter& xml, Score* score, MxmlInstrumentMap& instrMap) MxmlReverseInstrumentMap rim; initReverseInstrMap(rim, instrMap); for (int instNr : rim.keys()) { - scoreInstrument(xml, static_cast(idx) + 1, instNr + 1, MScoreTextToMXML::toPlainText(rim.value(instNr)->trackName())); + scoreInstrument(xml, static_cast(idx) + 1, instNr + 1, MScoreTextToMXML::toPlainText(rim.value(instNr)->trackName()), rim.value(instNr)); } for (auto ii = rim.constBegin(); ii != rim.constEnd(); ii++) { int instNr = ii.key();