diff --git a/src/track/keyutils.cpp b/src/track/keyutils.cpp index e64ad440473..1e906824de2 100644 --- a/src/track/keyutils.cpp +++ b/src/track/keyutils.cpp @@ -16,9 +16,9 @@ using mixxx::track::io::key::ChromaticKey_IsValid; // OpenKey notation, the numbers 1-12 followed by d (dur, major) or m (moll, minor). static const QString s_openKeyPattern("^\\s*(1[0-2]|[1-9])([dm])\\s*$"); -// Lancelot notation, the numbers 1-12 followed by a (minor) or b (major). -// This is also used to detect RapidEvolution Key Code format using a padding "0" -static const QString s_lancelotKeyPattern("^\\s*0*(1[0-2]|[1-9])([ab])\\s*$"); +// Lancelot notation, the numbers 1-12 followed by A (minor) or B(I) (major). +// or "I", "L", "M", "D", "P", "C" for the advanced modes +static const QString s_lancelotKeyPattern("^\\s*0*(1[0-2]|[1-9])([ABILMDPC])\\s*$"); // a-g followed by any number of sharps or flats, optionally followed by // a scale spec (m = minor, min, maj) @@ -297,7 +297,8 @@ ChromaticKey KeyUtils::guessKeyFromText(const QString& text) { int openKeyNumber = lancelotNumberToOpenKeyNumber(lancelotNumber); - bool major = lancelotKeyMatcher.cap(2).compare("B") == 0; + const QChar lancelotScaleMode = lancelotKeyMatcher.cap(2).at(0); + bool major = (QString("BILM").indexOf(lancelotScaleMode) != -1); return openKeyNumberToKey(openKeyNumber, major); }