fix string values of gp import in new version

This commit is contained in:
a.pavlov 2022-01-20 15:26:56 +03:00 committed by pereverzev+v
parent 776e41311b
commit b331933335
2 changed files with 15 additions and 8 deletions

View file

@ -675,6 +675,11 @@ void GPConverter::setUpTrack(const std::unique_ptr<GPTrack>& tR)
tunning = standartTuning;
}
int transpose = tR->transponce();
for (auto& t : tunning) {
t -= transpose;
}
StringData stringData = StringData(fretCount, static_cast<int>(tunning.size()), tunning.data());
part->instrument()->setStringData(stringData);
@ -1366,7 +1371,9 @@ void GPConverter::setPitch(Note* note, const GPNote::MidiPitch& midiPitch)
// instead.
pitch = note->part()->instrument()->channel(0)->program();
} else {
pitch = note->part()->instrument()->stringData()->getPitch(musescoreString, midiPitch.fret, nullptr);
pitch
= note->part()->instrument()->stringData()->getPitch(musescoreString, midiPitch.fret,
nullptr) + note->part()->instrument()->transpose().chromatic;
}
if (musescoreString == -1) {

View file

@ -1216,21 +1216,21 @@ Fraction GuitarPro6::readBeats(QString beats, GPPartInfo* partInfo, Measure* mea
}
currentProperty = currentProperty.nextSibling();
}
if (midi != "") {
note->setPitch(midi.toInt());
} else if (element != "") {
if (midi == "" && element != "") {
readDrumNote(note, element.toInt(), variation.toInt());
} else if (stringNum != "" && stringNum.toInt() >= 0 && note->headGroup() != NoteHeadGroup::HEAD_DIAMOND) {
Staff* staff = note->staff();
int fretNumber = fretNum.toInt();
int musescoreString = staff->part()->instrument()->stringData()->strings() - 1 - stringNum.toInt();
auto pitch = staff->part()->instrument()->stringData()->getPitch(musescoreString, fretNumber,
nullptr);
if (midi != "") {
note->setPitch(midi.toInt());
} else {
auto pitch = staff->part()->instrument()->stringData()->getPitch(musescoreString, fretNumber, nullptr);
note->setPitch(pitch);
}
note->setFret(fretNumber);
// we need to turn this string number for GP to the correct string number for musescore
note->setString(musescoreString);
note->setPitch(pitch);
} else if (tone != "") {
note->setPitch((octave.toInt() * 12) + tone.toInt()); // multiply octaves by 12 as 12 semitones in octave
}