Skip to content

Commit

Permalink
import/export of handbell symbols
Browse files Browse the repository at this point in the history
  • Loading branch information
rettinghaus committed Dec 19, 2024
1 parent 36f914e commit 74aee4d
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ class ExportMusicXml : public muse::Injectable
static std::string fractionToStdString(const Fraction& f)
{
if (!f.isValid()) {
return "<invalid>";
return u"<invalid>";
}
String res { f.toString() };
res += String(u" (%1)").arg(String::number(f.ticks()));
Expand Down Expand Up @@ -3217,7 +3217,7 @@ static String symIdToOrnam(const SymId sid)
return u"mordent";
break;
case SymId::ornamentShortTrill:
// return "short-trill";
// return u"short-trill";
return u"inverted-mordent";
break;
case SymId::ornamentTremblement:
Expand Down Expand Up @@ -3323,7 +3323,7 @@ static String symIdToTechn(const SymId sid)
return u"smear";
break;
case SymId::brassMuteOpen:
// return "open-string";
// return u"open-string";
return u"open";
break;
case SymId::brassMuteHalfClosed:
Expand All @@ -3338,6 +3338,42 @@ static String symIdToTechn(const SymId sid)
case SymId::guitarGolpe:
return u"golpe";
break;
case SymId::handbellsBelltree:
return u"belltree";
break;
case SymId::handbellsDamp3:
return u"damp";
break;
case SymId::handbellsEcho1:
return u"echo";
break;
case SymId::handbellsGyro:
return u"gyro";
break;
case SymId::handbellsHandMartellato:
return u"hand martellato";
break;
case SymId::handbellsMalletLft:
return u"mallet lift";
break;
case SymId::handbellsMalletBellOnTable:
return u"mallet table";
break;
case SymId::handbellsMartellato:
return u"martellato";
break;
case SymId::handbellsMartellatoLift:
return u"martellato lift";
break;
case SymId::handbellsMutedMartellato:
return u"muted martellato";
break;
case SymId::handbellsPluckLift:
return u"pluck lift";
break;
case SymId::handbellsSwing:
return u"swing";
break;
default:
; // nothing
break;
Expand Down Expand Up @@ -3578,6 +3614,14 @@ void ExportMusicXml::chordAttributes(Chord* chord, Notations& notations, Technic
m_xml.startElementRaw(mxmlTechn);
m_xml.tag("natural");
m_xml.endElement();
} else if (mxmlTechn.startsWith(u"handbells")) {
String handbell = u"handbell";
handbell += color2xml(a);
handbell += ExportMusicXml::positioningAttributes(a);
if (!placement.empty()) {
handbell += String(u" placement=\"%1\"").arg(placement);
}
m_xml.tagRaw(handbell, symIdToTechn(sid));
} else if (mxmlTechn.startsWith(u"harmon")) {
m_xml.startElementRaw(mxmlTechn);
XmlWriter::Attributes location = {};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1347,7 +1347,20 @@ static bool convertArticulationToSymId(const String& mxmlName, SymId& id)
{ u"thumb-position", SymId::stringsThumbPosition },
{ u"soft-accent", SymId::articSoftAccentAbove },
{ u"stress", SymId::articStressAbove },
{ u"unstress", SymId::articUnstressAbove }
{ u"unstress", SymId::articUnstressAbove },

{ u"belltree", SymId::handbellsBelltree },
{ u"damp", SymId::handbellsDamp3 },
{ u"echo", SymId::handbellsEcho1 },
{ u"gyro", SymId::handbellsGyro },
{ u"hand martellato", SymId::handbellsHandMartellato },
{ u"mallet lift", SymId::handbellsMalletLft },
{ u"mallet table", SymId::handbellsMalletBellOnTable },
{ u"martellato", SymId::handbellsMartellato },
{ u"martellato lift", SymId::handbellsMartellatoLift },
{ u"muted martellato", SymId::handbellsMutedMartellato },
{ u"pluck lift", SymId::handbellsPluckLift },
{ u"swing", SymId::handbellsSwing }
};

auto it = map.find(mxmlName);
Expand Down Expand Up @@ -8127,6 +8140,12 @@ void MusicXmlParserNotations::technical()
m_notations.push_back(notation);
} else if (m_e.name() == "harmonic") {
harmonic();
} else if (m_e.name() == "handbell") {
const std::vector<XmlStreamReader::Attribute> attributes = m_e.attributes();
while (m_e.readNextStartElement()) {
convertArticulationToSymId(m_e.readText(), id);
m_notations.push_back(Notation::notationWithAttributes(m_e.readText(), attributes, u"technical", id));
}
} else if (m_e.name() == "harmon-mute") {
harmonMute();
} else if (m_e.name() == "other-technical") {
Expand Down

0 comments on commit 74aee4d

Please sign in to comment.