fix mtest, gp6 replace long if/else list by a map

This commit is contained in:
lasconic 2016-02-18 17:07:32 +04:00
parent b0138167fa
commit 1d7f1afecf
2 changed files with 95 additions and 24 deletions

View file

@ -58,6 +58,18 @@
namespace Ms {
const static std::map<QString, QString> instrumentMapping = {
{"e-gtr6", "electric-guitar"},
{"tnr-s", "voice"},
{"s-gtr6", "guitar-steel"},
{"n-gtr6", "guitar-nylon"},
{"snt-lead-ss", "poly-synth"},
{"f-bass5", "bass-guitar"},
{"snt-bass-ss", "metallic-synth"},
{"mrcs", "maracas"},
{"drmkt", "drumset"}
};
//---------------------------------------------------------
// readBit
//---------------------------------------------------------
@ -398,25 +410,12 @@ void GuitarPro6::readTracks(QDomNode* track)
part->setPartName(currentNode.toElement().text());
else if (nodeName == "Instrument") {
QString ref = currentNode.attributes().namedItem("ref").toAttr().value();
// use an array as a map instead?
if (!ref.compare("e-gtr6"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("electric-guitar")));
else if (!ref.compare("tnr-s"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("voice")));
else if (!ref.compare("s-gtr6"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("guitar-steel")));
else if (!ref.compare("n-gtr6"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("guitar-nylon")));
else if (!ref.compare("snt-lead-ss"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("poly-synth")));
else if (!ref.compare("f-bass5"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("bass-guitar")));
else if (!ref.compare("snt-bass-ss"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("metallic-synth")));
else if (!ref.compare("mrcs"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("maracas")));
else if (!ref.compare("drmkt"))
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate("drumset")));
auto it = instrumentMapping.find(ref);
if (it != instrumentMapping.end()) {
part->setInstrument(Instrument::fromTemplate(Ms::searchTemplate(it->second)));
}
else
qDebug() << "Unknown instrument: " << ref;
if (ref.endsWith("-gs")) { // grand staff
Staff* s2 = new Staff(score);
s2->setPart(part);

View file

@ -53,8 +53,15 @@
</Staff>
<trackName>N-Gt</trackName>
<Instrument>
<longName>Nylon Guitar</longName>
<trackName></trackName>
<longName>Classical Guitar</longName>
<shortName>Guit.</shortName>
<trackName>Classical Guitar</trackName>
<minPitchP>40</minPitchP>
<maxPitchP>83</maxPitchP>
<minPitchA>40</minPitchA>
<maxPitchA>83</maxPitchA>
<instrumentId>pluck.guitar.nylon-string</instrumentId>
<clef>G8vb</clef>
<StringData>
<frets>21</frets>
<string>40</string>
@ -64,7 +71,36 @@
<string>59</string>
<string>64</string>
</StringData>
<Articulation>
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="staccatissimo">
<velocity>100</velocity>
<gateTime>33</gateTime>
</Articulation>
<Articulation name="staccato">
<velocity>100</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="portato">
<velocity>100</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="tenuto">
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="marcato">
<velocity>120</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="sforzato">
<velocity>120</velocity>
<gateTime>100</gateTime>
</Articulation>
<Channel>
<program value="24"/>
</Channel>
</Instrument>
</Part>
@ -427,8 +463,15 @@
</Staff>
<trackName></trackName>
<Instrument>
<longName>Nylon Guitar</longName>
<trackName></trackName>
<longName>Classical Guitar</longName>
<shortName>Guit.</shortName>
<trackName>Classical Guitar</trackName>
<minPitchP>40</minPitchP>
<maxPitchP>83</maxPitchP>
<minPitchA>40</minPitchA>
<maxPitchA>83</maxPitchA>
<instrumentId>pluck.guitar.nylon-string</instrumentId>
<clef>G8vb</clef>
<StringData>
<frets>21</frets>
<string>40</string>
@ -438,7 +481,36 @@
<string>59</string>
<string>64</string>
</StringData>
<Articulation>
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="staccatissimo">
<velocity>100</velocity>
<gateTime>33</gateTime>
</Articulation>
<Articulation name="staccato">
<velocity>100</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="portato">
<velocity>100</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="tenuto">
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="marcato">
<velocity>120</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="sforzato">
<velocity>120</velocity>
<gateTime>100</gateTime>
</Articulation>
<Channel>
<program value="24"/>
</Channel>
</Instrument>
</Part>
@ -448,7 +520,7 @@
<lid>0</lid>
<Text>
<style>Instrument Name (Part)</style>
<text>Nylon Guitar</text>
<text>Classical Guitar</text>
</Text>
</VBox>
<Measure number="1">