From f85ef00dde16d6bf3033abcd9e66b3da1d7d0ca2 Mon Sep 17 00:00:00 2001 From: Alexander Pavlov Date: Mon, 9 Sep 2024 15:30:00 +0200 Subject: [PATCH] gp-import: fixed arpeggio stretch for gp5 Backport of #23229 --- importexport/guitarpro/importgtp-gp5.cpp | 71 ++++++++++++------------ mtest/guitarpro/brush.gp5-ref.mscx | 6 ++ 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/importexport/guitarpro/importgtp-gp5.cpp b/importexport/guitarpro/importgtp-gp5.cpp index c847ec85ad0f2..33d00aca0ea45 100644 --- a/importexport/guitarpro/importgtp-gp5.cpp +++ b/importexport/guitarpro/importgtp-gp5.cpp @@ -12,47 +12,46 @@ #include "importgtp.h" -#include -#include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include -#include -#include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include #include -#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include #include -#include - +#include +#include +#include +#include +#include +#include +#include +#include namespace Ms { @@ -115,9 +114,13 @@ int GuitarPro5::readBeatEffects(int track, Segment* segment) // representation is different in guitar pro 5 - the up/down order below is correct if (strokeup > 0) { a->setArpeggioType(ArpeggioType::UP_STRAIGHT); + if (strokeup < 7) + a->setStretch(1.0 / std::pow(2, 6 - strokeup)); } else if (strokedown > 0) { a->setArpeggioType(ArpeggioType::DOWN_STRAIGHT); + if (strokedown < 7) + a->setStretch(1.0 / std::pow(2, 6 - strokedown)); } else { delete a; @@ -684,7 +687,7 @@ void GuitarPro5::readMeasures(int /*startingTempo*/) } } else { - int counter = 0; +// int counter = 0; // int index = 0; //TODO-ws ??? gpLyrics.lyricTrack -= 1; auto mes = score->firstMeasure(); @@ -693,7 +696,7 @@ void GuitarPro5::readMeasures(int /*startingTempo*/) do { if (beg->isChordRestType() && beg->cr(gpLyrics.lyricTrack)) { ChordRest* cr = beg->cr(gpLyrics.lyricTrack); - ++counter; +// ++counter; if (!cr->isChord()) continue; bool is_tied = false; diff --git a/mtest/guitarpro/brush.gp5-ref.mscx b/mtest/guitarpro/brush.gp5-ref.mscx index e4d14cc548cfd..09484a0445b87 100644 --- a/mtest/guitarpro/brush.gp5-ref.mscx +++ b/mtest/guitarpro/brush.gp5-ref.mscx @@ -103,6 +103,7 @@ 5 + 0.5 @@ -136,6 +137,7 @@ 4 + 0.5 @@ -273,6 +275,7 @@ 5 + 0.5 @@ -311,6 +314,7 @@ 4 + 0.5 @@ -362,6 +366,7 @@ 4 5 + 0.5 @@ -400,6 +405,7 @@ 4 + 0.5