Skip to content

Commit 7d2cae5

Browse files
authored
Merge pull request #20224 from rettinghaus/fix/pedal
fix pedal import/export for MusicXML
2 parents a5eb785 + 132491e commit 7d2cae5

File tree

7 files changed

+59
-596
lines changed

7 files changed

+59
-596
lines changed

src/importexport/musicxml/internal/musicxml/exportxml.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -5155,12 +5155,12 @@ void ExportMusicXml::pedal(Pedal const* const pd, staff_idx_t staff, const Fract
51555155
pedalType = "change";
51565156
break;
51575157
case HookType::NONE:
5158-
pedalType = "resume";
5158+
pedalType = pd->lineVisible() ? "resume" : "start";
51595159
break;
51605160
default:
51615161
pedalType = "start";
51625162
}
5163-
signText = pd->beginText() == "" ? " sign=\"no\"" : " sign=\"yes\"";
5163+
signText = pd->beginText().isEmpty() ? " sign=\"no\"" : " sign=\"yes\"";
51645164
} else {
51655165
if (!pd->endText().isEmpty() || pd->endHookType() == HookType::HOOK_90) {
51665166
pedalType = "stop";
@@ -5169,7 +5169,7 @@ void ExportMusicXml::pedal(Pedal const* const pd, staff_idx_t staff, const Fract
51695169
}
51705170
// "change" type is handled only on the beginning of pedal lines
51715171

5172-
signText = pd->endText() == "" ? " sign=\"no\"" : " sign=\"yes\"";
5172+
signText = pd->endText().isEmpty() ? " sign=\"no\"" : " sign=\"yes\"";
51735173
}
51745174
pedalXml = QString("pedal type=\"%1\"").arg(pedalType);
51755175
pedalXml += lineText;

src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -3552,6 +3552,8 @@ void MusicXMLParserDirection::pedal(const QString& type, const int /* number */,
35523552
p->setBeginText(u"<sym>keyboardPedalPed</sym>");
35533553
p->setContinueText(u"(<sym>keyboardPedalPed</sym>)");
35543554
} else {
3555+
p->setBeginText(u"");
3556+
p->setContinueText(u"");
35553557
p->setBeginHookType(type == "resume" ? HookType::NONE : HookType::HOOK_90);
35563558
}
35573559
p->setEndHookType(HookType::NONE);
@@ -3596,6 +3598,10 @@ void MusicXMLParserDirection::pedal(const QString& type, const int /* number */,
35963598
} else {
35973599
p->setLineVisible(false);
35983600
}
3601+
if (sign == "no") {
3602+
p->setBeginText(u"");
3603+
p->setContinueText(u"");
3604+
}
35993605
if (color.isValid()) {
36003606
p->setColor(color);
36013607
}

src/importexport/musicxml/tests/data/testDirections1.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
<measure number="2">
103103
<direction placement="above">
104104
<direction-type>
105-
<pedal type="resume" line="no" sign="yes"/>
105+
<pedal type="start" line="no" sign="yes"/>
106106
</direction-type>
107107
</direction>
108108
<note>
@@ -132,7 +132,7 @@
132132
</note>
133133
<direction placement="below">
134134
<direction-type>
135-
<pedal type="resume" line="no" sign="yes"/>
135+
<pedal type="start" line="no" sign="yes"/>
136136
</direction-type>
137137
</direction>
138138
<note>

src/importexport/musicxml/tests/data/testDirections1_ref.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
<measure number="2">
103103
<direction placement="above">
104104
<direction-type>
105-
<pedal type="resume" line="no" sign="yes"/>
105+
<pedal type="start" line="no" sign="yes"/>
106106
</direction-type>
107107
</direction>
108108
<note>
@@ -132,7 +132,7 @@
132132
</note>
133133
<direction placement="below">
134134
<direction-type>
135-
<pedal type="resume" line="no" sign="yes"/>
135+
<pedal type="start" line="no" sign="yes"/>
136136
</direction-type>
137137
</direction>
138138
<note>

0 commit comments

Comments
 (0)