From 1ef4c9a42720a76bd1c050682f506c6064c25bd6 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Thu, 27 Nov 2025 18:41:25 +0100 Subject: [PATCH 1/8] Fix #24813 Implement exporting of LRC lyric files --- CMakeLists.txt | 1 + SetupConfigure.cmake | 2 + ninja_build.sh | 3 + src/app/CMakeLists.txt | 3 + src/app/app_config.h.in | 1 + src/app/appfactory.cpp | 9 ++ src/importexport/CMakeLists.txt | 3 + src/importexport/lyricsexport/CMakeLists.txt | 43 ++++++ .../lyricsexport/ilyricsexportconfiguration.h | 39 +++++ .../internal/iex_lyricsexport.cpp | 144 ++++++++++++++++++ .../lyricsexport/internal/iex_lyricsexport.h | 49 ++++++ .../internal/lyricsexportconfiguration.cpp | 35 +++++ .../internal/lyricsexportconfiguration.h | 32 ++++ .../lyricsexport/lyricsexportmodule.cpp | 63 ++++++++ .../lyricsexport/lyricsexportmodule.h | 42 +++++ src/project/view/exportdialogmodel.cpp | 10 +- 16 files changed, 478 insertions(+), 1 deletion(-) create mode 100644 src/importexport/lyricsexport/CMakeLists.txt create mode 100644 src/importexport/lyricsexport/ilyricsexportconfiguration.h create mode 100644 src/importexport/lyricsexport/internal/iex_lyricsexport.cpp create mode 100644 src/importexport/lyricsexport/internal/iex_lyricsexport.h create mode 100644 src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp create mode 100644 src/importexport/lyricsexport/internal/lyricsexportconfiguration.h create mode 100644 src/importexport/lyricsexport/lyricsexportmodule.cpp create mode 100644 src/importexport/lyricsexport/lyricsexportmodule.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f1e7aa65bf1f4..b9ab048b61d63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,6 +83,7 @@ option(MUE_BUILD_IMPEXP_GUITARPRO_MODULE "Build importexport guitarpro module" O option(MUE_BUILD_IMPEXP_MEI_MODULE "Build importexport mei module" ON) option(MUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE "Build importexport videoexport module" OFF) option(MUE_BUILD_IMPEXP_TABLEDIT_MODULE "Build importexport tabledit module" ON) +option(MUE_BUILD_IMPEXP_LYRICS_MODULE "Build importexport lyrics module" ON) option(MUE_BUILD_IMPORTEXPORT_TESTS "Build importexport tests" ON) option(MUE_BUILD_INSPECTOR_MODULE "Build inspector module" ON) diff --git a/SetupConfigure.cmake b/SetupConfigure.cmake index f3f8cd1a68d6a..f9717183ee8e0 100644 --- a/SetupConfigure.cmake +++ b/SetupConfigure.cmake @@ -185,6 +185,7 @@ if(BUILD_CONFIGURATION STREQUAL "APP-WEB") set(MUE_BUILD_IMPEXP_MEI_MODULE OFF) set(MUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE OFF) set(MUE_BUILD_IMPEXP_TABLEDIT_MODULE OFF) + set(MUE_BUILD_IMPEXP_LYRICS_MODULE OFF) set(MUE_INSTALL_SOUNDFONT OFF) @@ -246,6 +247,7 @@ if(BUILD_CONFIGURATION STREQUAL "VTEST") set(MUE_BUILD_IMPEXP_MEI_MODULE OFF) set(MUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE OFF) set(MUE_BUILD_IMPEXP_TABLEDIT_MODULE OFF) + set(MUE_BUILD_IMPEXP_LYRICS_MODULE OFF) set(MUE_INSTALL_SOUNDFONT OFF) diff --git a/ninja_build.sh b/ninja_build.sh index d5902efd86757..92aaf499a6f6d 100755 --- a/ninja_build.sh +++ b/ninja_build.sh @@ -47,6 +47,7 @@ MUSESCORE_NO_RPATH=${MUSESCORE_NO_RPATH:-"OFF"} MUSESCORE_MODULE_UPDATE=${MUSESCORE_MODULE_UPDATEE:-"ON"} MUSESCORE_BUILD_VST_MODULE=${MUSESCORE_BUILD_VST_MODULE:-"OFF"} MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE=${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE:-"OFF"} +MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE==${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE:-"OFF"} MUSESCORE_BUILD_WEBSOCKET=${MUSESCORE_BUILD_WEBSOCKET:-"OFF"} MUSESCORE_BUILD_PIPEWIRE_AUDIO_DRIVER=${MUSESCORE_BUILD_PIPEWIRE_AUDIO_DRIVER:-"OFF"} MUSESCORE_COMPILE_USE_UNITY=${MUSESCORE_COMPILE_USE_UNITY:-"ON"} @@ -93,6 +94,7 @@ function do_build() { -DMUSESCORE_REVISION="${MUSESCORE_REVISION}" \ -DMUE_RUN_LRELEASE="${MUSESCORE_RUN_LRELEASE}" \ -DMUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE="${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE}" \ + -DMUE_BUILD_IMPEXP_LYRICS_MODULE="${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE}" \ -DMUSE_MODULE_UPDATE="${MUSESCORE_MODULE_UPDATE}" \ -DMUE_DOWNLOAD_SOUNDFONT="${MUSESCORE_DOWNLOAD_SOUNDFONT}" \ -DMUSE_ENABLE_UNIT_TESTS="${MUSESCORE_BUILD_UNIT_TESTS}" \ @@ -171,6 +173,7 @@ case $TARGET in -DMUSESCORE_REVISION="${MUSESCORE_REVISION}" \ -DMUE_RUN_LRELEASE="${MUSESCORE_RUN_LRELEASE}" \ -DMUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE="${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE}" \ + -DMUE_BUILD_IMPEXP_LYRICS_MODULE="${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE}" \ -DMUSE_MODULE_UPDATE="${MUSESCORE_MODULE_UPDATE}" \ -DMUE_DOWNLOAD_SOUNDFONT="${MUSESCORE_DOWNLOAD_SOUNDFONT}" \ -DMUSE_ENABLE_UNIT_TESTS="${MUSESCORE_BUILD_UNIT_TESTS}" \ diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index b4cbefac43bf0..ac51eae7cb88e 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -201,6 +201,9 @@ endif () if (MUE_BUILD_IMPEXP_TABLEDIT_MODULE) list(APPEND LINK_LIB iex_tabledit) endif () +if (MUE_BUILD_IMPEXP_LYRICS_MODULE) + list(APPEND LINK_LIB iex_lyricsexport) +endif () set (MSCORE_APPEND_SRC) diff --git a/src/app/app_config.h.in b/src/app/app_config.h.in index 34bb8fbb72e16..d6bd62e38c886 100644 --- a/src/app/app_config.h.in +++ b/src/app/app_config.h.in @@ -46,6 +46,7 @@ #cmakedefine MUE_BUILD_IMPEXP_MEI_MODULE ${MUE_BUILD_IMPEXP_MEI_MODULE}) #cmakedefine MUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE ${MUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE}) #cmakedefine MUE_BUILD_IMPEXP_TABLEDIT_MODULE ${MUE_BUILD_IMPEXP_TABLEDIT_MODULE}) +#cmakedefine MUE_BUILD_IMPEXP_LYRICS_MODULE ${MUE_BUILD_IMPEXP_LYRICS_MODULE}) /* ============================================== */ /* Functions */ diff --git a/src/app/appfactory.cpp b/src/app/appfactory.cpp index f6810ebd81193..e5aac31821449 100644 --- a/src/app/appfactory.cpp +++ b/src/app/appfactory.cpp @@ -181,6 +181,9 @@ #ifdef MUE_BUILD_IMPEXP_TABLEDIT_MODULE #include "importexport/tabledit/tableditmodule.h" #endif +#ifdef MUE_BUILD_IMPEXP_LYRICS_MODULE +#include "importexport/lyricsexport/lyricsexportmodule.h" +#endif #include "inspector/inspectormodule.h" @@ -355,6 +358,9 @@ std::shared_ptr AppFactory::newGuiApp(const CmdOptions& opti #ifdef MUE_BUILD_IMPEXP_TABLEDIT_MODULE app->addModule(new mu::iex::tabledit::TablEditModule()); #endif +#ifdef MUE_BUILD_IMPEXP_LYRICS_MODULE + app->addModule(new mu::iex::lrcexport::LyricsExportModule()); +#endif app->addModule(new mu::inspector::InspectorModule()); app->addModule(new mu::instrumentsscene::InstrumentsSceneModule()); @@ -499,6 +505,9 @@ std::shared_ptr AppFactory::newConsoleApp(const CmdOptions& #ifdef MUE_BUILD_IMPEXP_TABLEDIT_MODULE app->addModule(new mu::iex::tabledit::TablEditModule()); #endif +#ifdef MUE_BUILD_IMPEXP_LYRICS_MODULE + app->addModule(new mu::iex::lrcexport::LyricsExportModule()); +#endif app->addModule(new mu::inspector::InspectorModule()); app->addModule(new mu::instrumentsscene::InstrumentsSceneModule()); diff --git a/src/importexport/CMakeLists.txt b/src/importexport/CMakeLists.txt index 8585a72f3d6d7..db42c28f50776 100644 --- a/src/importexport/CMakeLists.txt +++ b/src/importexport/CMakeLists.txt @@ -57,3 +57,6 @@ endif() if (MUE_BUILD_IMPEXP_TABLEDIT_MODULE) add_subdirectory(tabledit) endif() +if (MUE_BUILD_IMPEXP_LYRICS_MODULE) + add_subdirectory(lyricsexport) +endif() diff --git a/src/importexport/lyricsexport/CMakeLists.txt b/src/importexport/lyricsexport/CMakeLists.txt new file mode 100644 index 0000000000000..a146d097dc185 --- /dev/null +++ b/src/importexport/lyricsexport/CMakeLists.txt @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-Studio-CLA-applies +# +# MuseScore Studio +# Music Composition & Notation +# +# Copyright (C) 2021 MuseScore Limited +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +declare_module(iex_lyricsexport) + +set(MODULE_SRC + ${CMAKE_CURRENT_LIST_DIR}/lyricsexportmodule.cpp + ${CMAKE_CURRENT_LIST_DIR}/lyricsexportmodule.h + ${CMAKE_CURRENT_LIST_DIR}/ilyricsexportconfiguration.h + + ${CMAKE_CURRENT_LIST_DIR}/internal/lyricsexportconfiguration.cpp + ${CMAKE_CURRENT_LIST_DIR}/internal/lyricsexportconfiguration.h + ${CMAKE_CURRENT_LIST_DIR}/internal/iex_lyricsexport.cpp + ${CMAKE_CURRENT_LIST_DIR}/internal/iex_lyricsexport.h + ) + +set(MODULE_LINK + engraving +) + +if (QT_SUPPORT) + list(APPEND MODULE_LINK Qt::Core5Compat) +endif() + +setup_module() + diff --git a/src/importexport/lyricsexport/ilyricsexportconfiguration.h b/src/importexport/lyricsexport/ilyricsexportconfiguration.h new file mode 100644 index 0000000000000..96d27008ddd93 --- /dev/null +++ b/src/importexport/lyricsexport/ilyricsexportconfiguration.h @@ -0,0 +1,39 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include + +#include "modularity/imoduleinterface.h" + +namespace mu::iex::lrcexport { +class ILyricsExportConfiguration : MODULE_EXPORT_INTERFACE +{ + INTERFACE_ID(ILyricsExportConfiguration) + +public: + virtual ~ILyricsExportConfiguration() = default; + + // No specific setting for Lyrics required +}; +} diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp new file mode 100644 index 0000000000000..a342e3567a619 --- /dev/null +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp @@ -0,0 +1,144 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "iex_lyricsexport.h" + +#include + +#include "engraving/dom/masterscore.h" +#include "engraving/dom/repeatlist.h" +#include "engraving/dom/lyrics.h" + +using namespace mu::engraving; + +namespace mu::iex::lrcexport { +// Interface implementation +std::vector LRCWriter::supportedUnitTypes() const +{ + return { UnitType::PER_PART }; +} + +bool LRCWriter::supportsUnitType(UnitType ut) const { return ut == UnitType::PER_PART; } + +muse::Ret LRCWriter::write(notation::INotationPtr notation, muse::io::IODevice& device, const Options&) +{ + Score* score = notation->elements()->msScore(); + QByteArray data; + QBuffer buffer(&data); + + /*********** + * + * PENDING.... + Is there any advantage to writing to a buffer first, and then writing that buffer to the device? It would seem more efficient to me to write to the device directly. + + ******/ + + buffer.open(QIODevice::WriteOnly); + + writeMetadata(buffer, score); + + const auto lyrics = collectLyrics(score); + + // Write lyrics + for (auto it = lyrics.constBegin(); it != lyrics.constEnd(); ++it) { + buffer.write(QString("[%1]%2\n").arg(formatTimestamp(it.key()), it.value()).toUtf8()); + } + + device.write(data); + return muse::Ret(muse::Ret::Code::Ok); +} + +muse::Ret LRCWriter::writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) +{ + return muse::Ret(muse::Ret::Code::NotSupported); +} + +void LRCWriter::writeMetadata(QIODevice& device, const engraving::Score* score) const +{ + QString metadata; + + // Title + QString title = QString::fromStdString(score->metaTag(muse::String("workTitle")).toStdString()); + if (!title.isEmpty()) { + metadata += QString("[ti:%1]\n").arg(title); + } + + // Composer/Artist + QString artist = QString::fromStdString(score->metaTag(muse::String("composer")).toStdString()); + if (!artist.isEmpty()) { + metadata += QString("[ar:%1]\n").arg(artist); + } + + if (!metadata.isEmpty()) { + device.write(metadata.toUtf8()); + } +} + +// Core lyric collection (simplified) +QMap LRCWriter::collectLyrics(const Score* score) const +{ + QMap lyrics; + const RepeatList& repeats = score->repeatList(); + + for (const RepeatSegment* rs : repeats) { + const int tickOffset = rs->utick - rs->tick; + + for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + if (!mb->isMeasure()) { + continue; + } + + for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { + if (!seg->isChordRestType()) { + continue; + } + + for (EngravingItem* e : seg->elist()) { + if (!e || !e->isChordRest()) { + continue; + } + + for (Lyrics* l : toChordRest(e)->lyrics()) { + // if (l->text().empty()) + if (l->plainText().isEmpty()) { + continue; + } + + const qreal time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; + lyrics.insert(time, l->plainText()); + } + } + } + } + } + return lyrics; +} + +QString LRCWriter::formatTimestamp(qreal ms) const +{ + const int totalSec = static_cast(ms / 1000); + return QString("%1:%2.%3") + .arg(totalSec / 60, 2, 10, QLatin1Char('0')) + .arg(totalSec % 60, 2, 10, QLatin1Char('0')) + .arg(static_cast(ms) % 1000 / 10, 2, 10, QLatin1Char('0')); +} +} // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.h b/src/importexport/lyricsexport/internal/iex_lyricsexport.h new file mode 100644 index 0000000000000..e4a362354d258 --- /dev/null +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.h @@ -0,0 +1,49 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-CLA-applies + * + * MuseScore + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited and others + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +#include "project/inotationwriter.h" + +namespace mu::engraving { +class Score; +} + +namespace mu::iex::lrcexport { +class LRCWriter : public project::INotationWriter +{ +public: + // Interface implementation + std::vector supportedUnitTypes() const override; + bool supportsUnitType(UnitType) const override; + muse::Ret write(notation::INotationPtr, muse::io::IODevice&, const Options&) override; + void writeMetadata(QIODevice& device, const engraving::Score* score) const; + muse::Ret writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) override; + +private: + // Core lyric functionality + QMap collectLyrics(const engraving::Score*) const; + QString formatTimestamp(qreal ms) const; +}; +} // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp new file mode 100644 index 0000000000000..a791405230a23 --- /dev/null +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "lyricsexportconfiguration.h" + +#include "settings.h" + +#include "engraving/dom/mscore.h" + +using namespace muse; +using namespace mu; +using namespace mu::iex::lrcexport; + +void LyricsExportConfiguration::init() +{ + // Nothing to do +} diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h new file mode 100644 index 0000000000000..f76edff391415 --- /dev/null +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h @@ -0,0 +1,32 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "../ilyricsexportconfiguration.h" + +namespace mu::iex::lrcexport { +class LyricsExportConfiguration : public ILyricsExportConfiguration +{ +public: + void init(); +}; +} diff --git a/src/importexport/lyricsexport/lyricsexportmodule.cpp b/src/importexport/lyricsexport/lyricsexportmodule.cpp new file mode 100644 index 0000000000000..97d1d9e9c92db --- /dev/null +++ b/src/importexport/lyricsexport/lyricsexportmodule.cpp @@ -0,0 +1,63 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "lyricsexportmodule.h" + +#include "modularity/ioc.h" + +#include "project/inotationwritersregister.h" +#include "internal/iex_lyricsexport.h" + +#include "internal/lyricsexportconfiguration.h" + +#include "log.h" + +using namespace muse; +using namespace mu::iex::lrcexport; +using namespace mu::project; + +std::string LyricsExportModule::moduleName() const +{ + return "iex_lyricsexport"; +} + +void LyricsExportModule::registerExports() +{ + m_configuration = std::make_shared(); + ioc()->registerExport(moduleName(), m_configuration); +} + +void LyricsExportModule::resolveImports() +{ + auto writers = ioc()->resolve(moduleName()); + if (writers) { + writers->reg({ "lrc" }, std::make_shared()); + } +} + +void LyricsExportModule::onInit(const IApplication::RunMode& mode) +{ + if (mode == IApplication::RunMode::AudioPluginRegistration) { + return; + } + + m_configuration->init(); +} diff --git a/src/importexport/lyricsexport/lyricsexportmodule.h b/src/importexport/lyricsexport/lyricsexportmodule.h new file mode 100644 index 0000000000000..d1161e766a554 --- /dev/null +++ b/src/importexport/lyricsexport/lyricsexportmodule.h @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include + +#include "modularity/imodulesetup.h" + +namespace mu::iex::lrcexport { +class LyricsExportConfiguration; +class LyricsExportModule : public muse::modularity::IModuleSetup +{ +public: + + std::string moduleName() const override; + void registerExports() override; + void resolveImports() override; + void onInit(const muse::IApplication::RunMode& mode) override; + +private: + std::shared_ptr m_configuration; +}; +} diff --git a/src/project/view/exportdialogmodel.cpp b/src/project/view/exportdialogmodel.cpp index 3bc22640f7469..264d22116954b 100644 --- a/src/project/view/exportdialogmodel.cpp +++ b/src/project/view/exportdialogmodel.cpp @@ -102,7 +102,11 @@ ExportDialogModel::ExportDialogModel(QObject* parent) ExportType::makeWithSuffixes({ "mei" }, muse::qtrc("project/export", "MEI"), muse::qtrc("project/export", "MEI files"), - "MeiSettingsPage.qml") + "MeiSettingsPage.qml"), + ExportType::makeWithSuffixes({ "lrc" }, + muse::qtrc("project/export", "LRC file"), + muse::qtrc("project/export", "LRC files"), + "") // No settings page needed }; const ExportInfo& info = exportProjectScenario()->exportInfo(); @@ -270,6 +274,10 @@ void ExportDialogModel::setExportType(const ExportType& type) std::vector unitTypes = exportProjectScenario()->supportedUnitTypes(type); + if (type.id == "lrc") { + unitTypes = { UnitType::MULTI_PART }; // only supports single file export + } + IF_ASSERT_FAILED(!unitTypes.empty()) { return; } From ce68a02143894b254ddef68fe82f42fd59b1d840 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Fri, 28 Nov 2025 12:15:24 +0100 Subject: [PATCH 2/8] Adding Enhanced LRC mode dialog --- .../lyricsexport/ilyricsexportconfiguration.h | 4 +- .../internal/iex_lyricsexport.cpp | 28 +++++++++++++ .../lyricsexport/internal/iex_lyricsexport.h | 4 ++ .../internal/lyricsexportconfiguration.cpp | 21 +++++++++- .../internal/lyricsexportconfiguration.h | 7 ++++ src/project/project.qrc | 1 + .../internal/Export/LrcSettingsPage.qml | 42 +++++++++++++++++++ src/project/view/exportdialogmodel.cpp | 17 +++++++- src/project/view/exportdialogmodel.h | 9 ++++ 9 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 src/project/qml/MuseScore/Project/internal/Export/LrcSettingsPage.qml diff --git a/src/importexport/lyricsexport/ilyricsexportconfiguration.h b/src/importexport/lyricsexport/ilyricsexportconfiguration.h index 96d27008ddd93..0a8e269024441 100644 --- a/src/importexport/lyricsexport/ilyricsexportconfiguration.h +++ b/src/importexport/lyricsexport/ilyricsexportconfiguration.h @@ -34,6 +34,8 @@ class ILyricsExportConfiguration : MODULE_EXPORT_INTERFACE public: virtual ~ILyricsExportConfiguration() = default; - // No specific setting for Lyrics required + virtual bool lrcUseEnhancedFormat() const = 0; + virtual void setLrcUseEnhancedFormat(bool value) = 0; + virtual muse::async::Channel lrcUseEnhancedFormatChanged() const = 0; }; } diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp index a342e3567a619..f818ed4e0cb0b 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp @@ -44,6 +44,7 @@ muse::Ret LRCWriter::write(notation::INotationPtr notation, muse::io::IODevice& Score* score = notation->elements()->msScore(); QByteArray data; QBuffer buffer(&data); + bool enhancedFormat = configuration()->lrcUseEnhancedFormat(); /*********** * @@ -99,32 +100,59 @@ QMap LRCWriter::collectLyrics(const Score* score) const QMap lyrics; const RepeatList& repeats = score->repeatList(); + LOGI() << "tpacebes "; + + int paabRepeatSegment = 0; + for (const RepeatSegment* rs : repeats) { const int tickOffset = rs->utick - rs->tick; + ++paabRepeatSegment; + + LOGI() << "tpacebes repeat segment " << paabRepeatSegment; + + int paabMeasureBase = 0; + for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + + ++paabMeasureBase; + if (!mb->isMeasure()) { continue; } + LOGI() << "tpacebes measure base " << paabMeasureBase; + + int paabSegment = 0; for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { + ++paabSegment; if (!seg->isChordRestType()) { continue; } + LOGI() << "tpacebes paabSegment " << paabSegment; + + int paabEngravingItem = 0; for (EngravingItem* e : seg->elist()) { + ++paabEngravingItem; if (!e || !e->isChordRest()) { continue; } + LOGI() << "tpacebes paabEngravingItem " << paabEngravingItem; + + int paabLyrics = 0; for (Lyrics* l : toChordRest(e)->lyrics()) { + ++paabLyrics; // if (l->text().empty()) if (l->plainText().isEmpty()) { continue; } + LOGI() << "tpacebes paabLyrics " << paabLyrics; const qreal time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; lyrics.insert(time, l->plainText()); + LOGI() << "tpacebes insertamos Time " << time << "==>" << l->plainText() << "<=="; } } } diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.h b/src/importexport/lyricsexport/internal/iex_lyricsexport.h index e4a362354d258..87e627b450c53 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.h +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.h @@ -25,6 +25,7 @@ #include #include "project/inotationwriter.h" +#include "../ilyricsexportconfiguration.h" namespace mu::engraving { class Score; @@ -33,6 +34,9 @@ class Score; namespace mu::iex::lrcexport { class LRCWriter : public project::INotationWriter { +public: + INJECT_STATIC(mu::iex::lrcexport::LyricsExportConfiguration, configuration) + public: // Interface implementation std::vector supportedUnitTypes() const override; diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp index a791405230a23..8a8b902fa2065 100644 --- a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp @@ -29,7 +29,26 @@ using namespace muse; using namespace mu; using namespace mu::iex::lrcexport; +static const std::string module_name("iex_lyricsexport"); + +static const Settings::Key LRC_USE_ENHANCED_FORMAT_KEY(module_name, "export/lrc/useEnhancedFormat"); + void LyricsExportConfiguration::init() { - // Nothing to do + settings()->setDefaultValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(false)); +} + +async::Channel LyricsExportConfiguration::lrcUseEnhancedFormatChanged() const +{ + return m_lrcUseEnhancedFormatChanged; +} + +bool LyricsExportConfiguration::lrcUseEnhancedFormat() const +{ + return settings()->value(LRC_USE_ENHANCED_FORMAT_KEY).toBool(); +} + +void LyricsExportConfiguration::setLrcUseEnhancedFormat(bool value) +{ + settings()->setSharedValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(value)); } diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h index f76edff391415..b8dbfae2e1742 100644 --- a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h @@ -28,5 +28,12 @@ class LyricsExportConfiguration : public ILyricsExportConfiguration { public: void init(); + + bool lrcUseEnhancedFormat() const override; + void setLrcUseEnhancedFormat(bool value) override; + muse::async::Channel lrcUseEnhancedFormatChanged() const override; + +private: + muse::async::Channel m_lrcUseEnhancedFormatChanged; }; } diff --git a/src/project/project.qrc b/src/project/project.qrc index ffcf2423f8aff..a0c5bbb1994c7 100644 --- a/src/project/project.qrc +++ b/src/project/project.qrc @@ -24,6 +24,7 @@ qml/MuseScore/Project/internal/Export/MidiSettingsPage.qml qml/MuseScore/Project/internal/Export/MusicXmlSettingsPage.qml qml/MuseScore/Project/internal/Export/MeiSettingsPage.qml + qml/MuseScore/Project/internal/Export/LrcSettingsPage.qml qml/MuseScore/Project/internal/NewScore/AdditionalInfoView.qml qml/MuseScore/Project/internal/NewScore/ChooseInstrumentsAndTemplatesPage.qml qml/MuseScore/Project/internal/NewScore/CreateFromTemplatePage.qml diff --git a/src/project/qml/MuseScore/Project/internal/Export/LrcSettingsPage.qml b/src/project/qml/MuseScore/Project/internal/Export/LrcSettingsPage.qml new file mode 100644 index 0000000000000..cf8e91767e2c7 --- /dev/null +++ b/src/project/qml/MuseScore/Project/internal/Export/LrcSettingsPage.qml @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +import QtQuick 2.15 + +import Muse.UiComponents + +ExportSettingsPage { + id: root + + CheckBox { + width: parent.width + text: qsTrc("project/export", "LRC enhanced format") + + navigation.name: "LrcUseEnhancedFormat" + navigation.panel: root.navigationPanel + navigation.row: root.navigationOrder + 1 + + checked: root.model.lrcUseEnhancedFormat + onClicked: { + root.model.lrcUseEnhancedFormat = !checked + } + } +} diff --git a/src/project/view/exportdialogmodel.cpp b/src/project/view/exportdialogmodel.cpp index 264d22116954b..506720ca7a443 100644 --- a/src/project/view/exportdialogmodel.cpp +++ b/src/project/view/exportdialogmodel.cpp @@ -106,7 +106,7 @@ ExportDialogModel::ExportDialogModel(QObject* parent) ExportType::makeWithSuffixes({ "lrc" }, muse::qtrc("project/export", "LRC file"), muse::qtrc("project/export", "LRC files"), - "") // No settings page needed + "LrcSettingsPage.qml") }; const ExportInfo& info = exportProjectScenario()->exportInfo(); @@ -641,6 +641,21 @@ void ExportDialogModel::setMeiUseMuseScoreIds(bool useMuseScoreIds) emit meiUseMuseScoreIdsChanged(useMuseScoreIds); } +bool ExportDialogModel::lrcUseEnhancedFormat() const +{ + return lrcConfiguration()->lrcUseEnhancedFormat(); +} + +void ExportDialogModel::setLrcUseEnhancedFormat(bool useEnhancedFormat) +{ + if (useEnhancedFormat == lrcUseEnhancedFormat()) { + return; + } + + lrcConfiguration()->setLrcUseEnhancedFormat(useEnhancedFormat); + emit lrcUseEnhancedFormatChanged(useEnhancedFormat); +} + QVariantList ExportDialogModel::musicXmlLayoutTypes() const { std::map musicXmlLayoutTypeNames { diff --git a/src/project/view/exportdialogmodel.h b/src/project/view/exportdialogmodel.h index 3ca30828d973b..0f072c4fb2b8c 100644 --- a/src/project/view/exportdialogmodel.h +++ b/src/project/view/exportdialogmodel.h @@ -35,6 +35,7 @@ #include "importexport/midi/imidiconfiguration.h" #include "importexport/audioexport/iaudioexportconfiguration.h" #include "importexport/mei/imeiconfiguration.h" +#include "importexport/lyricsexport/ilyricsexportconfiguration.h" #include "iexportprojectscenario.h" #include "inotationwritersregister.h" @@ -57,6 +58,7 @@ class ExportDialogModel : public QAbstractListModel, public muse::async::Asyncab INJECT(iex::midi::IMidiImportExportConfiguration, midiImportExportConfiguration) INJECT(iex::audioexport::IAudioExportConfiguration, audioExportConfiguration) INJECT(iex::mei::IMeiConfiguration, meiConfiguration) + INJECT(iex::lrcexport::ILyricsExportConfiguration, lrcConfiguration) INJECT(IExportProjectScenario, exportProjectScenario) Q_PROPERTY(int selectionLength READ selectionLength NOTIFY selectionChanged) @@ -92,6 +94,8 @@ class ExportDialogModel : public QAbstractListModel, public muse::async::Asyncab Q_PROPERTY(int meiExportLayout READ meiExportLayout WRITE setMeiExportLayout NOTIFY meiExportLayoutChanged) Q_PROPERTY(int meiUseMuseScoreIds READ meiUseMuseScoreIds WRITE setMeiUseMuseScoreIds NOTIFY meiUseMuseScoreIdsChanged) + Q_PROPERTY(int lrcUseEnhancedFormat READ lrcUseEnhancedFormat WRITE setLrcUseEnhancedFormat NOTIFY lrcUseEnhancedFormatChanged) + Q_PROPERTY(bool shouldDestinationFolderBeOpenedOnExport READ shouldDestinationFolderBeOpenedOnExport WRITE setShouldDestinationFolderBeOpenedOnExport NOTIFY shouldDestinationFolderBeOpenedOnExportChanged) @@ -166,6 +170,9 @@ class ExportDialogModel : public QAbstractListModel, public muse::async::Asyncab bool meiUseMuseScoreIds() const; void setMeiUseMuseScoreIds(bool useMuseScoreIds); + bool lrcUseEnhancedFormat() const; + void setLrcUseEnhancedFormat(bool useEnhancedFormat); + enum class MusicXmlLayoutType { AllLayout, AllBreaks, @@ -213,6 +220,8 @@ class ExportDialogModel : public QAbstractListModel, public muse::async::Asyncab void meiExportLayoutChanged(bool exportLayout); void meiUseMuseScoreIdsChanged(bool useMuseScoreIds); + void lrcUseEnhancedFormatChanged(bool enhancedFormat); + void shouldDestinationFolderBeOpenedOnExportChanged(bool shouldDestinationFolderBeOpenedOnExport); private: From 646a7efad666f11e1932d0cfea21153ecff0fb78 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Sun, 30 Nov 2025 11:21:59 +0100 Subject: [PATCH 3/8] Support for the improved lrc format has been added. Priority has been given to the first stave and the first voices. Tests have been added. --- src/importexport/lyricsexport/CMakeLists.txt | 3 + .../internal/iex_lyricsexport.cpp | 202 +- .../lyricsexport/internal/iex_lyricsexport.h | 14 +- .../internal/lyricsexportconfiguration.cpp | 2 +- .../lyricsexport/tests/CMakeLists.txt | 41 + .../tests/data/lrc_enhanced_test1.mscx | 2883 ++++++++++++++++ .../tests/data/lrc_enhanced_test1_ref.lrc | 126 + .../tests/data/lrc_enhanced_test2.mscx | 2169 +++++++++++++ .../tests/data/lrc_enhanced_test2_ref.lrc | 8 + .../tests/data/lrc_enhanced_test3.mscx | 2772 ++++++++++++++++ .../tests/data/lrc_enhanced_test3_ref.lrc | 106 + .../tests/data/lrc_enhanced_test4.mscx | 2628 +++++++++++++++ .../tests/data/lrc_enhanced_test4_ref.lrc | 123 + .../tests/data/lrc_enhanced_test5.mscx | 2397 ++++++++++++++ .../tests/data/lrc_enhanced_test5_ref.lrc | 126 + .../tests/data/lrc_enhanced_test6.mscx | 2154 ++++++++++++ .../tests/data/lrc_enhanced_test6_ref.lrc | 2 + .../tests/data/lrc_simple_test1.mscx | 2884 +++++++++++++++++ .../tests/data/lrc_simple_test1_ref.lrc | 126 + .../tests/data/lrc_simple_test2.mscx | 2170 +++++++++++++ .../tests/data/lrc_simple_test2_ref.lrc | 8 + .../tests/data/lrc_simple_test3.mscx | 2773 ++++++++++++++++ .../tests/data/lrc_simple_test3_ref.lrc | 106 + .../tests/data/lrc_simple_test4.mscx | 2629 +++++++++++++++ .../tests/data/lrc_simple_test4_ref.lrc | 123 + .../tests/data/lrc_simple_test5.mscx | 2398 ++++++++++++++ .../tests/data/lrc_simple_test5_ref.lrc | 126 + .../tests/data/lrc_simple_test6.mscx | 2155 ++++++++++++ .../tests/data/lrc_simple_test6_ref.lrc | 2 + .../lyricsexport/tests/environment.cpp | 53 + .../lyricsexport/tests/lrc_tests.cpp | 127 + 31 files changed, 31382 insertions(+), 54 deletions(-) create mode 100644 src/importexport/lyricsexport/tests/CMakeLists.txt create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test1.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test2.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test2_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test3.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test4.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test5.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test6.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_enhanced_test6_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test1.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test2.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test2_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test3.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test4.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test5.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test6.mscx create mode 100644 src/importexport/lyricsexport/tests/data/lrc_simple_test6_ref.lrc create mode 100644 src/importexport/lyricsexport/tests/environment.cpp create mode 100644 src/importexport/lyricsexport/tests/lrc_tests.cpp diff --git a/src/importexport/lyricsexport/CMakeLists.txt b/src/importexport/lyricsexport/CMakeLists.txt index a146d097dc185..3d00463434151 100644 --- a/src/importexport/lyricsexport/CMakeLists.txt +++ b/src/importexport/lyricsexport/CMakeLists.txt @@ -41,3 +41,6 @@ endif() setup_module() +if (MUE_BUILD_IMPORTEXPORT_TESTS) + add_subdirectory(tests) +endif() diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp index f818ed4e0cb0b..e39a93726b2cb 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -#include "iex_lyricsexport.h" +#include "io/file.h" #include @@ -28,7 +28,10 @@ #include "engraving/dom/repeatlist.h" #include "engraving/dom/lyrics.h" +#include "iex_lyricsexport.h" + using namespace mu::engraving; +using namespace muse::io; namespace mu::iex::lrcexport { // Interface implementation @@ -37,43 +40,65 @@ std::vector LRCWriter::supportedUnitTypes() return { UnitType::PER_PART }; } +// +// LRCWriter::supportsUnitType +// + bool LRCWriter::supportsUnitType(UnitType ut) const { return ut == UnitType::PER_PART; } +// +// LRCWriter::write +// + muse::Ret LRCWriter::write(notation::INotationPtr notation, muse::io::IODevice& device, const Options&) { Score* score = notation->elements()->msScore(); - QByteArray data; - QBuffer buffer(&data); - bool enhancedFormat = configuration()->lrcUseEnhancedFormat(); + bool enhancedLrc = configuration()->lrcUseEnhancedFormat(); - /*********** - * - * PENDING.... - Is there any advantage to writing to a buffer first, and then writing that buffer to the device? It would seem more efficient to me to write to the device directly. - - ******/ + return write(score, &device, enhancedLrc); +} - buffer.open(QIODevice::WriteOnly); +// +// LRCWriter::exportLrc +// - writeMetadata(buffer, score); +bool LRCWriter::exportLrc(mu::engraving::Score* score, muse::io::IODevice* device, bool enhancedLrc) +{ + write(score, device, enhancedLrc); + return true; +} - const auto lyrics = collectLyrics(score); +// +// LRCWriter::writeScore +// - // Write lyrics - for (auto it = lyrics.constBegin(); it != lyrics.constEnd(); ++it) { - buffer.write(QString("[%1]%2\n").arg(formatTimestamp(it.key()), it.value()).toUtf8()); +bool LRCWriter::writeScore(mu::engraving::Score* score, const muse::io::path_t& path, bool enhancedLrc) +{ + File f(path); + if (!f.open(IODevice::WriteOnly)) { + return false; } - device.write(data); - return muse::Ret(muse::Ret::Code::Ok); + bool res = exportLrc(score, &f, enhancedLrc) && !f.hasError(); + f.close(); + + return res; } +// +// LRCWriter::writeList +// + muse::Ret LRCWriter::writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) { return muse::Ret(muse::Ret::Code::NotSupported); } -void LRCWriter::writeMetadata(QIODevice& device, const engraving::Score* score) const +// +// LRCWriter::writeMetadata +// + +void LRCWriter::writeMetadata(muse::io::IODevice* device, const engraving::Score* score) const { QString metadata; @@ -90,69 +115,80 @@ void LRCWriter::writeMetadata(QIODevice& device, const engraving::Score* score) } if (!metadata.isEmpty()) { - device.write(metadata.toUtf8()); + device->write(metadata.toUtf8()); } } -// Core lyric collection (simplified) -QMap LRCWriter::collectLyrics(const Score* score) const +// +// LRCWriter::write +// + +muse::Ret LRCWriter::write(mu::engraving::Score* score, muse::io::IODevice* device, bool enhancedLrc) { - QMap lyrics; - const RepeatList& repeats = score->repeatList(); + writeMetadata(device, score); - LOGI() << "tpacebes "; + const auto lyrics = collectLyrics(score); - int paabRepeatSegment = 0; + // Write lyrics + for (auto it = lyrics.constBegin(); it != lyrics.constEnd(); ++it) { + if (enhancedLrc) { + // As there should only be words we replace spaces by "-" + QString lyricsText = it.value(); + lyricsText.replace(QRegularExpression("\\s"), "-"); + lyricsText.replace(QChar(0x00A0), QChar('-')); + + device->write(QString("[%1] <%1> %2\n").arg(formatTimestamp(it.key()), lyricsText).toUtf8()); + } else { + device->write(QString("[%1]%2\n").arg(formatTimestamp(it.key()), it.value()).toUtf8()); + } + } - for (const RepeatSegment* rs : repeats) { - const int tickOffset = rs->utick - rs->tick; + return muse::Ret(muse::Ret::Code::Ok); +} - ++paabRepeatSegment; +// +// LRCWriter::collectLyrics +// - LOGI() << "tpacebes repeat segment " << paabRepeatSegment; +QMap LRCWriter::collectLyrics(const mu::engraving::Score* score) +{ + QMap lyrics; + const RepeatList& repeats = score->repeatList(); - int paabMeasureBase = 0; + staff_idx_t lyricsStaff; + voice_idx_t lyricsVoice; + int lyricNumber; - for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + findStaffVoiceAndLyricToExport(score, lyricsStaff, lyricsVoice, lyricNumber); - ++paabMeasureBase; + for (const RepeatSegment* rs : repeats) { + const int tickOffset = rs->utick - rs->tick; + for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { if (!mb->isMeasure()) { continue; } - LOGI() << "tpacebes measure base " << paabMeasureBase; - - int paabSegment = 0; for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { - ++paabSegment; if (!seg->isChordRestType()) { continue; } - LOGI() << "tpacebes paabSegment " << paabSegment; - - int paabEngravingItem = 0; for (EngravingItem* e : seg->elist()) { - ++paabEngravingItem; if (!e || !e->isChordRest()) { continue; } - LOGI() << "tpacebes paabEngravingItem " << paabEngravingItem; - - int paabLyrics = 0; for (Lyrics* l : toChordRest(e)->lyrics()) { - ++paabLyrics; // if (l->text().empty()) if (l->plainText().isEmpty()) { continue; } - LOGI() << "tpacebes paabLyrics " << paabLyrics; - const qreal time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; - lyrics.insert(time, l->plainText()); - LOGI() << "tpacebes insertamos Time " << time << "==>" << l->plainText() << "<=="; + if ((lyricsStaff == e->staffIdx()) && (lyricsVoice == e->voice()) && (lyricNumber == l->subtype())) { + const qreal time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; + lyrics.insert(time, l->plainText()); + } } } } @@ -161,6 +197,10 @@ QMap LRCWriter::collectLyrics(const Score* score) const return lyrics; } +// +// LRCWriter::formatTimestamp +// + QString LRCWriter::formatTimestamp(qreal ms) const { const int totalSec = static_cast(ms / 1000); @@ -169,4 +209,68 @@ QString LRCWriter::formatTimestamp(qreal ms) const .arg(totalSec % 60, 2, 10, QLatin1Char('0')) .arg(static_cast(ms) % 1000 / 10, 2, 10, QLatin1Char('0')); } + +// +// LRCWriter::findStaffVoiceAndLyricToExport +// + +void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score, mu::engraving::staff_idx_t& staff, + mu::engraving::voice_idx_t& voice, int& lyricNumber) +{ + bool lyricsFound = false; + staff = 0; + voice = 0; + lyricNumber = 0; + + const RepeatList& repeats = score->repeatList(); + + for (const RepeatSegment* rs : repeats) { + const int tickOffset = rs->utick - rs->tick; + + for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + if (!mb->isMeasure()) { + continue; + } + + for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { + if (!seg->isChordRestType()) { + continue; + } + + for (EngravingItem* e : seg->elist()) { + if (!e || !e->isChordRest()) { + continue; + } + + for (Lyrics* l : toChordRest(e)->lyrics()) { + // if (l->text().empty()) + if (l->plainText().isEmpty()) { + continue; + } else { + if (!lyricsFound) { + lyricsFound = true; + staff = e->staffIdx(); + voice = e->voice(); + lyricNumber = l->subtype(); + } else { + if (staff > e->staffIdx()) { + staff = e->staffIdx(); + voice = e->voice(); + lyricNumber = l->subtype(); + } else if (staff == e->staffIdx()) { + if (voice > e->voice()) { + voice = e->voice(); + lyricNumber = l->subtype(); + } else if (voice == e->voice()) { + lyricNumber = min(lyricNumber, l->subtype()); + } + } + } + } + } + } + } + } + } +} } // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.h b/src/importexport/lyricsexport/internal/iex_lyricsexport.h index 87e627b450c53..d33b45d01c955 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.h +++ b/src/importexport/lyricsexport/internal/iex_lyricsexport.h @@ -25,7 +25,9 @@ #include #include "project/inotationwriter.h" -#include "../ilyricsexportconfiguration.h" +#include "engraving/engravingerrors.h" + +#include "importexport/lyricsexport/ilyricsexportconfiguration.h" namespace mu::engraving { class Score; @@ -35,19 +37,23 @@ namespace mu::iex::lrcexport { class LRCWriter : public project::INotationWriter { public: - INJECT_STATIC(mu::iex::lrcexport::LyricsExportConfiguration, configuration) + INJECT_STATIC(mu::iex::lrcexport::ILyricsExportConfiguration, configuration) public: // Interface implementation std::vector supportedUnitTypes() const override; bool supportsUnitType(UnitType) const override; muse::Ret write(notation::INotationPtr, muse::io::IODevice&, const Options&) override; - void writeMetadata(QIODevice& device, const engraving::Score* score) const; + void writeMetadata(muse::io::IODevice* device, const engraving::Score* score) const; muse::Ret writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) override; + bool writeScore(mu::engraving::Score* score, const muse::io::path_t& path, bool enhancedLrc); private: + muse::Ret write(mu::engraving::Score* score, muse::io::IODevice*, bool); // Core lyric functionality - QMap collectLyrics(const engraving::Score*) const; + QMap collectLyrics(const mu::engraving::Score*); QString formatTimestamp(qreal ms) const; + bool exportLrc(mu::engraving::Score*, muse::io::IODevice*, bool); + void findStaffVoiceAndLyricToExport(const mu::engraving::Score*, mu::engraving::staff_idx_t&, mu::engraving::voice_idx_t&, int&); }; } // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp index 8a8b902fa2065..7556bd1c5aca7 100644 --- a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp @@ -35,7 +35,7 @@ static const Settings::Key LRC_USE_ENHANCED_FORMAT_KEY(module_name, "export/lrc/ void LyricsExportConfiguration::init() { - settings()->setDefaultValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(false)); + settings()->setDefaultValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(true)); } async::Channel LyricsExportConfiguration::lrcUseEnhancedFormatChanged() const diff --git a/src/importexport/lyricsexport/tests/CMakeLists.txt b/src/importexport/lyricsexport/tests/CMakeLists.txt new file mode 100644 index 0000000000000..bf29d8dab740a --- /dev/null +++ b/src/importexport/lyricsexport/tests/CMakeLists.txt @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: GPL-3.0-only +# MuseScore-Studio-CLA-applies +# +# MuseScore Studio +# Music Composition & Notation +# +# Copyright (C) 2021 MuseScore Limited +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set(MODULE_TEST iex_lyricsexport_tests) + +set(MODULE_TEST_SRC + ${PROJECT_SOURCE_DIR}/src/engraving/tests/utils/scorerw.cpp + ${PROJECT_SOURCE_DIR}/src/engraving/tests/utils/scorerw.h + ${PROJECT_SOURCE_DIR}/src/engraving/tests/utils/scorecomp.cpp + ${PROJECT_SOURCE_DIR}/src/engraving/tests/utils/scorecomp.h + + ${CMAKE_CURRENT_LIST_DIR}/environment.cpp + ${CMAKE_CURRENT_LIST_DIR}/lrc_tests.cpp +) + +set(MODULE_TEST_LINK + engraving + iex_lyricsexport + ) + +set(MODULE_TEST_DATA_ROOT ${CMAKE_CURRENT_LIST_DIR}) + +include(SetupGTest) + diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1.mscx new file mode 100644 index 0000000000000..b45faa4941a97 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1.mscx @@ -0,0 +1,2883 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 1 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 1 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + A/r/uBZgznN_IxH//SHTq1E + SOneVOne In + + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + ZRklYxvIJLM_ydn4XA1/l9H + SOneVOne a + + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + NzlP2JPB/E_aAkqaDTlrZG + SOneVOne village of + + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + QUho+MyBUSF_f/hwgXVoL2P + SOneVOne La + + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + aelXvYTNQVO_HWxxoJEA91H + SOneVOne Mancha + + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + c7k3s32pGHP_tqdekQOBn4M + SOneVOne the + + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + LdPE3tHANtM_m4+RI3Syv0E + SOneVOne name + + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + /VTabch22CP_UqqaIVOYFjN + SOneVOne of + + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + hLdxEggS0tC_Q8X2UN2/mjB + + SOneVTwo Text1 + + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + Kqr6Kn5yxjL_CnyQt3HjWqK + + SOneVTwo Text2 + + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + EouG6XHC3rC_5quESjiH/pD + + SOneVTwo Text3 + + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + EqNnKvPfkKI_lHvhRhdxmXB + SOneVOne which + + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + j7gw/xRtudD_g4xJGA3j1LP + SOneVOne I + + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + mLWQ8eSoUGJ_NvuuP3HVb/E + SOneVOne have + + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + gTB8TFnORgP_EQC7UGKH/mO + SOneVOne no + + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + S+v5OXzSmpI_w6WtXZPXkiD + SOneVOne desire + + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + 2cIzajbsUSC_UYe4JJt3YUK + SOneVOne to + + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + UdttEJfj3LL_pFSfXZhszOC + SOneVOne call + + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + 1Eq0Ra3knaN_8qVP6W8a04N + SOneVOne to + + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + daIvF7iw6NF_D7pegd0bEuN + SOneVOne mind, SOneVOne there + + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + TWf7SCj+xoD_O4wPOzAqtoP + SOneVOne lived + + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + sv07AF46oWJ_+TakMa23TKJ + SOneVOne not + + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + npz7sTfzLUL_uTt1sFAfLOJ + SOneVOne long + + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + wh6r7Z6UZoO_shs+UazablE + SOneVOne since + + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + mNEM3eliEOC_V81FXMySiLD + SOneVOne one + + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + TAFf0h63uyH_SDpuNH5yZKD + SOneVOne of + + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + AEAOPXKIPDI_0JksQQbl4xK + SOneVOne those + + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + 8EAvEPZ/QaP_ZAJWhKNeid + SOneVOne gentlement + + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + r4tHe00mH4J_UszSosFIkpI + SOneVOne that + + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QXoBeeilkaL_OPBpaq6JWoC + SOneVOne keep + + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + QT+1ksEBTON_5UkMH4bq+xE + SOneVOne a + + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + 4ygylCrZ0uJ_X/9o5YaSjPH + SOneVOne lance + + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + gYistFe7+5H_rpFOeOYlE4D + SOneVOne in + + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 577q0ktf4MH_i3ZETk7W12G + SOneVOne the + + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + U518nTRgGrN_aF7rRfY0z/N + SOneVOne lance-rack, + + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + uxYPiMtpbMD_AjeeshWB6ZH + SOneVOne an + + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + YSw+R0sYF3F_GsldAfROnlH + SOneVOne old + + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + A3mFb0H8dvF_1RhSbS98MyK + SOneVOne buckler, + + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + 3KT4cPBxgOJ_F2s/kjEheaN + SOneVOne ,a + + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + AUCYoxVpsQP_Ea4vzMN6+1 + SOneVOne lean + + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + gw8yiHIbac_68OIeRTghxN + SOneVOne hack, + + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + HQhMettB1f_PgdMe7SJGZN + + + + gur0fz8vReB_DDDkqvBmJlE + SOneVOne and a + + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + 8W1j7dv/QXC_/WVEXONgeoL + SOneVOne greyhound + + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + xDU4YP3r4cL_5O5PYmzkgI + SOneVOne for + + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + +yh0t/9/XCJ_k+AzCrJAMAD + SOneVOne coursin. + + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + wUrmZg3odhC_R4mSUlTJyeJ + SOneVOne An + + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + mBCVgeAz2XE_C+gxdrLNChH + SOneVOne olla + + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + AkPX3MdUGTG_VLUsc85LKmB + SOneVOne of + + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + QhETWzE2ktO_V3arAqHk9iK + SOneVOne rather + + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + Eaoh48ug5KL_0pBw22FvAwB + SOneVOne more + + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + aq/R0GLoWJC_Ih45Xwnod0K + SOneVOne beef + + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + QMjlMYfta4M_4ClMdiLvVVJ + SOneVOne than + + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + qL3dggDh6VK_eWPJmEY9OhF + SOneVOne mutton + + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + /69FcPyft7K_z/ANENX9KGK + SOneVOne a + + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + KxNmrxwWguO_xy6j5hFhYs + SOneVOne salad + + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + SspDtGc7RyN_IcnTgRUNJ4F + SOneVOne on + + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + PJwHjyuMukJ_lxVjd3zf3iH + SOneVOne most + + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + 6/RZ6GBXexG_u3qlvRA3arP + SOneVOne nights, + + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + YpCSvN3pOQK_lgtU7oR20nK + SOneVOne End + + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + 4uXxB0OPCXP_jcQS+BK1VsM + STwoVOne In + + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + CqVzIkRJS/J_APO9L8fmUXH + STwoVOne a + + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + OCrx3+IDbRM_yaZ6MNOavrL + STwoVOne village of + + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + 7/EYK6uO1kN_OiTMPt6uE0L + STwoVOne La + + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + +RW+ApnWWPJ_TgNsEUL2aBH + STwoVOne Mancha + + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + rAG2L0v6TIN_RE/JyWxEviG + STwoVOne the + + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + eZx5b4yDhqN_I4nDoCAYGfI + STwoVOne name + + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + F6Nfh29u0EM_gFoFDyJDNgJ + STwoVOne of + + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc new file mode 100644 index 0000000000000..396b900552d44 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc @@ -0,0 +1,126 @@ +[ti:LRC test 1] +[ar:No composer] +[00:00.00] <00:00.00> SOneVOne-In +[00:00.50] <00:00.50> SOneVOne-a +[00:01.00] <00:01.00> SOneVOne-village-of +[00:01.50] <00:01.50> SOneVOne-La +[00:02.00] <00:02.00> SOneVOne-Mancha +[00:02.50] <00:02.50> SOneVOne-the +[00:03.00] <00:03.00> SOneVOne-name +[00:03.50] <00:03.50> SOneVOne-of +[00:04.00] <00:04.00> SOneVOne-which +[00:04.50] <00:04.50> SOneVOne-I +[00:05.00] <00:05.00> SOneVOne-have +[00:05.50] <00:05.50> SOneVOne-no +[00:06.00] <00:06.00> SOneVOne-desire +[00:06.50] <00:06.50> SOneVOne-to +[00:07.00] <00:07.00> SOneVOne-call +[00:07.50] <00:07.50> SOneVOne-to +[00:08.00] <00:08.00> SOneVOne-mind,-SOneVOne-there +[00:08.50] <00:08.50> SOneVOne-lived +[00:09.00] <00:09.00> SOneVOne-not +[00:09.50] <00:09.50> SOneVOne-long +[00:10.00] <00:10.00> SOneVOne-since +[00:10.50] <00:10.50> SOneVOne-one +[00:11.00] <00:11.00> SOneVOne-of +[00:11.50] <00:11.50> SOneVOne-those +[00:12.00] <00:12.00> SOneVOne-desire +[00:12.50] <00:12.50> SOneVOne-to +[00:13.00] <00:13.00> SOneVOne-call +[00:13.50] <00:13.50> SOneVOne-to +[00:14.00] <00:14.00> SOneVOne-mind,-SOneVOne-there +[00:14.50] <00:14.50> SOneVOne-lived +[00:15.00] <00:15.00> SOneVOne-not +[00:15.50] <00:15.50> SOneVOne-long +[00:16.00] <00:16.00> SOneVOne-since +[00:16.50] <00:16.50> SOneVOne-one +[00:17.00] <00:17.00> SOneVOne-of +[00:17.50] <00:17.50> SOneVOne-those +[00:18.00] <00:18.00> SOneVOne-gentlement +[00:18.50] <00:18.50> SOneVOne-that +[00:19.00] <00:19.00> SOneVOne-keep +[00:19.50] <00:19.50> SOneVOne-a +[00:20.00] <00:20.00> SOneVOne-lance +[00:20.50] <00:20.50> SOneVOne-in +[00:21.00] <00:21.00> SOneVOne-the +[00:21.50] <00:21.50> SOneVOne-lance-rack, +[00:22.00] <00:22.00> SOneVOne-an +[00:22.50] <00:22.50> SOneVOne-old +[00:23.00] <00:23.00> SOneVOne-buckler, +[00:23.50] <00:23.50> SOneVOne-,a +[00:24.00] <00:24.00> SOneVOne-lean +[00:24.50] <00:24.50> SOneVOne-hack, +[00:25.00] <00:25.00> SOneVOne-and-a +[00:25.50] <00:25.50> SOneVOne-greyhound +[00:26.00] <00:26.00> SOneVOne-for +[00:26.50] <00:26.50> SOneVOne-coursin. +[00:27.00] <00:27.00> SOneVOne-An +[00:27.50] <00:27.50> SOneVOne-olla +[00:28.00] <00:28.00> SOneVOne-of +[00:28.50] <00:28.50> SOneVOne-rather +[00:29.00] <00:29.00> SOneVOne-more +[00:29.50] <00:29.50> SOneVOne-beef +[00:30.00] <00:30.00> SOneVOne-Mancha +[00:30.50] <00:30.50> SOneVOne-the +[00:31.00] <00:31.00> SOneVOne-name +[00:31.50] <00:31.50> SOneVOne-of +[00:32.00] <00:32.00> SOneVOne-which +[00:32.50] <00:32.50> SOneVOne-I +[00:33.00] <00:33.00> SOneVOne-have +[00:33.50] <00:33.50> SOneVOne-no +[00:34.00] <00:34.00> SOneVOne-desire +[00:34.50] <00:34.50> SOneVOne-to +[00:35.00] <00:35.00> SOneVOne-call +[00:35.50] <00:35.50> SOneVOne-to +[00:36.00] <00:36.00> SOneVOne-mind,-SOneVOne-there +[00:36.50] <00:36.50> SOneVOne-lived +[00:37.00] <00:37.00> SOneVOne-not +[00:37.50] <00:37.50> SOneVOne-long +[00:38.00] <00:38.00> SOneVOne-since +[00:38.50] <00:38.50> SOneVOne-one +[00:39.00] <00:39.00> SOneVOne-of +[00:39.50] <00:39.50> SOneVOne-those +[00:40.00] <00:40.00> SOneVOne-desire +[00:40.50] <00:40.50> SOneVOne-to +[00:41.00] <00:41.00> SOneVOne-call +[00:41.50] <00:41.50> SOneVOne-to +[00:42.00] <00:42.00> SOneVOne-mind,-SOneVOne-there +[00:42.50] <00:42.50> SOneVOne-lived +[00:43.00] <00:43.00> SOneVOne-not +[00:43.50] <00:43.50> SOneVOne-long +[00:44.00] <00:44.00> SOneVOne-since +[00:44.50] <00:44.50> SOneVOne-one +[00:45.00] <00:45.00> SOneVOne-of +[00:45.50] <00:45.50> SOneVOne-those +[00:46.00] <00:46.00> SOneVOne-gentlement +[00:46.50] <00:46.50> SOneVOne-that +[00:47.00] <00:47.00> SOneVOne-keep +[00:47.50] <00:47.50> SOneVOne-a +[00:48.00] <00:48.00> SOneVOne-lance +[00:48.50] <00:48.50> SOneVOne-in +[00:49.00] <00:49.00> SOneVOne-the +[00:49.50] <00:49.50> SOneVOne-lance-rack, +[00:50.00] <00:50.00> SOneVOne-an +[00:50.50] <00:50.50> SOneVOne-old +[00:51.00] <00:51.00> SOneVOne-buckler, +[00:51.50] <00:51.50> SOneVOne-,a +[00:52.00] <00:52.00> SOneVOne-lean +[00:52.50] <00:52.50> SOneVOne-hack, +[00:53.00] <00:53.00> SOneVOne-and-a +[00:53.50] <00:53.50> SOneVOne-greyhound +[00:54.00] <00:54.00> SOneVOne-on +[00:54.50] <00:54.50> SOneVOne-most +[00:55.00] <00:55.00> SOneVOne-nights, +[00:55.50] <00:55.50> SOneVOne-End +[00:56.00] <00:56.00> SOneVOne-of +[00:56.50] <00:56.50> SOneVOne-rather +[00:57.00] <00:57.00> SOneVOne-more +[00:57.50] <00:57.50> SOneVOne-beef +[00:58.00] <00:58.00> SOneVOne-than +[00:58.50] <00:58.50> SOneVOne-mutton +[00:59.00] <00:59.00> SOneVOne-a +[00:59.50] <00:59.50> SOneVOne-salad +[01:00.00] <01:00.00> SOneVOne-on +[01:00.50] <01:00.50> SOneVOne-most +[01:01.00] <01:01.00> SOneVOne-nights, +[01:01.50] <01:01.50> SOneVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2.mscx new file mode 100644 index 0000000000000..e4b80b33cb005 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2.mscx @@ -0,0 +1,2169 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 2 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 2 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2_ref.lrc new file mode 100644 index 0000000000000..e76bbafde5dda --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test2_ref.lrc @@ -0,0 +1,8 @@ +[ti:LRC test 2] +[ar:No composer] +[00:02.00] <00:02.00> SThreeVTwo-Text1 +[00:03.00] <00:03.00> SThreeVTwo-Text2 +[00:03.50] <00:03.50> SThreeVTwo-Text3 +[00:30.00] <00:30.00> SThreeVTwo-Text1 +[00:31.00] <00:31.00> SThreeVTwo-Text2 +[00:31.50] <00:31.50> SThreeVTwo-Text3 diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3.mscx new file mode 100644 index 0000000000000..5497fa2b82abb --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3.mscx @@ -0,0 +1,2772 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 3 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 3 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + daIvF7iw6NF_D7pegd0bEuN + SOneVOne mind, SOneVOne there + + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + TWf7SCj+xoD_O4wPOzAqtoP + SOneVOne lived + + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + sv07AF46oWJ_+TakMa23TKJ + SOneVOne not + + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + npz7sTfzLUL_uTt1sFAfLOJ + SOneVOne long + + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + wh6r7Z6UZoO_shs+UazablE + SOneVOne since + + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + mNEM3eliEOC_V81FXMySiLD + SOneVOne one + + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + TAFf0h63uyH_SDpuNH5yZKD + SOneVOne of + + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + AEAOPXKIPDI_0JksQQbl4xK + SOneVOne those + + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + 8EAvEPZ/QaP_ZAJWhKNeid + SOneVOne gentlement + + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + r4tHe00mH4J_UszSosFIkpI + SOneVOne that + + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QXoBeeilkaL_OPBpaq6JWoC + SOneVOne keep + + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + QT+1ksEBTON_5UkMH4bq+xE + SOneVOne a + + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + 4ygylCrZ0uJ_X/9o5YaSjPH + SOneVOne lance + + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + gYistFe7+5H_rpFOeOYlE4D + SOneVOne in + + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 577q0ktf4MH_i3ZETk7W12G + SOneVOne the + + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + U518nTRgGrN_aF7rRfY0z/N + SOneVOne lance-rack, + + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + uxYPiMtpbMD_AjeeshWB6ZH + SOneVOne an + + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + YSw+R0sYF3F_GsldAfROnlH + SOneVOne old + + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + A3mFb0H8dvF_1RhSbS98MyK + SOneVOne buckler, + + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + 3KT4cPBxgOJ_F2s/kjEheaN + SOneVOne ,a + + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + AUCYoxVpsQP_Ea4vzMN6+1 + SOneVOne lean + + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + gw8yiHIbac_68OIeRTghxN + SOneVOne hack, + + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + HQhMettB1f_PgdMe7SJGZN + + + + gur0fz8vReB_DDDkqvBmJlE + SOneVOne and a + + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + 8W1j7dv/QXC_/WVEXONgeoL + SOneVOne greyhound + + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + xDU4YP3r4cL_5O5PYmzkgI + SOneVOne for + + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + +yh0t/9/XCJ_k+AzCrJAMAD + SOneVOne coursin. + + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + wUrmZg3odhC_R4mSUlTJyeJ + SOneVOne An + + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + mBCVgeAz2XE_C+gxdrLNChH + SOneVOne olla + + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + AkPX3MdUGTG_VLUsc85LKmB + SOneVOne of + + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + QhETWzE2ktO_V3arAqHk9iK + SOneVOne rather + + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + Eaoh48ug5KL_0pBw22FvAwB + SOneVOne more + + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + aq/R0GLoWJC_Ih45Xwnod0K + SOneVOne beef + + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + QMjlMYfta4M_4ClMdiLvVVJ + SOneVOne than + + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + qL3dggDh6VK_eWPJmEY9OhF + SOneVOne mutton + + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + /69FcPyft7K_z/ANENX9KGK + SOneVOne a + + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + KxNmrxwWguO_xy6j5hFhYs + SOneVOne salad + + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + SspDtGc7RyN_IcnTgRUNJ4F + SOneVOne on + + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + PJwHjyuMukJ_lxVjd3zf3iH + SOneVOne most + + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + 6/RZ6GBXexG_u3qlvRA3arP + SOneVOne nights, + + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + YpCSvN3pOQK_lgtU7oR20nK + SOneVOne End + + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc new file mode 100644 index 0000000000000..b40076e87108d --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc @@ -0,0 +1,106 @@ +[ti:LRC test 3] +[ar:No composer] +[00:08.00] <00:08.00> SOneVOne-mind,-SOneVOne-there +[00:08.50] <00:08.50> SOneVOne-lived +[00:09.00] <00:09.00> SOneVOne-not +[00:09.50] <00:09.50> SOneVOne-long +[00:10.00] <00:10.00> SOneVOne-since +[00:10.50] <00:10.50> SOneVOne-one +[00:11.00] <00:11.00> SOneVOne-of +[00:11.50] <00:11.50> SOneVOne-those +[00:12.00] <00:12.00> SOneVOne-gentlement +[00:12.50] <00:12.50> SOneVOne-that +[00:13.00] <00:13.00> SOneVOne-keep +[00:13.50] <00:13.50> SOneVOne-a +[00:14.00] <00:14.00> SOneVOne-mind,-SOneVOne-there +[00:14.50] <00:14.50> SOneVOne-lived +[00:15.00] <00:15.00> SOneVOne-not +[00:15.50] <00:15.50> SOneVOne-long +[00:16.00] <00:16.00> SOneVOne-since +[00:16.50] <00:16.50> SOneVOne-one +[00:17.00] <00:17.00> SOneVOne-of +[00:17.50] <00:17.50> SOneVOne-those +[00:18.00] <00:18.00> SOneVOne-gentlement +[00:18.50] <00:18.50> SOneVOne-that +[00:19.00] <00:19.00> SOneVOne-keep +[00:19.50] <00:19.50> SOneVOne-a +[00:20.00] <00:20.00> SOneVOne-lance +[00:20.50] <00:20.50> SOneVOne-in +[00:21.00] <00:21.00> SOneVOne-the +[00:21.50] <00:21.50> SOneVOne-lance-rack, +[00:22.00] <00:22.00> SOneVOne-an +[00:22.50] <00:22.50> SOneVOne-old +[00:23.00] <00:23.00> SOneVOne-buckler, +[00:23.50] <00:23.50> SOneVOne-,a +[00:24.00] <00:24.00> SOneVOne-lean +[00:24.50] <00:24.50> SOneVOne-hack, +[00:25.00] <00:25.00> SOneVOne-and-a +[00:25.50] <00:25.50> SOneVOne-greyhound +[00:26.00] <00:26.00> SOneVOne-for +[00:26.50] <00:26.50> SOneVOne-coursin. +[00:27.00] <00:27.00> SOneVOne-An +[00:27.50] <00:27.50> SOneVOne-olla +[00:28.00] <00:28.00> SOneVOne-of +[00:28.50] <00:28.50> SOneVOne-rather +[00:29.00] <00:29.00> SOneVOne-more +[00:29.50] <00:29.50> SOneVOne-beef +[00:30.00] <00:30.00> SOneVOne-than +[00:30.50] <00:30.50> SOneVOne-mutton +[00:31.00] <00:31.00> SOneVOne-a +[00:31.50] <00:31.50> SOneVOne-salad +[00:32.00] <00:32.00> SOneVOne-on +[00:32.50] <00:32.50> SOneVOne-most +[00:33.00] <00:33.00> SOneVOne-nights, +[00:33.50] <00:33.50> SOneVOne-End +[00:36.00] <00:36.00> SOneVOne-mind,-SOneVOne-there +[00:36.50] <00:36.50> SOneVOne-lived +[00:37.00] <00:37.00> SOneVOne-not +[00:37.50] <00:37.50> SOneVOne-long +[00:38.00] <00:38.00> SOneVOne-since +[00:38.50] <00:38.50> SOneVOne-one +[00:39.00] <00:39.00> SOneVOne-of +[00:39.50] <00:39.50> SOneVOne-those +[00:40.00] <00:40.00> SOneVOne-gentlement +[00:40.50] <00:40.50> SOneVOne-that +[00:41.00] <00:41.00> SOneVOne-keep +[00:41.50] <00:41.50> SOneVOne-a +[00:42.00] <00:42.00> SOneVOne-mind,-SOneVOne-there +[00:42.50] <00:42.50> SOneVOne-lived +[00:43.00] <00:43.00> SOneVOne-not +[00:43.50] <00:43.50> SOneVOne-long +[00:44.00] <00:44.00> SOneVOne-since +[00:44.50] <00:44.50> SOneVOne-one +[00:45.00] <00:45.00> SOneVOne-of +[00:45.50] <00:45.50> SOneVOne-those +[00:46.00] <00:46.00> SOneVOne-gentlement +[00:46.50] <00:46.50> SOneVOne-that +[00:47.00] <00:47.00> SOneVOne-keep +[00:47.50] <00:47.50> SOneVOne-a +[00:48.00] <00:48.00> SOneVOne-lance +[00:48.50] <00:48.50> SOneVOne-in +[00:49.00] <00:49.00> SOneVOne-the +[00:49.50] <00:49.50> SOneVOne-lance-rack, +[00:50.00] <00:50.00> SOneVOne-an +[00:50.50] <00:50.50> SOneVOne-old +[00:51.00] <00:51.00> SOneVOne-buckler, +[00:51.50] <00:51.50> SOneVOne-,a +[00:52.00] <00:52.00> SOneVOne-lean +[00:52.50] <00:52.50> SOneVOne-hack, +[00:53.00] <00:53.00> SOneVOne-and-a +[00:53.50] <00:53.50> SOneVOne-greyhound +[00:54.00] <00:54.00> SOneVOne-on +[00:54.50] <00:54.50> SOneVOne-most +[00:55.00] <00:55.00> SOneVOne-nights, +[00:55.50] <00:55.50> SOneVOne-End +[00:56.00] <00:56.00> SOneVOne-of +[00:56.50] <00:56.50> SOneVOne-rather +[00:57.00] <00:57.00> SOneVOne-more +[00:57.50] <00:57.50> SOneVOne-beef +[00:58.00] <00:58.00> SOneVOne-than +[00:58.50] <00:58.50> SOneVOne-mutton +[00:59.00] <00:59.00> SOneVOne-a +[00:59.50] <00:59.50> SOneVOne-salad +[01:00.00] <01:00.00> SOneVOne-on +[01:00.50] <01:00.50> SOneVOne-most +[01:01.00] <01:01.00> SOneVOne-nights, +[01:01.50] <01:01.50> SOneVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4.mscx new file mode 100644 index 0000000000000..fc155485a6291 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4.mscx @@ -0,0 +1,2628 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 4 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 4 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + 4uXxB0OPCXP_jcQS+BK1VsM + STwoVOne In + + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + CqVzIkRJS/J_APO9L8fmUXH + STwoVOne a + + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + OCrx3+IDbRM_yaZ6MNOavrL + STwoVOne village of + + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + 7/EYK6uO1kN_OiTMPt6uE0L + STwoVOne La + + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + F6Nfh29u0EM_gFoFDyJDNgJ + STwoVOne of + + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc new file mode 100644 index 0000000000000..076485c1537ae --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc @@ -0,0 +1,123 @@ +[ti:LRC test 4] +[ar:No composer] +[00:00.00] <00:00.00> STwoVOne-In +[00:00.50] <00:00.50> STwoVOne-a +[00:01.00] <00:01.00> STwoVOne-village-of +[00:01.50] <00:01.50> STwoVOne-La +[00:03.50] <00:03.50> STwoVOne-of +[00:04.00] <00:04.00> STwoVOne-which +[00:04.50] <00:04.50> STwoVOne-I +[00:05.00] <00:05.00> STwoVOne-have +[00:05.50] <00:05.50> STwoVOne-no +[00:06.00] <00:06.00> STwoVOne-desire +[00:06.50] <00:06.50> STwoVOne-to +[00:07.00] <00:07.00> STwoVOne-call +[00:07.50] <00:07.50> STwoVOne-to +[00:08.00] <00:08.00> STwoVOne-mind,-STwoVOne-there +[00:08.50] <00:08.50> STwoVOne-lived +[00:09.00] <00:09.00> STwoVOne-not +[00:09.50] <00:09.50> STwoVOne-long +[00:10.00] <00:10.00> STwoVOne-since +[00:10.50] <00:10.50> STwoVOne-one +[00:11.00] <00:11.00> STwoVOne-of +[00:11.50] <00:11.50> STwoVOne-those +[00:12.00] <00:12.00> STwoVOne-desire +[00:12.50] <00:12.50> STwoVOne-to +[00:13.00] <00:13.00> STwoVOne-call +[00:13.50] <00:13.50> STwoVOne-to +[00:14.00] <00:14.00> STwoVOne-mind,-STwoVOne-there +[00:14.50] <00:14.50> STwoVOne-lived +[00:15.00] <00:15.00> STwoVOne-not +[00:15.50] <00:15.50> STwoVOne-long +[00:16.00] <00:16.00> STwoVOne-since +[00:16.50] <00:16.50> STwoVOne-one +[00:17.00] <00:17.00> STwoVOne-of +[00:17.50] <00:17.50> STwoVOne-those +[00:18.00] <00:18.00> STwoVOne-gentlement +[00:18.50] <00:18.50> STwoVOne-that +[00:19.00] <00:19.00> STwoVOne-keep +[00:19.50] <00:19.50> STwoVOne-a +[00:20.00] <00:20.00> STwoVOne-lance +[00:20.50] <00:20.50> STwoVOne-in +[00:21.00] <00:21.00> STwoVOne-the +[00:21.50] <00:21.50> STwoVOne-lance-rack, +[00:22.00] <00:22.00> STwoVOne-an +[00:22.50] <00:22.50> STwoVOne-old +[00:23.00] <00:23.00> STwoVOne-buckler, +[00:23.50] <00:23.50> STwoVOne-,a +[00:24.00] <00:24.00> STwoVOne-lean +[00:24.50] <00:24.50> STwoVOne-hack, +[00:25.00] <00:25.00> STwoVOne-and-a +[00:25.50] <00:25.50> STwoVOne-greyhound +[00:26.00] <00:26.00> STwoVOne-for +[00:26.50] <00:26.50> STwoVOne-coursin. +[00:27.00] <00:27.00> STwoVOne-An +[00:27.50] <00:27.50> STwoVOne-olla +[00:28.00] <00:28.00> STwoVOne-of +[00:28.50] <00:28.50> STwoVOne-rather +[00:29.00] <00:29.00> STwoVOne-more +[00:29.50] <00:29.50> STwoVOne-beef +[00:30.00] <00:30.00> STwoVOne-than +[00:30.50] <00:30.50> STwoVOne-mutton +[00:31.00] <00:31.00> STwoVOne-a +[00:31.50] <00:31.50> STwoVOne-of +[00:32.00] <00:32.00> STwoVOne-which +[00:32.50] <00:32.50> STwoVOne-I +[00:33.00] <00:33.00> STwoVOne-have +[00:33.50] <00:33.50> STwoVOne-no +[00:34.00] <00:34.00> STwoVOne-desire +[00:34.50] <00:34.50> STwoVOne-to +[00:35.00] <00:35.00> STwoVOne-call +[00:35.50] <00:35.50> STwoVOne-to +[00:36.00] <00:36.00> STwoVOne-mind,-STwoVOne-there +[00:36.50] <00:36.50> STwoVOne-lived +[00:37.00] <00:37.00> STwoVOne-not +[00:37.50] <00:37.50> STwoVOne-long +[00:38.00] <00:38.00> STwoVOne-since +[00:38.50] <00:38.50> STwoVOne-one +[00:39.00] <00:39.00> STwoVOne-of +[00:39.50] <00:39.50> STwoVOne-those +[00:40.00] <00:40.00> STwoVOne-desire +[00:40.50] <00:40.50> STwoVOne-to +[00:41.00] <00:41.00> STwoVOne-call +[00:41.50] <00:41.50> STwoVOne-to +[00:42.00] <00:42.00> STwoVOne-mind,-STwoVOne-there +[00:42.50] <00:42.50> STwoVOne-lived +[00:43.00] <00:43.00> STwoVOne-not +[00:43.50] <00:43.50> STwoVOne-long +[00:44.00] <00:44.00> STwoVOne-since +[00:44.50] <00:44.50> STwoVOne-one +[00:45.00] <00:45.00> STwoVOne-of +[00:45.50] <00:45.50> STwoVOne-those +[00:46.00] <00:46.00> STwoVOne-gentlement +[00:46.50] <00:46.50> STwoVOne-that +[00:47.00] <00:47.00> STwoVOne-keep +[00:47.50] <00:47.50> STwoVOne-a +[00:48.00] <00:48.00> STwoVOne-lance +[00:48.50] <00:48.50> STwoVOne-in +[00:49.00] <00:49.00> STwoVOne-the +[00:49.50] <00:49.50> STwoVOne-lance-rack, +[00:50.00] <00:50.00> STwoVOne-an +[00:50.50] <00:50.50> STwoVOne-old +[00:51.00] <00:51.00> STwoVOne-buckler, +[00:51.50] <00:51.50> STwoVOne-,a +[00:52.00] <00:52.00> STwoVOne-lean +[00:52.50] <00:52.50> STwoVOne-hack, +[00:53.00] <00:53.00> STwoVOne-and-a +[00:53.50] <00:53.50> STwoVOne-greyhound +[00:54.00] <00:54.00> STwoVOne-on +[00:54.50] <00:54.50> STwoVOne-most +[00:55.00] <00:55.00> STwoVOne-nights, +[00:55.50] <00:55.50> STwoVOne-End +[00:56.00] <00:56.00> STwoVOne-of +[00:56.50] <00:56.50> STwoVOne-rather +[00:57.00] <00:57.00> STwoVOne-more +[00:57.50] <00:57.50> STwoVOne-beef +[00:58.00] <00:58.00> STwoVOne-than +[00:58.50] <00:58.50> STwoVOne-mutton +[00:59.00] <00:59.00> STwoVOne-a +[00:59.50] <00:59.50> STwoVOne-salad +[01:00.00] <01:00.00> STwoVOne-on +[01:00.50] <01:00.50> STwoVOne-most +[01:01.00] <01:01.00> STwoVOne-nights, +[01:01.50] <01:01.50> STwoVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5.mscx new file mode 100644 index 0000000000000..fc65ca7ab6515 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5.mscx @@ -0,0 +1,2397 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 5 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 5 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc new file mode 100644 index 0000000000000..289ed055d0a1a --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc @@ -0,0 +1,126 @@ +[ti:LRC test 5] +[ar:No composer] +[00:00.00] <00:00.00> SThreeVOne-In +[00:00.50] <00:00.50> SThreeVOne-a +[00:01.00] <00:01.00> SThreeVOne-village-of +[00:01.50] <00:01.50> SThreeVOne-La +[00:02.00] <00:02.00> SThreeVOne-Mancha +[00:02.50] <00:02.50> SOneVOne-the +[00:03.00] <00:03.00> SThreeVOne-name +[00:03.50] <00:03.50> SThreeVOne-of +[00:04.00] <00:04.00> SThreeVOne-which +[00:04.50] <00:04.50> SThreeVOne-I +[00:05.00] <00:05.00> SThreeVOne-have +[00:05.50] <00:05.50> SThreeVOne-no +[00:06.00] <00:06.00> SThreeVOne-desire +[00:06.50] <00:06.50> SThreeVOne-to +[00:07.00] <00:07.00> SThreeVOne-call +[00:07.50] <00:07.50> SThreeVOne-to +[00:08.00] <00:08.00> SThreeVOne-mind,-SThreeVOne-there +[00:08.50] <00:08.50> SThreeVOne-lived +[00:09.00] <00:09.00> SThreeVOne-not +[00:09.50] <00:09.50> SThreeVOne-long +[00:10.00] <00:10.00> SThreeVOne-since +[00:10.50] <00:10.50> SThreeVOne-one +[00:11.00] <00:11.00> SThreeVOne-of +[00:11.50] <00:11.50> SThreeVOne-those +[00:12.00] <00:12.00> SThreeVOne-desire +[00:12.50] <00:12.50> SThreeVOne-to +[00:13.00] <00:13.00> SThreeVOne-call +[00:13.50] <00:13.50> SThreeVOne-to +[00:14.00] <00:14.00> SThreeVOne-mind,-SThreeVOne-there +[00:14.50] <00:14.50> SThreeVOne-lived +[00:15.00] <00:15.00> SThreeVOne-not +[00:15.50] <00:15.50> SThreeVOne-long +[00:16.00] <00:16.00> SThreeVOne-since +[00:16.50] <00:16.50> SThreeVOne-one +[00:17.00] <00:17.00> SThreeVOne-of +[00:17.50] <00:17.50> SThreeVOne-those +[00:18.00] <00:18.00> SThreeVOne-gentlement +[00:18.50] <00:18.50> SThreeVOne-that +[00:19.00] <00:19.00> SThreeVOne-keep +[00:19.50] <00:19.50> SThreeVOne-a +[00:20.00] <00:20.00> SThreeVOne-lance +[00:20.50] <00:20.50> SThreeVOne-in +[00:21.00] <00:21.00> SThreeVOne-the +[00:21.50] <00:21.50> SThreeVOne-lance-rack, +[00:22.00] <00:22.00> SThreeVOne-an +[00:22.50] <00:22.50> SThreeVOne-old +[00:23.00] <00:23.00> SThreeVOne-buckler, +[00:23.50] <00:23.50> SThreeVOne-,a +[00:24.00] <00:24.00> SThreeVOne-lean +[00:24.50] <00:24.50> SThreeVOne-hack, +[00:25.00] <00:25.00> SThreeVOne-and-a +[00:25.50] <00:25.50> SThreeVOne-greyhound +[00:26.00] <00:26.00> SThreeVOne-for +[00:26.50] <00:26.50> SThreeVOne-coursin. +[00:27.00] <00:27.00> SThreeVOne-An +[00:27.50] <00:27.50> SThreeVOne-olla +[00:28.00] <00:28.00> SThreeVOne-of +[00:28.50] <00:28.50> SThreeVOne-rather +[00:29.00] <00:29.00> SThreeVOne-more +[00:29.50] <00:29.50> SThreeVOne-beef +[00:30.00] <00:30.00> SThreeVOne-Mancha +[00:30.50] <00:30.50> SOneVOne-the +[00:31.00] <00:31.00> SThreeVOne-name +[00:31.50] <00:31.50> SThreeVOne-of +[00:32.00] <00:32.00> SThreeVOne-which +[00:32.50] <00:32.50> SThreeVOne-I +[00:33.00] <00:33.00> SThreeVOne-have +[00:33.50] <00:33.50> SThreeVOne-no +[00:34.00] <00:34.00> SThreeVOne-desire +[00:34.50] <00:34.50> SThreeVOne-to +[00:35.00] <00:35.00> SThreeVOne-call +[00:35.50] <00:35.50> SThreeVOne-to +[00:36.00] <00:36.00> SThreeVOne-mind,-SThreeVOne-there +[00:36.50] <00:36.50> SThreeVOne-lived +[00:37.00] <00:37.00> SThreeVOne-not +[00:37.50] <00:37.50> SThreeVOne-long +[00:38.00] <00:38.00> SThreeVOne-since +[00:38.50] <00:38.50> SThreeVOne-one +[00:39.00] <00:39.00> SThreeVOne-of +[00:39.50] <00:39.50> SThreeVOne-those +[00:40.00] <00:40.00> SThreeVOne-desire +[00:40.50] <00:40.50> SThreeVOne-to +[00:41.00] <00:41.00> SThreeVOne-call +[00:41.50] <00:41.50> SThreeVOne-to +[00:42.00] <00:42.00> SThreeVOne-mind,-SThreeVOne-there +[00:42.50] <00:42.50> SThreeVOne-lived +[00:43.00] <00:43.00> SThreeVOne-not +[00:43.50] <00:43.50> SThreeVOne-long +[00:44.00] <00:44.00> SThreeVOne-since +[00:44.50] <00:44.50> SThreeVOne-one +[00:45.00] <00:45.00> SThreeVOne-of +[00:45.50] <00:45.50> SThreeVOne-those +[00:46.00] <00:46.00> SThreeVOne-gentlement +[00:46.50] <00:46.50> SThreeVOne-that +[00:47.00] <00:47.00> SThreeVOne-keep +[00:47.50] <00:47.50> SThreeVOne-a +[00:48.00] <00:48.00> SThreeVOne-lance +[00:48.50] <00:48.50> SThreeVOne-in +[00:49.00] <00:49.00> SThreeVOne-the +[00:49.50] <00:49.50> SThreeVOne-lance-rack, +[00:50.00] <00:50.00> SThreeVOne-an +[00:50.50] <00:50.50> SThreeVOne-old +[00:51.00] <00:51.00> SThreeVOne-buckler, +[00:51.50] <00:51.50> SThreeVOne-,a +[00:52.00] <00:52.00> SThreeVOne-lean +[00:52.50] <00:52.50> SThreeVOne-hack, +[00:53.00] <00:53.00> SThreeVOne-and-a +[00:53.50] <00:53.50> SThreeVOne-greyhound +[00:54.00] <00:54.00> SThreeVOne-on +[00:54.50] <00:54.50> SThreeVOne-most +[00:55.00] <00:55.00> SThreeVOne-nights, +[00:55.50] <00:55.50> SThreeVOne-End +[00:56.00] <00:56.00> SThreeVOne-of +[00:56.50] <00:56.50> SThreeVOne-rather +[00:57.00] <00:57.00> SThreeVOne-more +[00:57.50] <00:57.50> SThreeVOne-beef +[00:58.00] <00:58.00> SThreeVOne-than +[00:58.50] <00:58.50> SThreeVOne-mutton +[00:59.00] <00:59.00> SThreeVOne-a +[00:59.50] <00:59.50> SThreeVOne-salad +[01:00.00] <01:00.00> SThreeVOne-on +[01:00.50] <01:00.50> SThreeVOne-most +[01:01.00] <01:01.00> SThreeVOne-nights, +[01:01.50] <01:01.50> SThreeVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6.mscx b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6.mscx new file mode 100644 index 0000000000000..ab8cde64e7103 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6.mscx @@ -0,0 +1,2154 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + Test + + + LRC test 6 + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 6 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6_ref.lrc new file mode 100644 index 0000000000000..8b84dd37ff20c --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test6_ref.lrc @@ -0,0 +1,2 @@ +[ti:LRC test 6] +[ar:No composer] diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test1.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test1.mscx new file mode 100644 index 0000000000000..599521b0100e6 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test1.mscx @@ -0,0 +1,2884 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 1 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + A/r/uBZgznN_IxH//SHTq1E + SOneVOne In + + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + ZRklYxvIJLM_ydn4XA1/l9H + SOneVOne a + + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + NzlP2JPB/E_aAkqaDTlrZG + SOneVOne village of + + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + QUho+MyBUSF_f/hwgXVoL2P + SOneVOne La + + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + aelXvYTNQVO_HWxxoJEA91H + SOneVOne Mancha + + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + c7k3s32pGHP_tqdekQOBn4M + SOneVOne the + + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + LdPE3tHANtM_m4+RI3Syv0E + SOneVOne name + + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + /VTabch22CP_UqqaIVOYFjN + SOneVOne of + + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + hLdxEggS0tC_Q8X2UN2/mjB + + SOneVTwo Text1 + + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + Kqr6Kn5yxjL_CnyQt3HjWqK + + SOneVTwo Text2 + + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + EouG6XHC3rC_5quESjiH/pD + + SOneVTwo Text3 + + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + EqNnKvPfkKI_lHvhRhdxmXB + SOneVOne which + + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + j7gw/xRtudD_g4xJGA3j1LP + SOneVOne I + + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + mLWQ8eSoUGJ_NvuuP3HVb/E + SOneVOne have + + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + gTB8TFnORgP_EQC7UGKH/mO + SOneVOne no + + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + S+v5OXzSmpI_w6WtXZPXkiD + SOneVOne desire + + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + 2cIzajbsUSC_UYe4JJt3YUK + SOneVOne to + + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + UdttEJfj3LL_pFSfXZhszOC + SOneVOne call + + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + 1Eq0Ra3knaN_8qVP6W8a04N + SOneVOne to + + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + daIvF7iw6NF_D7pegd0bEuN + SOneVOne mind, SOneVOne there + + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + TWf7SCj+xoD_O4wPOzAqtoP + SOneVOne lived + + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + sv07AF46oWJ_+TakMa23TKJ + SOneVOne not + + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + npz7sTfzLUL_uTt1sFAfLOJ + SOneVOne long + + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + wh6r7Z6UZoO_shs+UazablE + SOneVOne since + + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + mNEM3eliEOC_V81FXMySiLD + SOneVOne one + + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + TAFf0h63uyH_SDpuNH5yZKD + SOneVOne of + + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + AEAOPXKIPDI_0JksQQbl4xK + SOneVOne those + + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + 8EAvEPZ/QaP_ZAJWhKNeid + SOneVOne gentlement + + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + r4tHe00mH4J_UszSosFIkpI + SOneVOne that + + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QXoBeeilkaL_OPBpaq6JWoC + SOneVOne keep + + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + QT+1ksEBTON_5UkMH4bq+xE + SOneVOne a + + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + 4ygylCrZ0uJ_X/9o5YaSjPH + SOneVOne lance + + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + gYistFe7+5H_rpFOeOYlE4D + SOneVOne in + + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 577q0ktf4MH_i3ZETk7W12G + SOneVOne the + + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + U518nTRgGrN_aF7rRfY0z/N + SOneVOne lance-rack, + + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + uxYPiMtpbMD_AjeeshWB6ZH + SOneVOne an + + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + YSw+R0sYF3F_GsldAfROnlH + SOneVOne old + + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + A3mFb0H8dvF_1RhSbS98MyK + SOneVOne buckler, + + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + 3KT4cPBxgOJ_F2s/kjEheaN + SOneVOne ,a + + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + AUCYoxVpsQP_Ea4vzMN6+1 + SOneVOne lean + + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + gw8yiHIbac_68OIeRTghxN + SOneVOne hack, + + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + HQhMettB1f_PgdMe7SJGZN + + + + gur0fz8vReB_DDDkqvBmJlE + SOneVOne and a + + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + 8W1j7dv/QXC_/WVEXONgeoL + SOneVOne greyhound + + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + xDU4YP3r4cL_5O5PYmzkgI + SOneVOne for + + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + +yh0t/9/XCJ_k+AzCrJAMAD + SOneVOne coursin. + + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + wUrmZg3odhC_R4mSUlTJyeJ + SOneVOne An + + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + mBCVgeAz2XE_C+gxdrLNChH + SOneVOne olla + + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + AkPX3MdUGTG_VLUsc85LKmB + SOneVOne of + + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + QhETWzE2ktO_V3arAqHk9iK + SOneVOne rather + + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + Eaoh48ug5KL_0pBw22FvAwB + SOneVOne more + + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + aq/R0GLoWJC_Ih45Xwnod0K + SOneVOne beef + + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + QMjlMYfta4M_4ClMdiLvVVJ + SOneVOne than + + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + qL3dggDh6VK_eWPJmEY9OhF + SOneVOne mutton + + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + /69FcPyft7K_z/ANENX9KGK + SOneVOne a + + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + KxNmrxwWguO_xy6j5hFhYs + SOneVOne salad + + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + SspDtGc7RyN_IcnTgRUNJ4F + SOneVOne on + + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + PJwHjyuMukJ_lxVjd3zf3iH + SOneVOne most + + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + 6/RZ6GBXexG_u3qlvRA3arP + SOneVOne nights, + + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + YpCSvN3pOQK_lgtU7oR20nK + SOneVOne End + + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + 4uXxB0OPCXP_jcQS+BK1VsM + STwoVOne In + + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + CqVzIkRJS/J_APO9L8fmUXH + STwoVOne a + + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + OCrx3+IDbRM_yaZ6MNOavrL + STwoVOne village of + + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + 7/EYK6uO1kN_OiTMPt6uE0L + STwoVOne La + + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + +RW+ApnWWPJ_TgNsEUL2aBH + STwoVOne Mancha + + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + rAG2L0v6TIN_RE/JyWxEviG + STwoVOne the + + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + eZx5b4yDhqN_I4nDoCAYGfI + STwoVOne name + + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + F6Nfh29u0EM_gFoFDyJDNgJ + STwoVOne of + + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc new file mode 100644 index 0000000000000..f725337191fde --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc @@ -0,0 +1,126 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] +[00:00.00]SOneVOne In +[00:00.50]SOneVOne a +[00:01.00]SOneVOne village of +[00:01.50]SOneVOne La +[00:02.00]SOneVOne Mancha +[00:02.50]SOneVOne the +[00:03.00]SOneVOne name +[00:03.50]SOneVOne of +[00:04.00]SOneVOne which +[00:04.50]SOneVOne I +[00:05.00]SOneVOne have +[00:05.50]SOneVOne no +[00:06.00]SOneVOne desire +[00:06.50]SOneVOne to +[00:07.00]SOneVOne call +[00:07.50]SOneVOne to +[00:08.00]SOneVOne mind, SOneVOne there +[00:08.50]SOneVOne lived +[00:09.00]SOneVOne not +[00:09.50]SOneVOne long +[00:10.00]SOneVOne since +[00:10.50]SOneVOne one +[00:11.00]SOneVOne of +[00:11.50]SOneVOne those +[00:12.00]SOneVOne desire +[00:12.50]SOneVOne to +[00:13.00]SOneVOne call +[00:13.50]SOneVOne to +[00:14.00]SOneVOne mind, SOneVOne there +[00:14.50]SOneVOne lived +[00:15.00]SOneVOne not +[00:15.50]SOneVOne long +[00:16.00]SOneVOne since +[00:16.50]SOneVOne one +[00:17.00]SOneVOne of +[00:17.50]SOneVOne those +[00:18.00]SOneVOne gentlement +[00:18.50]SOneVOne that +[00:19.00]SOneVOne keep +[00:19.50]SOneVOne a +[00:20.00]SOneVOne lance +[00:20.50]SOneVOne in +[00:21.00]SOneVOne the +[00:21.50]SOneVOne lance-rack, +[00:22.00]SOneVOne an +[00:22.50]SOneVOne old +[00:23.00]SOneVOne buckler, +[00:23.50]SOneVOne ,a +[00:24.00]SOneVOne lean +[00:24.50]SOneVOne hack, +[00:25.00]SOneVOne and a +[00:25.50]SOneVOne greyhound +[00:26.00]SOneVOne for +[00:26.50]SOneVOne coursin. +[00:27.00]SOneVOne An +[00:27.50]SOneVOne olla +[00:28.00]SOneVOne of +[00:28.50]SOneVOne rather +[00:29.00]SOneVOne more +[00:29.50]SOneVOne beef +[00:30.00]SOneVOne Mancha +[00:30.50]SOneVOne the +[00:31.00]SOneVOne name +[00:31.50]SOneVOne of +[00:32.00]SOneVOne which +[00:32.50]SOneVOne I +[00:33.00]SOneVOne have +[00:33.50]SOneVOne no +[00:34.00]SOneVOne desire +[00:34.50]SOneVOne to +[00:35.00]SOneVOne call +[00:35.50]SOneVOne to +[00:36.00]SOneVOne mind, SOneVOne there +[00:36.50]SOneVOne lived +[00:37.00]SOneVOne not +[00:37.50]SOneVOne long +[00:38.00]SOneVOne since +[00:38.50]SOneVOne one +[00:39.00]SOneVOne of +[00:39.50]SOneVOne those +[00:40.00]SOneVOne desire +[00:40.50]SOneVOne to +[00:41.00]SOneVOne call +[00:41.50]SOneVOne to +[00:42.00]SOneVOne mind, SOneVOne there +[00:42.50]SOneVOne lived +[00:43.00]SOneVOne not +[00:43.50]SOneVOne long +[00:44.00]SOneVOne since +[00:44.50]SOneVOne one +[00:45.00]SOneVOne of +[00:45.50]SOneVOne those +[00:46.00]SOneVOne gentlement +[00:46.50]SOneVOne that +[00:47.00]SOneVOne keep +[00:47.50]SOneVOne a +[00:48.00]SOneVOne lance +[00:48.50]SOneVOne in +[00:49.00]SOneVOne the +[00:49.50]SOneVOne lance-rack, +[00:50.00]SOneVOne an +[00:50.50]SOneVOne old +[00:51.00]SOneVOne buckler, +[00:51.50]SOneVOne ,a +[00:52.00]SOneVOne lean +[00:52.50]SOneVOne hack, +[00:53.00]SOneVOne and a +[00:53.50]SOneVOne greyhound +[00:54.00]SOneVOne on +[00:54.50]SOneVOne most +[00:55.00]SOneVOne nights, +[00:55.50]SOneVOne End +[00:56.00]SOneVOne of +[00:56.50]SOneVOne rather +[00:57.00]SOneVOne more +[00:57.50]SOneVOne beef +[00:58.00]SOneVOne than +[00:58.50]SOneVOne mutton +[00:59.00]SOneVOne a +[00:59.50]SOneVOne salad +[01:00.00]SOneVOne on +[01:00.50]SOneVOne most +[01:01.00]SOneVOne nights, +[01:01.50]SOneVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test2.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test2.mscx new file mode 100644 index 0000000000000..60c45255fbc34 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test2.mscx @@ -0,0 +1,2170 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 2 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test2_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test2_ref.lrc new file mode 100644 index 0000000000000..936a078e4e179 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test2_ref.lrc @@ -0,0 +1,8 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] +[00:02.00]SThreeVTwo Text1 +[00:03.00]SThreeVTwo Text2 +[00:03.50]SThreeVTwo Text3 +[00:30.00]SThreeVTwo Text1 +[00:31.00]SThreeVTwo Text2 +[00:31.50]SThreeVTwo Text3 diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test3.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test3.mscx new file mode 100644 index 0000000000000..b286741c8f6ae --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test3.mscx @@ -0,0 +1,2773 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 3 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + daIvF7iw6NF_D7pegd0bEuN + SOneVOne mind, SOneVOne there + + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + TWf7SCj+xoD_O4wPOzAqtoP + SOneVOne lived + + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + sv07AF46oWJ_+TakMa23TKJ + SOneVOne not + + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + npz7sTfzLUL_uTt1sFAfLOJ + SOneVOne long + + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + wh6r7Z6UZoO_shs+UazablE + SOneVOne since + + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + mNEM3eliEOC_V81FXMySiLD + SOneVOne one + + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + TAFf0h63uyH_SDpuNH5yZKD + SOneVOne of + + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + AEAOPXKIPDI_0JksQQbl4xK + SOneVOne those + + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + 8EAvEPZ/QaP_ZAJWhKNeid + SOneVOne gentlement + + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + r4tHe00mH4J_UszSosFIkpI + SOneVOne that + + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QXoBeeilkaL_OPBpaq6JWoC + SOneVOne keep + + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + QT+1ksEBTON_5UkMH4bq+xE + SOneVOne a + + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + 4ygylCrZ0uJ_X/9o5YaSjPH + SOneVOne lance + + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + gYistFe7+5H_rpFOeOYlE4D + SOneVOne in + + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 577q0ktf4MH_i3ZETk7W12G + SOneVOne the + + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + U518nTRgGrN_aF7rRfY0z/N + SOneVOne lance-rack, + + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + uxYPiMtpbMD_AjeeshWB6ZH + SOneVOne an + + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + YSw+R0sYF3F_GsldAfROnlH + SOneVOne old + + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + A3mFb0H8dvF_1RhSbS98MyK + SOneVOne buckler, + + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + 3KT4cPBxgOJ_F2s/kjEheaN + SOneVOne ,a + + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + AUCYoxVpsQP_Ea4vzMN6+1 + SOneVOne lean + + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + gw8yiHIbac_68OIeRTghxN + SOneVOne hack, + + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + HQhMettB1f_PgdMe7SJGZN + + + + gur0fz8vReB_DDDkqvBmJlE + SOneVOne and a + + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + 8W1j7dv/QXC_/WVEXONgeoL + SOneVOne greyhound + + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + xDU4YP3r4cL_5O5PYmzkgI + SOneVOne for + + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + +yh0t/9/XCJ_k+AzCrJAMAD + SOneVOne coursin. + + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + wUrmZg3odhC_R4mSUlTJyeJ + SOneVOne An + + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + mBCVgeAz2XE_C+gxdrLNChH + SOneVOne olla + + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + AkPX3MdUGTG_VLUsc85LKmB + SOneVOne of + + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + QhETWzE2ktO_V3arAqHk9iK + SOneVOne rather + + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + Eaoh48ug5KL_0pBw22FvAwB + SOneVOne more + + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + aq/R0GLoWJC_Ih45Xwnod0K + SOneVOne beef + + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + QMjlMYfta4M_4ClMdiLvVVJ + SOneVOne than + + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + qL3dggDh6VK_eWPJmEY9OhF + SOneVOne mutton + + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + /69FcPyft7K_z/ANENX9KGK + SOneVOne a + + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + KxNmrxwWguO_xy6j5hFhYs + SOneVOne salad + + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + SspDtGc7RyN_IcnTgRUNJ4F + SOneVOne on + + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + PJwHjyuMukJ_lxVjd3zf3iH + SOneVOne most + + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + 6/RZ6GBXexG_u3qlvRA3arP + SOneVOne nights, + + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + YpCSvN3pOQK_lgtU7oR20nK + SOneVOne End + + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc new file mode 100644 index 0000000000000..74e45e3ac1a53 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc @@ -0,0 +1,106 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] +[00:08.00]SOneVOne mind, SOneVOne there +[00:08.50]SOneVOne lived +[00:09.00]SOneVOne not +[00:09.50]SOneVOne long +[00:10.00]SOneVOne since +[00:10.50]SOneVOne one +[00:11.00]SOneVOne of +[00:11.50]SOneVOne those +[00:12.00]SOneVOne gentlement +[00:12.50]SOneVOne that +[00:13.00]SOneVOne keep +[00:13.50]SOneVOne a +[00:14.00]SOneVOne mind, SOneVOne there +[00:14.50]SOneVOne lived +[00:15.00]SOneVOne not +[00:15.50]SOneVOne long +[00:16.00]SOneVOne since +[00:16.50]SOneVOne one +[00:17.00]SOneVOne of +[00:17.50]SOneVOne those +[00:18.00]SOneVOne gentlement +[00:18.50]SOneVOne that +[00:19.00]SOneVOne keep +[00:19.50]SOneVOne a +[00:20.00]SOneVOne lance +[00:20.50]SOneVOne in +[00:21.00]SOneVOne the +[00:21.50]SOneVOne lance-rack, +[00:22.00]SOneVOne an +[00:22.50]SOneVOne old +[00:23.00]SOneVOne buckler, +[00:23.50]SOneVOne ,a +[00:24.00]SOneVOne lean +[00:24.50]SOneVOne hack, +[00:25.00]SOneVOne and a +[00:25.50]SOneVOne greyhound +[00:26.00]SOneVOne for +[00:26.50]SOneVOne coursin. +[00:27.00]SOneVOne An +[00:27.50]SOneVOne olla +[00:28.00]SOneVOne of +[00:28.50]SOneVOne rather +[00:29.00]SOneVOne more +[00:29.50]SOneVOne beef +[00:30.00]SOneVOne than +[00:30.50]SOneVOne mutton +[00:31.00]SOneVOne a +[00:31.50]SOneVOne salad +[00:32.00]SOneVOne on +[00:32.50]SOneVOne most +[00:33.00]SOneVOne nights, +[00:33.50]SOneVOne End +[00:36.00]SOneVOne mind, SOneVOne there +[00:36.50]SOneVOne lived +[00:37.00]SOneVOne not +[00:37.50]SOneVOne long +[00:38.00]SOneVOne since +[00:38.50]SOneVOne one +[00:39.00]SOneVOne of +[00:39.50]SOneVOne those +[00:40.00]SOneVOne gentlement +[00:40.50]SOneVOne that +[00:41.00]SOneVOne keep +[00:41.50]SOneVOne a +[00:42.00]SOneVOne mind, SOneVOne there +[00:42.50]SOneVOne lived +[00:43.00]SOneVOne not +[00:43.50]SOneVOne long +[00:44.00]SOneVOne since +[00:44.50]SOneVOne one +[00:45.00]SOneVOne of +[00:45.50]SOneVOne those +[00:46.00]SOneVOne gentlement +[00:46.50]SOneVOne that +[00:47.00]SOneVOne keep +[00:47.50]SOneVOne a +[00:48.00]SOneVOne lance +[00:48.50]SOneVOne in +[00:49.00]SOneVOne the +[00:49.50]SOneVOne lance-rack, +[00:50.00]SOneVOne an +[00:50.50]SOneVOne old +[00:51.00]SOneVOne buckler, +[00:51.50]SOneVOne ,a +[00:52.00]SOneVOne lean +[00:52.50]SOneVOne hack, +[00:53.00]SOneVOne and a +[00:53.50]SOneVOne greyhound +[00:54.00]SOneVOne on +[00:54.50]SOneVOne most +[00:55.00]SOneVOne nights, +[00:55.50]SOneVOne End +[00:56.00]SOneVOne of +[00:56.50]SOneVOne rather +[00:57.00]SOneVOne more +[00:57.50]SOneVOne beef +[00:58.00]SOneVOne than +[00:58.50]SOneVOne mutton +[00:59.00]SOneVOne a +[00:59.50]SOneVOne salad +[01:00.00]SOneVOne on +[01:00.50]SOneVOne most +[01:01.00]SOneVOne nights, +[01:01.50]SOneVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test4.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test4.mscx new file mode 100644 index 0000000000000..6ccb7c033b1d3 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test4.mscx @@ -0,0 +1,2629 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 4 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + 4uXxB0OPCXP_jcQS+BK1VsM + STwoVOne In + + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + CqVzIkRJS/J_APO9L8fmUXH + STwoVOne a + + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + OCrx3+IDbRM_yaZ6MNOavrL + STwoVOne village of + + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + 7/EYK6uO1kN_OiTMPt6uE0L + STwoVOne La + + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + F6Nfh29u0EM_gFoFDyJDNgJ + STwoVOne of + + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + UMl0Ic8z9K_y77+Rm0FZCP + + STwoVTwo Text1 + + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + 1jEysHrHzoH_gJY5o9Dbzh + + STwoVTwo Text2 + + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + +GMaDqeKC2E_5d5TTQMtU9G + + STwoVTwo Text3 + + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + 0ythUrUmEnH_piLh/y68HVH + STwoVOne which + + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + 5/M5JdGpGmK_vSM72BSGLwM + STwoVOne I + + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + Yhk8peZ+YQC_5yo2vgtMICN + STwoVOne have + + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + 7AenZ5EjSKC_MA1lOromxRC + STwoVOne no + + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + sC9Dam8PtgF_apXGIiRzxLD + STwoVOne desire + + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + QbumhHnG2FF_B+2RSAck4JO + STwoVOne to + + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + Hizkfzuf18E_esqY0HFBIPD + STwoVOne call + + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + zf3UxBbrHFJ_bjzgCa7/HAO + STwoVOne to + + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + LLjloIiRTnI_vNfIQ7Kb1RF + STwoVOne mind, STwoVOne there + + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + KgPwWqkxEHI_6+pEevEDzxM + STwoVOne lived + + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + VV0aW4Se3SI_DbSHfNsxaEF + STwoVOne not + + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + VViFYGqn6iE_Bx2Je0AuvaP + STwoVOne long + + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + yO+F2OorSLB_g0c+5xPXmJG + STwoVOne since + + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + tfRuQa/+YPP_1/t2EQnSYoK + STwoVOne one + + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + teHD/VC+GGD_QOZyjgVumKG + STwoVOne of + + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 2DpuDMdJZpO_IL9pYJWIXcO + STwoVOne those + + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + gocw4O4zRDB_cxlHI8TiMlJ + STwoVOne gentlement + + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + kCyzPfRP0iL_0TuJgCiZUs + STwoVOne that + + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + CxjQbJ3aftF_YfIBW14ohtP + STwoVOne keep + + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + 4g0hM2y1UWG_J1THuSp1ROJ + STwoVOne a + + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + btBX+An+zsM_N3Kzmvs4MBG + STwoVOne lance + + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 2AQcSrK8imM_cIfAd9wPzTC + STwoVOne in + + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + CsSQQtnUW+_5ouTWZsQHtE + STwoVOne the + + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + YV1SQ6VB4nL_XuDJFGnjxrE + STwoVOne lance-rack, + + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + sOK9bINGzPJ_c5r5h15SowH + STwoVOne an + + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + 67YzOJSZlTI_NjlkMdIQdXH + STwoVOne old + + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +kjVqLexHSH_/xy+NIg1X7P + STwoVOne buckler, + + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + 9mGTDDyzha_ouaHea3rubN + STwoVOne ,a + + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3Wd6qB8ROZD_mPqzMO/dJcB + STwoVOne lean + + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + SVQt0DVhmxE_vN9SYBdbcIB + STwoVOne hack, + + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + isUplnmkj+L_ZMuI0FwzJUN + + + + QO8KvGefpbH_XuQIbrBz6mP + STwoVOne and a + + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + Kb86zp5toCL_Tg8KWPasbeN + STwoVOne greyhound + + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + D2crNh2/CV_AQo15VTiap + STwoVOne for + + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + YDIeTY1mM4D_9IqijnmV7XL + STwoVOne coursin. + + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + hNLyOSJXN5M_7dlRx8EJ7cE + STwoVOne An + + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + UWb9emZolW_BBejurT+CsO + STwoVOne olla + + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + 7qH78eez+QI_Cg6rb8iUcBM + STwoVOne of + + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + uJ4z7DfbRpL_TPjy7iiA3fC + STwoVOne rather + + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + i3fO5rjUnqG_qQr9GcoMhoO + STwoVOne more + + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + biwgbH6b9FH_ZX0Tb8dQ20H + STwoVOne beef + + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + n7sydK/ipLE_kt7APi3fePM + STwoVOne than + + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + JPklhCwwEAC_FSmqEfAQ1tO + STwoVOne mutton + + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + GUxSDvnIiHF_7QjafZ/drdP + STwoVOne a + + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + ZHqgU2eQ4sJ_NYfUfAooG9E + STwoVOne salad + + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + hlU5nllg6tL_amndWv+seDO + STwoVOne on + + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + EO8h3mRBaYF_GQiPkE9rdj + STwoVOne most + + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + MoTTEIr8rWI_u/EnbhViJWI + STwoVOne nights, + + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + LZaDSbjTUvH_0i3hjWtjYgB + STwoVOne End + + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc new file mode 100644 index 0000000000000..5b71951f82580 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc @@ -0,0 +1,123 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] +[00:00.00]STwoVOne In +[00:00.50]STwoVOne a +[00:01.00]STwoVOne village of +[00:01.50]STwoVOne La +[00:03.50]STwoVOne of +[00:04.00]STwoVOne which +[00:04.50]STwoVOne I +[00:05.00]STwoVOne have +[00:05.50]STwoVOne no +[00:06.00]STwoVOne desire +[00:06.50]STwoVOne to +[00:07.00]STwoVOne call +[00:07.50]STwoVOne to +[00:08.00]STwoVOne mind, STwoVOne there +[00:08.50]STwoVOne lived +[00:09.00]STwoVOne not +[00:09.50]STwoVOne long +[00:10.00]STwoVOne since +[00:10.50]STwoVOne one +[00:11.00]STwoVOne of +[00:11.50]STwoVOne those +[00:12.00]STwoVOne desire +[00:12.50]STwoVOne to +[00:13.00]STwoVOne call +[00:13.50]STwoVOne to +[00:14.00]STwoVOne mind, STwoVOne there +[00:14.50]STwoVOne lived +[00:15.00]STwoVOne not +[00:15.50]STwoVOne long +[00:16.00]STwoVOne since +[00:16.50]STwoVOne one +[00:17.00]STwoVOne of +[00:17.50]STwoVOne those +[00:18.00]STwoVOne gentlement +[00:18.50]STwoVOne that +[00:19.00]STwoVOne keep +[00:19.50]STwoVOne a +[00:20.00]STwoVOne lance +[00:20.50]STwoVOne in +[00:21.00]STwoVOne the +[00:21.50]STwoVOne lance-rack, +[00:22.00]STwoVOne an +[00:22.50]STwoVOne old +[00:23.00]STwoVOne buckler, +[00:23.50]STwoVOne ,a +[00:24.00]STwoVOne lean +[00:24.50]STwoVOne hack, +[00:25.00]STwoVOne and a +[00:25.50]STwoVOne greyhound +[00:26.00]STwoVOne for +[00:26.50]STwoVOne coursin. +[00:27.00]STwoVOne An +[00:27.50]STwoVOne olla +[00:28.00]STwoVOne of +[00:28.50]STwoVOne rather +[00:29.00]STwoVOne more +[00:29.50]STwoVOne beef +[00:30.00]STwoVOne than +[00:30.50]STwoVOne mutton +[00:31.00]STwoVOne a +[00:31.50]STwoVOne of +[00:32.00]STwoVOne which +[00:32.50]STwoVOne I +[00:33.00]STwoVOne have +[00:33.50]STwoVOne no +[00:34.00]STwoVOne desire +[00:34.50]STwoVOne to +[00:35.00]STwoVOne call +[00:35.50]STwoVOne to +[00:36.00]STwoVOne mind, STwoVOne there +[00:36.50]STwoVOne lived +[00:37.00]STwoVOne not +[00:37.50]STwoVOne long +[00:38.00]STwoVOne since +[00:38.50]STwoVOne one +[00:39.00]STwoVOne of +[00:39.50]STwoVOne those +[00:40.00]STwoVOne desire +[00:40.50]STwoVOne to +[00:41.00]STwoVOne call +[00:41.50]STwoVOne to +[00:42.00]STwoVOne mind, STwoVOne there +[00:42.50]STwoVOne lived +[00:43.00]STwoVOne not +[00:43.50]STwoVOne long +[00:44.00]STwoVOne since +[00:44.50]STwoVOne one +[00:45.00]STwoVOne of +[00:45.50]STwoVOne those +[00:46.00]STwoVOne gentlement +[00:46.50]STwoVOne that +[00:47.00]STwoVOne keep +[00:47.50]STwoVOne a +[00:48.00]STwoVOne lance +[00:48.50]STwoVOne in +[00:49.00]STwoVOne the +[00:49.50]STwoVOne lance-rack, +[00:50.00]STwoVOne an +[00:50.50]STwoVOne old +[00:51.00]STwoVOne buckler, +[00:51.50]STwoVOne ,a +[00:52.00]STwoVOne lean +[00:52.50]STwoVOne hack, +[00:53.00]STwoVOne and a +[00:53.50]STwoVOne greyhound +[00:54.00]STwoVOne on +[00:54.50]STwoVOne most +[00:55.00]STwoVOne nights, +[00:55.50]STwoVOne End +[00:56.00]STwoVOne of +[00:56.50]STwoVOne rather +[00:57.00]STwoVOne more +[00:57.50]STwoVOne beef +[00:58.00]STwoVOne than +[00:58.50]STwoVOne mutton +[00:59.00]STwoVOne a +[00:59.50]STwoVOne salad +[01:00.00]STwoVOne on +[01:00.50]STwoVOne most +[01:01.00]STwoVOne nights, +[01:01.50]STwoVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test5.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test5.mscx new file mode 100644 index 0000000000000..d530f8af484ca --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test5.mscx @@ -0,0 +1,2398 @@ + + + 4.6.3 + 5d3c963 + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC test 5 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + xpTJBMVWt4B_CS9Rb7x4VBG + SThreeVOne In + + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + xQ5BQJBc9VO_nhGGOwiUN3O + SThreeVOne a + + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + 8p1gjn4n+8C_J9xpaPbH5AP + SThreeVOne village of + + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + j8AoJLPqPgP_slbzpVWt7WP + SThreeVOne La + + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + SosGs6H4lBO_q9LzOYz+0ML + SThreeVOne Mancha + + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + 3LLrFWIwyo_i279nfGRSlB + SOneVOne the + + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + NSvqgRp3x1M_HnRHVqkxp+C + SThreeVOne name + + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + rQgsvsRph4F_mhYmLlHNbhH + SThreeVOne of + + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + VQXPRJhBbkM_AdZD8V3tueO + + SThreeVTwo Text1 + + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + hgPf/0WXx3E_w7hJbUwn2BE + + SThreeVTwo Text2 + + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + VLGmvlo/VYH_dzgTI8uzldB + + SThreeVTwo Text3 + + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 9Al74OctlpK_N0YTQh++XqL + SThreeVOne which + + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + bZuOG6WoOjF_tKxcouGBQtK + SThreeVOne I + + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + exAjVGsYqTB_lHshfkRrepG + SThreeVOne have + + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + BM7NLYDKm6E_HOONVIolKWD + SThreeVOne no + + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + mhsjHB/wBTC_KCbIZk5EnHB + SThreeVOne desire + + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + QkTazAIbFKC_zIIclAqqc7J + SThreeVOne to + + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + 89idadoqlJJ_/jpMlr3/8+B + SThreeVOne call + + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + +Kw6zrMXcNH_Gpi2mgQxT2O + SThreeVOne to + + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + fMYBaW58WLJ_8W1KQ/McGmL + SThreeVOne mind, SThreeVOne there + + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + yG7jc6NZKNL_UexmKn+OqPF + SThreeVOne lived + + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + 3vHmg8QhJ9I_7Mf5yNhvWrJ + SThreeVOne not + + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + xp0FdIJlOcO_rbnFDwwNtzM + SThreeVOne long + + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + u0g92mUCJ1K_RRvMqo+8uZP + SThreeVOne since + + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + qT6zYQTr3QE_US81gflvXoI + SThreeVOne one + + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + DCtSyllW5aD_tul2C4fOJ8D + SThreeVOne of + + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + zEh+XoDXr/O_ocxj6QC8kYC + SThreeVOne those + + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + cyEeCTruNmP_Dk4c+/0JEUH + SThreeVOne gentlement + + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + MgRYkhZbVkJ_e1dByKemuUG + SThreeVOne that + + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + fDogMJNSl8D_t44QqlpkMtP + SThreeVOne keep + + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + ieSDnydpe8B_uHE1jKCcH5B + SThreeVOne a + + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + WIJqaQFSzQF_XbVHLhzw4k + SThreeVOne lance + + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + hQMgUflpz/D_PB6Gj+YwUCL + SThreeVOne in + + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + KqkW/R9Wz4L_lyUw0/ksN5K + SThreeVOne the + + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + fgaDN2lA2uO_F4w243n9hgM + SThreeVOne lance-rack, + + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + VznOSKtXuyF_D0vfWqmr+5K + SThreeVOne an + + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + nFzhj4HiOmI_0lK4tPwFMc + SThreeVOne old + + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + J/6DBu9CMbH_Cuh34MSRoLD + SThreeVOne buckler, + + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + pQ81M/TDHzK_xRduGnq+9lJ + SThreeVOne ,a + + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + rFvEm7LXydE_HcJWhdOZLyE + SThreeVOne lean + + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + 4R9VkEPBYQM_QRUeHPH2/VE + SThreeVOne hack, + + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + RAWu3CV6h3M_Nl2E1umQeoC + + + + /5zpIJp/7JI_MVnq4YRYP9D + SThreeVOne and a + + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + PQ56nNS2wJI_J8A24VZ2PO + SThreeVOne greyhound + + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + /D/AXbi6HNF_g7gcM/aI6cE + SThreeVOne for + + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + mVmUjksXp3J_xIlwlxB/h5O + SThreeVOne coursin. + + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + i92KiUiHPDK_z2TnjC6hFLM + SThreeVOne An + + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + ku7sBG3qC1K_PG13Zoq0G1E + SThreeVOne olla + + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + 2MY0+YzRqMI_MFwb+DQLodD + SThreeVOne of + + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + A4bxF/3w1ML_V9dqNl18gbK + SThreeVOne rather + + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + ZD9X998odiE_diBEly/6EhJ + SThreeVOne more + + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + sZkragH9OnE_3ZsHAMThd5G + SThreeVOne beef + + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + dAI80bTJAp_3l+h/oPrRnM + SThreeVOne than + + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + ettw5ewXJ1I_POPFuYI8KVH + SThreeVOne mutton + + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + BIpnw2mxD6C_+h1KCgBsO9H + SThreeVOne a + + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + oAPk65bEPSM_6DpRwarRkiJ + SThreeVOne salad + + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + FE2iiCOf2kL_CUCofN+LfIL + SThreeVOne on + + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + Sq13j9HcmVL_KBxJx+HDqaP + SThreeVOne most + + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + cLEwDw0+BlJ_GroXGPQqDnL + SThreeVOne nights, + + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + 2m7vHc5NMpL_Kf3GBva4VLC + SThreeVOne End + + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc new file mode 100644 index 0000000000000..78c8a01c3203e --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc @@ -0,0 +1,126 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] +[00:00.00]SThreeVOne In +[00:00.50]SThreeVOne a +[00:01.00]SThreeVOne village of +[00:01.50]SThreeVOne La +[00:02.00]SThreeVOne Mancha +[00:02.50]SOneVOne the +[00:03.00]SThreeVOne name +[00:03.50]SThreeVOne of +[00:04.00]SThreeVOne which +[00:04.50]SThreeVOne I +[00:05.00]SThreeVOne have +[00:05.50]SThreeVOne no +[00:06.00]SThreeVOne desire +[00:06.50]SThreeVOne to +[00:07.00]SThreeVOne call +[00:07.50]SThreeVOne to +[00:08.00]SThreeVOne mind, SThreeVOne there +[00:08.50]SThreeVOne lived +[00:09.00]SThreeVOne not +[00:09.50]SThreeVOne long +[00:10.00]SThreeVOne since +[00:10.50]SThreeVOne one +[00:11.00]SThreeVOne of +[00:11.50]SThreeVOne those +[00:12.00]SThreeVOne desire +[00:12.50]SThreeVOne to +[00:13.00]SThreeVOne call +[00:13.50]SThreeVOne to +[00:14.00]SThreeVOne mind, SThreeVOne there +[00:14.50]SThreeVOne lived +[00:15.00]SThreeVOne not +[00:15.50]SThreeVOne long +[00:16.00]SThreeVOne since +[00:16.50]SThreeVOne one +[00:17.00]SThreeVOne of +[00:17.50]SThreeVOne those +[00:18.00]SThreeVOne gentlement +[00:18.50]SThreeVOne that +[00:19.00]SThreeVOne keep +[00:19.50]SThreeVOne a +[00:20.00]SThreeVOne lance +[00:20.50]SThreeVOne in +[00:21.00]SThreeVOne the +[00:21.50]SThreeVOne lance-rack, +[00:22.00]SThreeVOne an +[00:22.50]SThreeVOne old +[00:23.00]SThreeVOne buckler, +[00:23.50]SThreeVOne ,a +[00:24.00]SThreeVOne lean +[00:24.50]SThreeVOne hack, +[00:25.00]SThreeVOne and a +[00:25.50]SThreeVOne greyhound +[00:26.00]SThreeVOne for +[00:26.50]SThreeVOne coursin. +[00:27.00]SThreeVOne An +[00:27.50]SThreeVOne olla +[00:28.00]SThreeVOne of +[00:28.50]SThreeVOne rather +[00:29.00]SThreeVOne more +[00:29.50]SThreeVOne beef +[00:30.00]SThreeVOne Mancha +[00:30.50]SOneVOne the +[00:31.00]SThreeVOne name +[00:31.50]SThreeVOne of +[00:32.00]SThreeVOne which +[00:32.50]SThreeVOne I +[00:33.00]SThreeVOne have +[00:33.50]SThreeVOne no +[00:34.00]SThreeVOne desire +[00:34.50]SThreeVOne to +[00:35.00]SThreeVOne call +[00:35.50]SThreeVOne to +[00:36.00]SThreeVOne mind, SThreeVOne there +[00:36.50]SThreeVOne lived +[00:37.00]SThreeVOne not +[00:37.50]SThreeVOne long +[00:38.00]SThreeVOne since +[00:38.50]SThreeVOne one +[00:39.00]SThreeVOne of +[00:39.50]SThreeVOne those +[00:40.00]SThreeVOne desire +[00:40.50]SThreeVOne to +[00:41.00]SThreeVOne call +[00:41.50]SThreeVOne to +[00:42.00]SThreeVOne mind, SThreeVOne there +[00:42.50]SThreeVOne lived +[00:43.00]SThreeVOne not +[00:43.50]SThreeVOne long +[00:44.00]SThreeVOne since +[00:44.50]SThreeVOne one +[00:45.00]SThreeVOne of +[00:45.50]SThreeVOne those +[00:46.00]SThreeVOne gentlement +[00:46.50]SThreeVOne that +[00:47.00]SThreeVOne keep +[00:47.50]SThreeVOne a +[00:48.00]SThreeVOne lance +[00:48.50]SThreeVOne in +[00:49.00]SThreeVOne the +[00:49.50]SThreeVOne lance-rack, +[00:50.00]SThreeVOne an +[00:50.50]SThreeVOne old +[00:51.00]SThreeVOne buckler, +[00:51.50]SThreeVOne ,a +[00:52.00]SThreeVOne lean +[00:52.50]SThreeVOne hack, +[00:53.00]SThreeVOne and a +[00:53.50]SThreeVOne greyhound +[00:54.00]SThreeVOne on +[00:54.50]SThreeVOne most +[00:55.00]SThreeVOne nights, +[00:55.50]SThreeVOne End +[00:56.00]SThreeVOne of +[00:56.50]SThreeVOne rather +[00:57.00]SThreeVOne more +[00:57.50]SThreeVOne beef +[00:58.00]SThreeVOne than +[00:58.50]SThreeVOne mutton +[00:59.00]SThreeVOne a +[00:59.50]SThreeVOne salad +[01:00.00]SThreeVOne on +[01:00.50]SThreeVOne most +[01:01.00]SThreeVOne nights, +[01:01.50]SThreeVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test6.mscx b/src/importexport/lyricsexport/tests/data/lrc_simple_test6.mscx new file mode 100644 index 0000000000000..4d2a847d9f1ce --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test6.mscx @@ -0,0 +1,2155 @@ + + + 4.7.0 + + + ptd5K0cbQWJ_7WgqqiM1qfC + 480 + 1 + 1 + 1 + 0 + 1 + + + No composer + + 2025-11-27 + No lyricist + + + Microsoft Windows + + + Test + + + MuseScore 24814 lrc Test File + + Orchestra + + Flutes + + + Oboes + + + Saxophones + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas + +
+
+ timpani +
+
+ keyboard-percussion + + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion + +
+ keyboards + harps + organs + synths + + +
+ voices + voice-groups +
+
+ orchestral-strings +
+
+ + + 6ZXmektUTNJ_H0T3MgSHPzC + + stdNormal + + + 1 + + Flute + + Flute + Fl. + Flute + 59 + 98 + 60 + 93 + wind.flutes.flute + + + Fluid + + + + + + 3mLBkX1UvdG_K5iapaf0Xi + + stdNormal + + 1 + + Oboe + + Oboe + Ob. + Oboe + 58 + 96 + 58 + 87 + wind.reed.oboe + + + Fluid + + + + + + q5dYpzf4wJN_Jk03INxHaQM + + stdNormal + + G8vb + G + + Tenor Saxophone + + Tenor Saxophone + T. Sax. + Tenor Saxophone + 44 + 87 + 44 + 75 + -8 + -14 + wind.reed.saxophone.tenor + G8vb + G + + + Fluid + + + + + + 10 + cbGWvZ+JWxL_8BQdoZstPkB + + pAy1i3kyUYO_eBmnj3y0yIC + + LRC simple test 1 + + + eEZV4ds+VyP_41wnWzfnBzC + + Test + + + JN8Wka5Ig7B_U1erPdpOLAP + + No composer + + + iIRFBfZy2j_MTEd4VeFFJN + + No lyricist + + + + wZCtPKaI0rD_ZilxJWAaLhF + + + 3CKV5kOQ7c_q40P2DhGKC + 0 + + + HLcjQgRkSYF_35xummrLLLG + 4 + 4 + + + 5aiKfiygMYN_rtWFeeyxESO + quarter + + mJ+wtE0YZ6G_DVdf5n5y81C + 57 + 17 + + + + r8U3+lKuDDN_5mzLCDGHfEF + quarter + + pL73HfI8g5_3ijUody2vf + 59 + 19 + + + + czmd/HAnL9M_wGW82mgJNcP + quarter + + uyuRKUtCLaE_P8+ndDe2Q4M + 60 + 14 + + + + WcSBuLQTKFP_EU438p0F1HB + quarter + + +nJFLaeKyPO_4DgaiXAjkxF + 62 + 16 + + + + + + U7Yg9b4WMPB_Ga8fZFq4DWK + + nBJ0kaKuwEF_BmEUsBXhDPH + + segno + + segno + + + + O3gyJ4GFs7H_pSxfA4gCU2L + quarter + + H5rAxpDRBkJ_OA8HYwV+aHE + 64 + 18 + + + + 4QRgg+1FgRB_ViA4Iko04+I + quarter + + xjT5H2L1cIM_Soy7oc00lbN + 65 + 13 + + + + qY8+Z/63azL_rBURwLU6ioN + quarter + + BfJbJMEo81K_UP4swzB0NcO + 67 + 15 + + + + sn6XtHFTWcF_Hg7xKAOEyhI + quarter + + 9YGQ1RoJx3E_Wr8qinWM6QH + 69 + 17 + + + + + + 9gpK9BQmvTO_DsVsOkRMzlL + half + + IO1Qq9fdNaC_8BoenX0o8EE + 77 + 13 + + + + lq/oB4L9CtI_a7IWNHHKouB + quarter + + eTe+QrcvbeB_OS9BUHQk3hJ + 79 + 15 + + + + EgGwjiT9/NG_jx8g6RZcuCD + quarter + + q3n5JKUf1CE_vcNPcHii3QH + 79 + 15 + + + + + + Hwu9HnyO/CK_3O/wMYvl29 + + + af2UPzegOaD_Hbopf2mVNKM + quarter + + 6gd8pSA/e/E_z4MGHs6HraH + 71 + 19 + + + + J3MbhZU1NdJ_aVuSVVpsKAK + quarter + + BOpMmiTr7oO_tN80lA7cdaD + 72 + 14 + + + + hQKoixlgVlL_OThtRCFlmmP + quarter + + +NxP4PvPnVP_w0C/hpQ4upN + 74 + 16 + + + + PF/A+M3SZq_Kds5+AU2/uL + quarter + + GipA3PWDZyJ_nX+Vn2aeK7D + 76 + 18 + + + + + + 3hfUReu+IeD_juHmhaowCAP + + + + B+NH6JNs1LF_f31QpNgXwsB + quarter + + ZIbti3XqQF_lsccGLdko6L + 57 + 17 + + + + GeRmxknDdOH_WYBC+de9IKG + quarter + + pudXv86jlvN_HJtFT6jsRf + 59 + 19 + + + + AYUo5IDvegN_i717EbtNHvC + quarter + + G0ZX4PiQmyJ_tV0QMlK6EMN + 60 + 14 + + + + 6r3AtMWEjk_XPogRTKm/IE + quarter + + vUWEPRtccME_DuPdZd7FQdI + 62 + 16 + + + + + + oIH5EE27P1D_ix6rcWxj+VP + + + QRnh3jzJRuH_GcgqNvy2eTN + quarter + + aKC1wDQNl8C_krEsr6095FJ + 64 + 18 + + + + rBpJD60ZRwM_Nqj8/KdIdLF + quarter + + i+cOWU/iyZO_LmW1phDI8UG + 65 + 13 + + + + NITOzlTZnuC_30wh51lxuVP + quarter + + Zm9E8XbQgMD_0wXl3DCVD/I + 67 + 15 + + + + I+p9hs+ZJUO_l6U0xI8T+oJ + quarter + + G4UgyFRXJNH_eeKJqPlAbhF + 69 + 17 + + + + + + rOiUF9mAA4K_XI+Aui9RI2M + 2 + + + 0LuF6A+PJzK_/60d5JVw2hE + quarter + + szfPi0G7+0J_kLfYV7EEED + 71 + 19 + + + + krh4zrKay4M_e9d8McufaHO + quarter + + fRDzYkfi2WM_l+K0eMJUtLF + 72 + 14 + + + + J9W1k5a496O_h9YCcwzdrUB + quarter + + uq8rMnv6/kP_7eRDEnuC64N + 74 + 16 + + + + rvdT1mZ97AL_Dt/5SwAa0vH + quarter + + qNxYccHyj5F_wym71JzgB4N + 76 + 18 + + + + + + rolQInWAnrI_5/MBdTToaXL + + + uq4XudUS0UB_DGOHt4kMdOB + quarter + + r1eRushbJQG_bvVjY0t4MiH + 57 + 17 + + + + y/jykLRRvXE_VcKvGSAi1IP + quarter + + iEYBy800RvD_Xuk61+BidFC + 59 + 19 + + + + bLRH0bwKlCF_iuYhYGUcdLB + quarter + + QqXfeANImfP_C3qERZaWobB + 60 + 14 + + + + kCLYo3JDbtJ_BtSnrRsbSoL + quarter + + 8YkbO+pIBrP_ESN+8kwTOk + 62 + 16 + + + + + + xYU3EgCfq2M_4RTwmbzRLrL + + + PpcD/cEFkXE_P4TbIcSO8aB + quarter + + QjOrYU4mRWM_14IUEZRs1P + 64 + 18 + + + + ok2hqHr9f5N_xiEDKoREzO + quarter + + NQAnPr3kbRP_iQvOZlG5ohJ + 65 + 13 + + + + i4xqKNeIwSK_MJ6wvFXVBaD + quarter + + 1tP/fH059kI_ZOqM+/fjc0F + 67 + 15 + + + + 7B8+6iKE+KL_wp8T9dnyziO + quarter + + 0DaUgGlyGEF_a4JoYKXFhd + 69 + 17 + + + + + + pAqJkCsEg8D_I/P5lnUQ4qN + + + B6u6hUKJwOM_EIK+TC5AmnO + quarter + + zgQzPGB+pLF_pN/fu/QKGIJ + 71 + 19 + + + + QIoCHERchyB_LVV88gP8XMN + quarter + + wFXABfrlR8I_D/IQ9Hw4YgB + 72 + 14 + + + + 58PjY+qbeDO_9MZfI7eN0kO + quarter + + aH+w/I6ftoE_U9uNSHZbj9J + 74 + 16 + + + + +rMTsT4u64E_+yLLO/54oGP + quarter + + esnh+Sg/opH_dPiROrPTVQG + 76 + 18 + + + + + + 3YXjHSbxmVO_A6gSGfHRtZP + + d6vc4FUFxwK_zIJ4SWa+R3 + + To Coda + + coda + + + + AxoCCrhVYwP_3FiglfGy4yH + quarter + + QoTzrb1L/rC_YOgMwLuGncE + 57 + 17 + + + + eHJGbEQUspB_7HHx8JBqIFC + quarter + + tOoc5+tk42G_hC3gkQlUgzO + 59 + 19 + + + + 412QoxPo9IL_QqTR5Cf+8KF + quarter + + UTUD4VefBTC_sDMIVTHpysI + 60 + 14 + + + + LjYMwxJTlxP_VGHy/bhIJ0B + quarter + + cH5F+Xgoa0N_QKmXuoMbzxK + 62 + 16 + + + + + + f0S6UH93WWG_NBPnDN4UUsC + + + HQw1ISPB/9J_tXrqQ7tNqUH + quarter + + D3Pg+8NpoyM_vG7udyVjZvN + 64 + 18 + + + + LaHpyGbvwuL_fIaj1P1IrzJ + quarter + + Ryr9yzuIz6K_MRNtoj/UbtL + 65 + 13 + + + + LjdfkXdQd0H_hDlrHfaSwPI + quarter + + VkYb6Bc1k5I_ZZ8px4rOcwO + 67 + 15 + + + + UKX1nBGe46P_EdeW84F2n/K + quarter + + dd8JmwFoWfH_HWAMznVpgZM + 69 + 17 + + + + + + iSeyemIi71N_8uFa+tsXBJF + + Y/Ohi+Sn58J_xRHEz+a0OVE + + D.S. al Coda + segno + coda + codab + 1 + + + + NZWvW7s9r4B_dEAp0Kv6aCD + quarter + + 5UOLdUIsi4I_sAkdEOeZBiD + 71 + 19 + + + + U9TzSoBnHYH_lYw1jfh9ulP + quarter + + XHD1XqG13G_DoL6BLQBZd + 72 + 14 + + + + oUO11133GOE_2+N3VoMIWBI + quarter + + 6j8nPv2P6/L_2qIrTOLRHTE + 74 + 16 + + + + GJANjyX8t9O_patrDYT4JkG + quarter + + WgUQ4RozjqE_JphOwe5GOxP + 76 + 18 + + + + + + 1CjrNQOyosE_S32E53dxilN + + + a1bmWoPmQEN_Rh5isaYWfME + quarter + + N6R21R16xgN_3TcLzhdi5jH + 60 + 14 + + + + LnSQAweF2UE_Sqky38RQ37K + quarter + + GKJX173djZJ_Pz2RVd7c5dL + 62 + 16 + + + + NLoD0VobAgG_U8pEvpTgDHH + quarter + + fke2JPvqWUH_zIpuboL2rsP + 64 + 18 + + + + hiAaXq1sMGI_TfthK2OqweO + quarter + + qehoKHm8DIF_9n/ymdjTAbH + 65 + 13 + + + + + + reLAnv9BT7G_TQGbxEsLhp + + ZBJ+1rYrrbD_nFl1JZ0fQTB + + coda + + codab + + + + llEKapxYFjI_9C9qNWO/dW + quarter + + xhrKFTXBvyN_+ylRM7IL8nO + 57 + 17 + + + + nMQBAbI7ndI_zH2leBYGvPM + quarter + + 442SN6tOYON_Pq/qGP4W7mP + 59 + 19 + + + + /HFlRE9xbqP_M3ROqn2vRB + quarter + + dOGg/erTRsM_uf7n64DJfYP + 60 + 14 + + + + 8Vmyyw4UkXD_xRW6Gc9ndBE + quarter + + WMPRMHPAxEI_XNaruQHmE6I + 62 + 16 + + + + + + + + + + F9HpONxK3DI_csI0scUiY1E + 0 + + + nMyHOrQefCK_FyrecKbG+9P + 4 + 4 + + + ofwh2nOar8L_o5syiNO01oM + quarter + + RGVo2JpH1xE_flaNgn2T0sI + 57 + 17 + + + + LXM+RuOw8DD_n4+KD7X68WG + quarter + + P11J2FwIdi_j8+DA5EU2BL + 59 + 19 + + + + TE+gt1ZWivG_X1hJggz6KWC + quarter + + wK5PDbp1UBN_hjnM76azMnB + 60 + 14 + + + + 7GRbZbZqIrE_osNhxqDVgmN + quarter + + XwYeTkPBTiB_nT2kBLuXTWF + 62 + 16 + + + + + + + + t83I2ch59YH_dstCJQQpaNH + quarter + + txeZuGbnBcN_5Wgf/BbEDBL + 64 + 18 + + + + xk0qhP0imJO_wEOzy2BfncO + quarter + + oYdaC6G/z2B_l5OEOyQtEUD + 65 + 13 + + + + M38FXcWoRyO_v4fOhnODoKN + quarter + + EPfYkzQzRrC_iY/Xy0P3jDN + 67 + 15 + + + + gyaf6yEOxaK_odpo7exOOED + quarter + + Xka0ru8ppXL_s/+XjdP7Z6O + 69 + 17 + + + + + + W89JtndEcxL_OE7SOb3OC1D + half + + TcOEdiiQQOO_F3o8m2+DT0D + 77 + 13 + + + + zMaH6CXO/4M_UwAfo5vMQrN + quarter + + rKks9lBOtbG_ze9q+0tolzD + 79 + 15 + + + + UAEmvmqrC8I_lGXK7uNmEOC + quarter + + kLLlqZXH+eC_KM5YDe/M61B + 79 + 15 + + + + + + + + q0ib9vuJMP_+xplqj5pAyK + quarter + + Mc26jarz/GB_3pIDtgKjRzC + 71 + 19 + + + + 7Z0Aha/K0LN_OF4BUT5iVIM + quarter + + es5Agfev7LK_o2ReIoga9QH + 72 + 14 + + + + 2pf0PNtvDxB_0yp6ZsX5I6 + quarter + + m6zUMtplsBI_E5JUO485IfD + 74 + 16 + + + + gykA0K98xgG_tf28XDcF9KM + quarter + + IUvSAGC8x/E_I7kn7T7nolB + 76 + 18 + + + + + + + + dq9z0bsYaqH_Zg86mhQ+BkD + quarter + + eHe8krU6lYI_RVJAkeB9ssG + 57 + 17 + + + + ReqMR/us6rJ_kGcB2zwIbsK + quarter + + MpszaKohDZK_EnogNytuRnD + 59 + 19 + + + + anSxrfrR63I_VH12zUgjVZM + quarter + + pJhRszjrr8D_CiHr+khZgwG + 60 + 14 + + + + ejrpvstHDiC_mUQdxgOQimB + quarter + + nk2WwN+FruH_8YKxqUu1+ID + 62 + 16 + + + + + + + + 9kdqZcoGrhE_vgAotl2rRFE + quarter + + eU/dMVrQ1VI_dwqaAyWuenG + 64 + 18 + + + + NXUikzHFliM_2zdI4R4xGGM + quarter + + xPaVVvaWCHL_HvbNEVKKpNH + 65 + 13 + + + + n+26cwf9P/E_jTH1xjDFsuM + quarter + + QZFFe0jaXpI_NUMogmrixKI + 67 + 15 + + + + eyYV2AdIbDK_Bkckup7R78 + quarter + + SbuUEOJWU/B_q62aFhbf05P + 69 + 17 + + + + + + + + 6XXjlPUCLYJ_g+Zi/mHh8UM + quarter + + 4P7Gk7LCZKP_X3WopmomqCG + 71 + 19 + + + + 7K7KX5lMPSF_fildPBHP8ZD + quarter + + gnWbNWWGZ+G_kQ8QrhQN5uL + 72 + 14 + + + + NfP4n+WS96F_hclT+86PYYJ + quarter + + 3ugwH+mDEGN_h0Aek09eHaH + 74 + 16 + + + + 8kXIvybr67J_4n8QjUobVuM + quarter + + 7gWNZNg8deN_OrtIzIpJqZB + 76 + 18 + + + + + + + + F0sgrKiERNC_wSRoiz7qKoN + quarter + + VNsQg6x+pjL_RU4wi8UP3BF + 57 + 17 + + + + Zz/dFvM4TjE_H5MgwogJRJD + quarter + + XNwowMZfeAK_tpyQ5N7dYcF + 59 + 19 + + + + NIxv9OHXMNG_RpPrumnVDKF + quarter + + 0thFApfBOzH_9dtJyFfVutB + 60 + 14 + + + + 0n3nzB24+NB_qRVexXcSEXB + quarter + + ezaEKtqN/NK_5k75C4INQmF + 62 + 16 + + + + + + + + aJzPtFg3RDJ_GircPCTX9dF + quarter + + Gn3cXT8Dy0G_ps4dF6VRj6I + 64 + 18 + + + + I+wYZtW8rqG_tsKm3VU1otP + quarter + + 5xLriJ1WGPN_13cIY4AwzgG + 65 + 13 + + + + px2d4hYyVEE_qAdz4mmSjGM + quarter + + o0MMOOWTjgJ_dbOPOVub9nC + 67 + 15 + + + + x7AiynQ62EP_GjYu+PZs4+O + quarter + + gAIU/vgDCWC_LVS25Pabx4G + 69 + 17 + + + + + + + + YNyuc8IDg/H_Z8NbhYcMoPO + quarter + + gmdpWe1dA5E_6JhsU5CGQXE + 71 + 19 + + + + PU3ZzO1HJ5J_MvFw2wJysKL + quarter + + n0i172juqpP_3c2869yY45K + 72 + 14 + + + + eahv7az7EK_QC9/ViujZZE + quarter + + +fUDn9F5axP_ZG0iFQcsBwI + 74 + 16 + + + + XD/xTIUZgcI_vnvBjKrminG + quarter + + /aRuRNXYjpJ_VxHCh1WdJ6N + 76 + 18 + + + + + + + + 0qXteVXS1VP_tGRYY/T66DL + quarter + + 3PZm/pBoIrI_nX7ZRVJEdCG + 57 + 17 + + + + D6JfyJz9pxN_87Dz174fEIN + quarter + + O5w97s17pME_bKgTYdMqDpP + 59 + 19 + + + + 9af7E1/Ue1P_l9DSOyUU4jD + quarter + + 93KuB5/kCDL_Qq5fK6qjklC + 60 + 14 + + + + fnf6vAkTFmG_ZD/6j13vdxE + quarter + + +Eq2vmR+PoN_VcNVzm/tDI + 62 + 16 + + + + + + + + 7PM75bbn2mD_fTNJwpNWzQH + quarter + + TXC2HAJoOtB_jdZqg/f0zlP + 64 + 18 + + + + AgBRy+QA5SJ_14MZ5TJR5CN + quarter + + eCQB7TbQzuG_rWlXH6vEOTP + 65 + 13 + + + + Lgc2IeEC+rO_dH8hovFZtQG + quarter + + Hph8egfMXLN_5ha/svsa+QC + 67 + 15 + + + + ULB3+VPmQeI_6nyU9lVOuy + quarter + + wfTkblhByVO_Ah3nYMOEEqE + 69 + 17 + + + + + + + + dP3oTwkITGI_cKOOpUhh+4C + quarter + + b20Hv9uGRxN_u4q/OfPUcLG + 71 + 19 + + + + R8h9L3zyooF_AGoYujU2Lj + quarter + + DH1fCVW04WH_UJyijrot5XB + 72 + 14 + + + + 3nRyzy/34ZO_yJKZlO3hReO + quarter + + CN6gT8VNJBF_o0ZuZHvFVEI + 74 + 16 + + + + ysiTHTUhoEL_GsNMMNv5c3F + quarter + + Lp/eEWFdlrJ_/0QctQUAHeF + 76 + 18 + + + + + + + + 59DLg5TSc1O_8fyaAc6JRgL + quarter + + MhqJvNR+LBO_5hh8YOCWe1P + 60 + 14 + + + + xCA5q2Vg2j_EAykbTYpf6G + quarter + + iJi7J36OJlC_gUILVVgKIHC + 62 + 16 + + + + 9H+sC1nVsOP_s+ySmwqv1WB + quarter + + Jb3yJoJAf+B_Osdd9KRr8eJ + 64 + 18 + + + + WjGbl6jIkUF_vHdH1BmtNoF + quarter + + JRDlZDQ2s7N_3EvDPLxkCrF + 65 + 13 + + + + + + + + Ykq/0D85II_qKyK91PTeNP + quarter + + +rmjD4fx3bO_rTJU1mj6qSB + 57 + 17 + + + + WFvTguNTBiP_2wgss1vfpQP + quarter + + +/6os58NKhI_gEuIBSnkteC + 59 + 19 + + + + JOfn1NY4Ii_if4RaVnYIzK + quarter + + xx4q2ln21iH_B2DZ8bwzjmB + 60 + 14 + + + + 12F4czYXNM_vT80kq7zntP + quarter + + oUZuTZj2PoO_m+Hfv2Tt+EL + 62 + 16 + + + + + + + + + + 57j+Wu06dsN_k/TwLrkWmjH + 0 + 2 + + + R8hxIVYegxM_2Im1Tl+B1YG + 4 + 4 + + + IVPDH+u542H_wUqkxHuw8+M + quarter + + d9mAdSdn2e_mq7ZGssQ0aM + 43 + 15 + 17 + + + + hULurZtRQUG_XMltxL8ESJF + quarter + + uPB5Vj0ZXPF_3jhcqsNUeQE + 45 + 17 + 19 + + + + q9G+AVJDepI_DNERDMcUJxM + quarter + + ce+B6tUo9QM_lIimdVu8zLL + + accidentalSharp + klS5+a6uxZD_OJD8n0xPuOF + + 46 + 24 + 26 + + + + Zpjt7ULU/NG_sRX1p0j/hpL + quarter + + /Ii3pO+nYHH_wVn2Q+U301L + 48 + 14 + 16 + + + + + + + + l5E8Qg2TUGJ_hbLk2kw7OYE + quarter + + wcZMo4mPdtC_OAVCCpgOjcB + 50 + 16 + 18 + + + + va8meaHcI3G_KW7TXvIALnG + quarter + + BSOCCdFR89G_m4upwVnhwUI + + accidentalSharp + lsv7tnc9QEM_zkoL/CXLrvD + + 51 + 23 + 25 + + + + 3fVRKRGpy5O_wGbC1YIjzNH + quarter + + IMcxfF4Nvo_B2kQUTs0yVE + 53 + 13 + 15 + + + + 63J6r4y3ZjI_Be24mFqze5F + quarter + + XxuPyoxG8TD_AkLVq0UYHMO + 55 + 15 + 17 + + + + + + d+z0b/l/3y_u3873IL78XK + half + + jr+eg53IOQP_I3CketZYjUI + + accidentalSharp + toGXyC8P9tB_MJLNszIzzrP + + 63 + 23 + 25 + + + + MEwXntG7pvP_wGe++wPw+UF + quarter + + GODxEYo46CL_Jdnonr219hE + 65 + 13 + 15 + + + + COqQLG3+Q8E_RQ4KYd3rBlK + quarter + + 5w7P2IhFweF_cHV1hxDyyML + 65 + 13 + 15 + + + + + + + + 7Z4J4cYsi/F_vSot/KxUGiK + quarter + + 5yGOGUFnhYO_4uinRhSHe8 + 57 + 17 + 19 + + + + nhgmq0ZFq4I_+dY4GpIGmWD + quarter + + LkMa96VXk9P_A9FkIETdkqH + + accidentalSharp + n9L2bs4EROO_sh7B0qEkyzH + + 58 + 24 + 26 + + + + 2+Ovhl2bwl_zuT+Ykv5BBK + quarter + + OqBRhCQ5X4M_InH4z8kkGX + 60 + 14 + 16 + + + + oa+xpR+48iL_DKIgtcOcmVI + quarter + + qTANU3+baqH_j4RQdiGSTvC + 62 + 16 + 18 + + + + + + + + xoE+Pw1SyYC_l/OjmA9CGZM + quarter + + LXOtfWI4kxJ_arF4l0451aH + 43 + 15 + 17 + + + + fjHwwoQH2jH_0iZ5CQNlPmG + quarter + + DSTsERnODVF_++/a+ampkkJ + 45 + 17 + 19 + + + + QlJ3TlsDOkH_kz5MTk0sJUJ + quarter + + scaVwT1AnDB_3cZMiXWiWTI + + accidentalSharp + SoELOVlyfN_5qMW5Cvu9cC + + 46 + 24 + 26 + + + + sMsBypwbsXH_mrGlTSy/SML + quarter + + 0z+/2IzfzXL_Ypvs3y8YeGO + 48 + 14 + 16 + + + + + + + + kyZwooJsfoK_w+P54ExSWlJ + quarter + + 9xzc1E0s+fP_19Cjwi8RfbG + 50 + 16 + 18 + + + + OG6NgvtLChI_CZwy1mAqkE + quarter + + 8F9siawroQG_0F6CjE3swuG + + accidentalSharp + Zgv/TrldDBN_/SiJ+I0I7bG + + 51 + 23 + 25 + + + + rho6VCUW2JJ_LPnb1a6EVjE + quarter + + QaNDiLz3/0E_GGAHUR9ZkeJ + 53 + 13 + 15 + + + + 1/8YkwtZIdH_IGCQ1WC+KLB + quarter + + 3bc5NOzVaTJ_EvGIKnXA6DH + 55 + 15 + 17 + + + + + + + + QFQ2Phgf3nM_cl9ckVpwTIE + quarter + + Ab/5JqVsRgC_4c9xb/csI4K + 57 + 17 + 19 + + + + eTZzkI6AmiO_S4opI2cb6ZE + quarter + + 8TJ5xT1SpGM_z9lU45qiBDL + + accidentalSharp + 9Q9pcwIvIoH_h6rHuSaKKLN + + 58 + 24 + 26 + + + + pX/HcQjiKt_gjVg5Fdd9nJ + quarter + + pf8IwX/95AE_UZuNxoerioK + 60 + 14 + 16 + + + + rhQH1wJePtL_d96Tl4jvggI + quarter + + rEzjaQaSg4N_/vJYjPIjl8F + 62 + 16 + 18 + + + + + + + + VFXiJPgzFQC_TG8eX2OafJP + quarter + + V/676Zzq/fO_g7RjCuLe7EH + 43 + 15 + 17 + + + + THYn4PCw00H_Sef55np78rF + quarter + + CPd6tPyLpzK_yCWkPjptavE + 45 + 17 + 19 + + + + h78nISIUBiL_UrHAdccyTaF + quarter + + Tb8gMg/SMZC_K8mPjfjG56F + + accidentalSharp + VuwXDb4todM_Gvsj7Mp27vM + + 46 + 24 + 26 + + + + L30Fe/HyOBM_jYvG8n+qtII + quarter + + 8sJvM4VtHSN_5FqtI+H7JhO + 48 + 14 + 16 + + + + + + + + lIySZBG2Eu_Gv1SV6jFfLB + quarter + + lckiHJa0aGM_StOlbZkuCLH + 50 + 16 + 18 + + + + /u6dGtHY3hL_MDlqVX/hI+N + quarter + + CX6m4wY2ChC_3g+ZcB5ffpN + + accidentalSharp + N2JW305FpEK_A5MmX6SQHsP + + 51 + 23 + 25 + + + + 08pQF4RN4ML_oINE3gYI6CF + quarter + + 4Sj+JRAATsI_AVHOTwYMLh + 53 + 13 + 15 + + + + GhzDY2F2DaK_Jk1k+PXcMRK + quarter + + Og7BCEX5FfN_Ot9N8D/qSL + 55 + 15 + 17 + + + + + + + + sdRY09b8iPE_jEdNYpXro9I + quarter + + FEUfX6L7wfC_l//O1cHDYsG + 57 + 17 + 19 + + + + btril/9Pu8O_mtkYsNUW3eD + quarter + + Ps16cqVTRKC_XIbGRY2AlnI + + accidentalSharp + pt6tAFtbXTP_CIMF18GEDTP + + 58 + 24 + 26 + + + + vdQLV7xGXrD_2I0cPMMoQH + quarter + + DPPLpVS6wCJ_WAoG1fhS9UB + 60 + 14 + 16 + + + + TXnCJw/riFM_gPv+FYkSrWO + quarter + + gZrmc78059M_LZy8WCl0TiH + 62 + 16 + 18 + + + + + + + + XKvPHwTxb4P_MojHgZX2qKK + quarter + + prqIVMnq7RE_wmQzFfLLDbF + 43 + 15 + 17 + + + + jonLVMGFYGC_6LZ6SVbSnuG + quarter + + op2JNaJS9QL_1WiPCYzGkME + 45 + 17 + 19 + + + + +7P8sXWaOS_NpwZiiMGLk + quarter + + t/Ttwiup8oJ_TRy8YLwLv2C + + accidentalSharp + v79ku0BEBEE_M6tImzFpKNO + + 46 + 24 + 26 + + + + YohnUrozpQM_nYuaL0x3yaD + quarter + + rJ1FwWcyASE_845n20NCs7O + 48 + 14 + 16 + + + + + + + + 2FzRFqpeUQE_DzJLvZhzEBM + quarter + + Lo9oOrU0M/G_AQ/78NAvTlH + 50 + 16 + 18 + + + + iSXWiQWv80C_e+YFvaek4WC + quarter + + lJ/q4eBemAP_gEzq0yrbI4I + + accidentalSharp + xxP8Ugcwf4C_DsV4AHnhurM + + 51 + 23 + 25 + + + + PF/iJxWfnkF_A1J7X+QRbHN + quarter + + nPnRQgbvMwO_Z8HV/pv+XPG + 53 + 13 + 15 + + + + Xj6X+ChnAeG_XJVZfGGFdJD + quarter + + HRKU8sllxGB_aIrdwE8ckcB + 55 + 15 + 17 + + + + + + + + N9tQRK0/ESE_wz1pz7uU6aF + quarter + + v6ssHswMgYC_v1ajWKS3HeP + 57 + 17 + 19 + + + + VcgN1PNXP3K_nBf/1OX3idI + quarter + + PQ33GbAQ8TD_8UZAzBhS86K + + accidentalSharp + kvbSAg7OK5F_wQl7/VBjEDE + + 58 + 24 + 26 + + + + eMs8tl9wKuB_L/JcOl+CXWK + quarter + + Dp6V5o/Q3dB_mzzY0uIojnF + 60 + 14 + 16 + + + + RIXZ/T1cX6P_AJzAnaF4MLH + quarter + + BCWOugfJH3H_+pT/Q9ZGMZO + 62 + 16 + 18 + + + + + + + + xcQZDlmfqXP_GeVfLJGxDgL + quarter + + UnxCZIGV3n_VbwVTBKFHhK + + accidentalSharp + hq/k5PNpWQF_DqRzBp576YM + + 46 + 24 + 26 + + + + loWW+RAwVWM_ycKZUiefukL + quarter + + JWAjn+vWQ7O_XfPriNJvdzJ + 48 + 14 + 16 + + + + C/x74TF3KZL_cwMsBExynDO + quarter + + d3c8gURgisO_ylO2sT/pEJL + 50 + 16 + 18 + + + + 3oxEIs5KfRH_/JMY+t+de1K + quarter + + y80UPOFwKmP_AbQ6Lc4h71I + + accidentalSharp + CqAs8cdQZjI_vuTeyK45phG + + 51 + 23 + 25 + + + + + + + + g3/fvzIxNlE_Wdc9eDalyEM + quarter + + sjX6rLVFQdK_VuCPHOwEoV + 43 + 15 + 17 + + + + 23PRFIkQcXO_Ye8XTxQoN3F + quarter + + V5yC6f8M3FB_A2Sz/ZtkpDK + 45 + 17 + 19 + + + + 7ZGgVI/1SrB_f8J3yOMf2JN + quarter + + tV0kIY7Qf4O_TgNyGgr1vYB + + accidentalSharp + WSs8aHz9IrL_bWa3+oy6OKK + + 46 + 24 + 26 + + + + ZX+okWHFp+K_UCpii6QpGOJ + quarter + + aUhjNVn2DQB_CVH0d3UeIzC + 48 + 14 + 16 + + + + + +
+
diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test6_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test6_ref.lrc new file mode 100644 index 0000000000000..bb2b998562b93 --- /dev/null +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test6_ref.lrc @@ -0,0 +1,2 @@ +[ti:MuseScore 24814 lrc Test File] +[ar:No composer] diff --git a/src/importexport/lyricsexport/tests/environment.cpp b/src/importexport/lyricsexport/tests/environment.cpp new file mode 100644 index 0000000000000..c1241d4f53852 --- /dev/null +++ b/src/importexport/lyricsexport/tests/environment.cpp @@ -0,0 +1,53 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "testing/environment.h" + +#include "draw/drawmodule.h" +#include "engraving/engravingmodule.h" +#include "engraving/tests/utils/scorerw.h" + +#include "importexport/lyricsexport/lyricsexportmodule.h" + +#include "engraving/dom/instrtemplate.h" +#include "engraving/dom/mscore.h" + +#include "log.h" + +static muse::testing::SuiteEnvironment importexport_se( +{ + new muse::draw::DrawModule(), + new mu::engraving::EngravingModule(), + new mu::iex::lrcexport::LyricsExportModule() +}, + nullptr, + []() { + LOGI() << "lyrics export tests suite post init"; + + mu::engraving::ScoreRW::setRootPath(muse::String::fromUtf8(iex_lyricsexport_tests_DATA_ROOT)); + + mu::engraving::MScore::testMode = true; + mu::engraving::MScore::noGui = true; + + mu::engraving::loadInstrumentTemplates(":/engraving/instruments/instruments.xml"); +} + ); diff --git a/src/importexport/lyricsexport/tests/lrc_tests.cpp b/src/importexport/lyricsexport/tests/lrc_tests.cpp new file mode 100644 index 0000000000000..68c144ee74998 --- /dev/null +++ b/src/importexport/lyricsexport/tests/lrc_tests.cpp @@ -0,0 +1,127 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +#include "io/file.h" + +#include "engraving/tests/utils/scorerw.h" +#include "engraving/tests/utils/scorecomp.h" + +#include "modularity/ioc.h" +#include "importexport/lyricsexport/ilyricsexportconfiguration.h" +#include "importexport/lyricsexport/internal/iex_lyricsexport.h" + +using namespace mu::engraving; + +static const String LRC_DIR(u"data/"); + +//////////////////////////////////////////////////////////////// +// Set to true to re-generate the MuseScore reference test files +#define BUILD_MSCORE_REF_FILE false +//////////////////////////////////////////////////////////////// + +namespace mu::iex::lrcexport { +class Lrc_Tests : public ::testing::Test +{ +public: + void lrcTest(const char* file, bool enhancedLrc); + + inline static bool s_generateReferenceFile = BUILD_MSCORE_REF_FILE; +}; + +void Lrc_Tests::lrcTest(const char* file, bool enhancedLrc) +{ + String fileName = String::fromUtf8(file); + + auto exportFunc = [](Score* score, const muse::io::path_t& path, bool enhancedLrc) -> bool { + LRCWriter lrcWriter; + return lrcWriter.writeScore(score, path, enhancedLrc); + }; + + // Load the file + MasterScore* score = ScoreRW::readScore(LRC_DIR + fileName + u".mscx"); + EXPECT_TRUE(score); + + // Flag to be turned on to generate the test reference lrc files + if (s_generateReferenceFile) { + bool res = exportFunc(score, ScoreRW::rootPath() + u"/" + LRC_DIR + fileName + u"_ref.lrc", enhancedLrc); + EXPECT_TRUE(res); + return; + } + + // Generate lrc export file + EXPECT_TRUE(exportFunc(score, fileName + u".test.lrc", enhancedLrc)); + delete score; + + // Compare the lrc files + EXPECT_TRUE(ScoreComp::compareFiles(fileName + u".test.lrc", ScoreRW::rootPath() + u"/" + LRC_DIR + fileName + u"_ref.lrc")); +} + +TEST_F(Lrc_Tests, lrc_simple_test1) { + lrcTest("lrc_simple_test1", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test1) { + lrcTest("lrc_enhanced_test1", true); +} + +TEST_F(Lrc_Tests, lrc_simple_test2) { + lrcTest("lrc_simple_test2", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test2) { + lrcTest("lrc_enhanced_test2", true); +} + +TEST_F(Lrc_Tests, lrc_simple_test3) { + lrcTest("lrc_simple_test3", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test3) { + lrcTest("lrc_enhanced_test3", true); +} + +TEST_F(Lrc_Tests, lrc_simple_test4) { + lrcTest("lrc_simple_test4", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test4) { + lrcTest("lrc_enhanced_test4", true); +} + +TEST_F(Lrc_Tests, lrc_simple_test5) { + lrcTest("lrc_simple_test5", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test5) { + lrcTest("lrc_enhanced_test5", true); +} + +TEST_F(Lrc_Tests, lrc_simple_test6) { + lrcTest("lrc_simple_test6", false); +} + +TEST_F(Lrc_Tests, lrc_enhanced_test6) { + lrcTest("lrc_enhanced_test6", true); +} +} From c0f799064d4adb42f2225629700318b836d1e015 Mon Sep 17 00:00:00 2001 From: Casper Jeukendrup <48658420+cbjeukendrup@users.noreply.github.com> Date: Sun, 30 Nov 2025 17:05:05 +0100 Subject: [PATCH 4/8] Code review / cleanup --- ninja_build.sh | 3 - src/importexport/lyricsexport/CMakeLists.txt | 28 ++-- .../lyricsexport/ilyricsexportconfiguration.h | 4 +- .../{iex_lyricsexport.cpp => lrcwriter.cpp} | 158 +++++++----------- .../{iex_lyricsexport.h => lrcwriter.h} | 25 ++- .../internal/lyricsexportconfiguration.cpp | 21 +-- .../internal/lyricsexportconfiguration.h | 9 +- .../lyricsexport/lyricsexportmodule.cpp | 9 +- .../lyricsexport/lyricsexportmodule.h | 5 +- .../lyricsexport/tests/CMakeLists.txt | 5 +- .../lyricsexport/tests/environment.cpp | 4 +- .../lyricsexport/tests/lrc_tests.cpp | 20 +-- src/project/view/exportdialogmodel.cpp | 4 - 13 files changed, 115 insertions(+), 180 deletions(-) rename src/importexport/lyricsexport/internal/{iex_lyricsexport.cpp => lrcwriter.cpp} (57%) rename src/importexport/lyricsexport/internal/{iex_lyricsexport.h => lrcwriter.h} (68%) diff --git a/ninja_build.sh b/ninja_build.sh index 92aaf499a6f6d..d5902efd86757 100755 --- a/ninja_build.sh +++ b/ninja_build.sh @@ -47,7 +47,6 @@ MUSESCORE_NO_RPATH=${MUSESCORE_NO_RPATH:-"OFF"} MUSESCORE_MODULE_UPDATE=${MUSESCORE_MODULE_UPDATEE:-"ON"} MUSESCORE_BUILD_VST_MODULE=${MUSESCORE_BUILD_VST_MODULE:-"OFF"} MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE=${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE:-"OFF"} -MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE==${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE:-"OFF"} MUSESCORE_BUILD_WEBSOCKET=${MUSESCORE_BUILD_WEBSOCKET:-"OFF"} MUSESCORE_BUILD_PIPEWIRE_AUDIO_DRIVER=${MUSESCORE_BUILD_PIPEWIRE_AUDIO_DRIVER:-"OFF"} MUSESCORE_COMPILE_USE_UNITY=${MUSESCORE_COMPILE_USE_UNITY:-"ON"} @@ -94,7 +93,6 @@ function do_build() { -DMUSESCORE_REVISION="${MUSESCORE_REVISION}" \ -DMUE_RUN_LRELEASE="${MUSESCORE_RUN_LRELEASE}" \ -DMUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE="${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE}" \ - -DMUE_BUILD_IMPEXP_LYRICS_MODULE="${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE}" \ -DMUSE_MODULE_UPDATE="${MUSESCORE_MODULE_UPDATE}" \ -DMUE_DOWNLOAD_SOUNDFONT="${MUSESCORE_DOWNLOAD_SOUNDFONT}" \ -DMUSE_ENABLE_UNIT_TESTS="${MUSESCORE_BUILD_UNIT_TESTS}" \ @@ -173,7 +171,6 @@ case $TARGET in -DMUSESCORE_REVISION="${MUSESCORE_REVISION}" \ -DMUE_RUN_LRELEASE="${MUSESCORE_RUN_LRELEASE}" \ -DMUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE="${MUSESCORE_BUILD_IMPEXP_VIDEOEXPORT_MODULE}" \ - -DMUE_BUILD_IMPEXP_LYRICS_MODULE="${MUSESCORE_BUILD_IMPEXP_LYRICS_MODULE}" \ -DMUSE_MODULE_UPDATE="${MUSESCORE_MODULE_UPDATE}" \ -DMUE_DOWNLOAD_SOUNDFONT="${MUSESCORE_DOWNLOAD_SOUNDFONT}" \ -DMUSE_ENABLE_UNIT_TESTS="${MUSESCORE_BUILD_UNIT_TESTS}" \ diff --git a/src/importexport/lyricsexport/CMakeLists.txt b/src/importexport/lyricsexport/CMakeLists.txt index 3d00463434151..5c44a9b154a0c 100644 --- a/src/importexport/lyricsexport/CMakeLists.txt +++ b/src/importexport/lyricsexport/CMakeLists.txt @@ -18,28 +18,20 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -declare_module(iex_lyricsexport) +muse_create_module(iex_lyricsexport) -set(MODULE_SRC - ${CMAKE_CURRENT_LIST_DIR}/lyricsexportmodule.cpp - ${CMAKE_CURRENT_LIST_DIR}/lyricsexportmodule.h - ${CMAKE_CURRENT_LIST_DIR}/ilyricsexportconfiguration.h +target_sources(iex_lyricsexport PRIVATE + lyricsexportmodule.cpp + lyricsexportmodule.h + ilyricsexportconfiguration.h - ${CMAKE_CURRENT_LIST_DIR}/internal/lyricsexportconfiguration.cpp - ${CMAKE_CURRENT_LIST_DIR}/internal/lyricsexportconfiguration.h - ${CMAKE_CURRENT_LIST_DIR}/internal/iex_lyricsexport.cpp - ${CMAKE_CURRENT_LIST_DIR}/internal/iex_lyricsexport.h - ) - -set(MODULE_LINK - engraving + internal/lyricsexportconfiguration.cpp + internal/lyricsexportconfiguration.h + internal/lrcwriter.cpp + internal/lrcwriter.h ) -if (QT_SUPPORT) - list(APPEND MODULE_LINK Qt::Core5Compat) -endif() - -setup_module() +target_link_libraries(iex_lyricsexport PRIVATE engraving) if (MUE_BUILD_IMPORTEXPORT_TESTS) add_subdirectory(tests) diff --git a/src/importexport/lyricsexport/ilyricsexportconfiguration.h b/src/importexport/lyricsexport/ilyricsexportconfiguration.h index 0a8e269024441..9e5a1cf8f7145 100644 --- a/src/importexport/lyricsexport/ilyricsexportconfiguration.h +++ b/src/importexport/lyricsexport/ilyricsexportconfiguration.h @@ -19,10 +19,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once -#include -#include +#include "async/channel.h" #include "modularity/imoduleinterface.h" diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp b/src/importexport/lyricsexport/internal/lrcwriter.cpp similarity index 57% rename from src/importexport/lyricsexport/internal/iex_lyricsexport.cpp rename to src/importexport/lyricsexport/internal/lrcwriter.cpp index e39a93726b2cb..5a8c28afb31b0 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.cpp +++ b/src/importexport/lyricsexport/internal/lrcwriter.cpp @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,61 +17,43 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ -#include "io/file.h" +#include "lrcwriter.h" #include +#include "io/file.h" +#include "types/ret.h" + +#include "engraving/dom/lyrics.h" #include "engraving/dom/masterscore.h" #include "engraving/dom/repeatlist.h" -#include "engraving/dom/lyrics.h" -#include "iex_lyricsexport.h" +using namespace Qt::Literals; -using namespace mu::engraving; +using namespace muse; using namespace muse::io; +using namespace mu::engraving; +using namespace mu::project; +using namespace mu::iex::lrcexport; -namespace mu::iex::lrcexport { -// Interface implementation -std::vector LRCWriter::supportedUnitTypes() const +std::vector LRCWriter::supportedUnitTypes() const { return { UnitType::PER_PART }; } -// -// LRCWriter::supportsUnitType -// - bool LRCWriter::supportsUnitType(UnitType ut) const { return ut == UnitType::PER_PART; } -// -// LRCWriter::write -// - muse::Ret LRCWriter::write(notation::INotationPtr notation, muse::io::IODevice& device, const Options&) { Score* score = notation->elements()->msScore(); bool enhancedLrc = configuration()->lrcUseEnhancedFormat(); - return write(score, &device, enhancedLrc); + return doWrite(score, &device, enhancedLrc); } -// -// LRCWriter::exportLrc -// - -bool LRCWriter::exportLrc(mu::engraving::Score* score, muse::io::IODevice* device, bool enhancedLrc) -{ - write(score, device, enhancedLrc); - return true; -} - -// -// LRCWriter::writeScore -// - bool LRCWriter::writeScore(mu::engraving::Score* score, const muse::io::path_t& path, bool enhancedLrc) { File f(path); @@ -79,39 +61,31 @@ bool LRCWriter::writeScore(mu::engraving::Score* score, const muse::io::path_t& return false; } - bool res = exportLrc(score, &f, enhancedLrc) && !f.hasError(); + bool res = doWrite(score, &f, enhancedLrc) && !f.hasError(); f.close(); return res; } -// -// LRCWriter::writeList -// - muse::Ret LRCWriter::writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) { - return muse::Ret(muse::Ret::Code::NotSupported); + return make_ret(Ret::Code::NotSupported); } -// -// LRCWriter::writeMetadata -// - void LRCWriter::writeMetadata(muse::io::IODevice* device, const engraving::Score* score) const { QString metadata; // Title - QString title = QString::fromStdString(score->metaTag(muse::String("workTitle")).toStdString()); + const QString title = score->metaTag(u"workTitle").toQString(); if (!title.isEmpty()) { - metadata += QString("[ti:%1]\n").arg(title); + metadata += u"[ti:%1]\n"_s.arg(title); } // Composer/Artist - QString artist = QString::fromStdString(score->metaTag(muse::String("composer")).toStdString()); + const QString artist = score->metaTag(u"composer").toQString(); if (!artist.isEmpty()) { - metadata += QString("[ar:%1]\n").arg(artist); + metadata += u"[ar:%1]\n"_s.arg(artist); } if (!metadata.isEmpty()) { @@ -119,40 +93,32 @@ void LRCWriter::writeMetadata(muse::io::IODevice* device, const engraving::Score } } -// -// LRCWriter::write -// - -muse::Ret LRCWriter::write(mu::engraving::Score* score, muse::io::IODevice* device, bool enhancedLrc) +muse::Ret LRCWriter::doWrite(mu::engraving::Score* score, muse::io::IODevice* device, bool enhancedLrc) { writeMetadata(device, score); const auto lyrics = collectLyrics(score); // Write lyrics - for (auto it = lyrics.constBegin(); it != lyrics.constEnd(); ++it) { + for (const auto& [timestamp, text] : lyrics) { if (enhancedLrc) { // As there should only be words we replace spaces by "-" - QString lyricsText = it.value(); + QString lyricsText = text; lyricsText.replace(QRegularExpression("\\s"), "-"); - lyricsText.replace(QChar(0x00A0), QChar('-')); + lyricsText.replace(u'\u00A0', u'-'); - device->write(QString("[%1] <%1> %2\n").arg(formatTimestamp(it.key()), lyricsText).toUtf8()); + device->write(QString("[%1] <%1> %2\n").arg(formatTimestamp(timestamp), lyricsText).toUtf8()); } else { - device->write(QString("[%1]%2\n").arg(formatTimestamp(it.key()), it.value()).toUtf8()); + device->write(QString("[%1]%2\n").arg(formatTimestamp(timestamp), text).toUtf8()); } } - return muse::Ret(muse::Ret::Code::Ok); + return make_ok(); } -// -// LRCWriter::collectLyrics -// - -QMap LRCWriter::collectLyrics(const mu::engraving::Score* score) +std::map LRCWriter::collectLyrics(const mu::engraving::Score* score) { - QMap lyrics; + std::map lyrics; const RepeatList& repeats = score->repeatList(); staff_idx_t lyricsStaff; @@ -169,25 +135,25 @@ QMap LRCWriter::collectLyrics(const mu::engraving::Score* score) continue; } - for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { + for (const Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { if (!seg->isChordRestType()) { continue; } - for (EngravingItem* e : seg->elist()) { + for (const EngravingItem* e : seg->elist()) { if (!e || !e->isChordRest()) { continue; } - for (Lyrics* l : toChordRest(e)->lyrics()) { + for (const Lyrics* l : toChordRest(e)->lyrics()) { // if (l->text().empty()) if (l->plainText().isEmpty()) { continue; } if ((lyricsStaff == e->staffIdx()) && (lyricsVoice == e->voice()) && (lyricNumber == l->subtype())) { - const qreal time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; - lyrics.insert(time, l->plainText()); + const double time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; + lyrics.insert_or_assign(time, l->plainText()); } } } @@ -197,23 +163,15 @@ QMap LRCWriter::collectLyrics(const mu::engraving::Score* score) return lyrics; } -// -// LRCWriter::formatTimestamp -// - -QString LRCWriter::formatTimestamp(qreal ms) const +QString LRCWriter::formatTimestamp(double ms) const { const int totalSec = static_cast(ms / 1000); - return QString("%1:%2.%3") + return u"%1:%2.%3"_s .arg(totalSec / 60, 2, 10, QLatin1Char('0')) .arg(totalSec % 60, 2, 10, QLatin1Char('0')) .arg(static_cast(ms) % 1000 / 10, 2, 10, QLatin1Char('0')); } -// -// LRCWriter::findStaffVoiceAndLyricToExport -// - void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score, mu::engraving::staff_idx_t& staff, mu::engraving::voice_idx_t& voice, int& lyricNumber) { @@ -225,46 +183,45 @@ void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score const RepeatList& repeats = score->repeatList(); for (const RepeatSegment* rs : repeats) { - const int tickOffset = rs->utick - rs->tick; - for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { if (!mb->isMeasure()) { continue; } - for (Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { + for (const Segment* seg = toMeasure(mb)->first(); seg; seg = seg->next()) { if (!seg->isChordRestType()) { continue; } - for (EngravingItem* e : seg->elist()) { + for (const EngravingItem* e : seg->elist()) { if (!e || !e->isChordRest()) { continue; } - for (Lyrics* l : toChordRest(e)->lyrics()) { + for (const Lyrics* l : toChordRest(e)->lyrics()) { // if (l->text().empty()) if (l->plainText().isEmpty()) { continue; - } else { - if (!lyricsFound) { - lyricsFound = true; - staff = e->staffIdx(); + } + + if (!lyricsFound) { + lyricsFound = true; + staff = e->staffIdx(); + voice = e->voice(); + lyricNumber = l->subtype(); + continue; + } + + if (staff > e->staffIdx()) { + staff = e->staffIdx(); + voice = e->voice(); + lyricNumber = l->subtype(); + } else if (staff == e->staffIdx()) { + if (voice > e->voice()) { voice = e->voice(); lyricNumber = l->subtype(); - } else { - if (staff > e->staffIdx()) { - staff = e->staffIdx(); - voice = e->voice(); - lyricNumber = l->subtype(); - } else if (staff == e->staffIdx()) { - if (voice > e->voice()) { - voice = e->voice(); - lyricNumber = l->subtype(); - } else if (voice == e->voice()) { - lyricNumber = min(lyricNumber, l->subtype()); - } - } + } else if (voice == e->voice()) { + lyricNumber = std::min(lyricNumber, l->subtype()); } } } @@ -273,4 +230,3 @@ void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score } } } -} // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/iex_lyricsexport.h b/src/importexport/lyricsexport/internal/lrcwriter.h similarity index 68% rename from src/importexport/lyricsexport/internal/iex_lyricsexport.h rename to src/importexport/lyricsexport/internal/lrcwriter.h index d33b45d01c955..599bfa37837b2 100644 --- a/src/importexport/lyricsexport/internal/iex_lyricsexport.h +++ b/src/importexport/lyricsexport/internal/lrcwriter.h @@ -1,11 +1,11 @@ /* * SPDX-License-Identifier: GPL-3.0-only - * MuseScore-CLA-applies + * MuseScore-Studio-CLA-applies * - * MuseScore + * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited and others + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,17 +17,14 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ #pragma once -#include - #include "project/inotationwriter.h" -#include "engraving/engravingerrors.h" -#include "importexport/lyricsexport/ilyricsexportconfiguration.h" +#include "../ilyricsexportconfiguration.h" namespace mu::engraving { class Score; @@ -46,14 +43,16 @@ class LRCWriter : public project::INotationWriter muse::Ret write(notation::INotationPtr, muse::io::IODevice&, const Options&) override; void writeMetadata(muse::io::IODevice* device, const engraving::Score* score) const; muse::Ret writeList(const notation::INotationPtrList&, muse::io::IODevice&, const Options&) override; + bool writeScore(mu::engraving::Score* score, const muse::io::path_t& path, bool enhancedLrc); private: - muse::Ret write(mu::engraving::Score* score, muse::io::IODevice*, bool); + muse::Ret doWrite(mu::engraving::Score* score, muse::io::IODevice*, bool); + // Core lyric functionality - QMap collectLyrics(const mu::engraving::Score*); - QString formatTimestamp(qreal ms) const; - bool exportLrc(mu::engraving::Score*, muse::io::IODevice*, bool); - void findStaffVoiceAndLyricToExport(const mu::engraving::Score*, mu::engraving::staff_idx_t&, mu::engraving::voice_idx_t&, int&); + std::map collectLyrics(const mu::engraving::Score*); + QString formatTimestamp(double ms) const; + void findStaffVoiceAndLyricToExport(const engraving::Score* score, engraving::staff_idx_t& staff, engraving::voice_idx_t& voice, + int& lyricNumber); }; } // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp index 7556bd1c5aca7..2426bedca0891 100644 --- a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.cpp @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,16 +17,14 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ + #include "lyricsexportconfiguration.h" #include "settings.h" -#include "engraving/dom/mscore.h" - using namespace muse; -using namespace mu; using namespace mu::iex::lrcexport; static const std::string module_name("iex_lyricsexport"); @@ -36,11 +34,9 @@ static const Settings::Key LRC_USE_ENHANCED_FORMAT_KEY(module_name, "export/lrc/ void LyricsExportConfiguration::init() { settings()->setDefaultValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(true)); -} - -async::Channel LyricsExportConfiguration::lrcUseEnhancedFormatChanged() const -{ - return m_lrcUseEnhancedFormatChanged; + settings()->valueChanged(LRC_USE_ENHANCED_FORMAT_KEY).onReceive(this, [this](const Val& val) { + m_lrcUseEnhancedFormatChanged.send(val.toBool()); + }); } bool LyricsExportConfiguration::lrcUseEnhancedFormat() const @@ -52,3 +48,8 @@ void LyricsExportConfiguration::setLrcUseEnhancedFormat(bool value) { settings()->setSharedValue(LRC_USE_ENHANCED_FORMAT_KEY, Val(value)); } + +async::Channel LyricsExportConfiguration::lrcUseEnhancedFormatChanged() const +{ + return m_lrcUseEnhancedFormatChanged; +} diff --git a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h index b8dbfae2e1742..f9d3d0a7fa96f 100644 --- a/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h +++ b/src/importexport/lyricsexport/internal/lyricsexportconfiguration.h @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,14 +17,17 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ + #pragma once #include "../ilyricsexportconfiguration.h" +#include "async/asyncable.h" + namespace mu::iex::lrcexport { -class LyricsExportConfiguration : public ILyricsExportConfiguration +class LyricsExportConfiguration : public ILyricsExportConfiguration, public muse::async::Asyncable { public: void init(); diff --git a/src/importexport/lyricsexport/lyricsexportmodule.cpp b/src/importexport/lyricsexport/lyricsexportmodule.cpp index 97d1d9e9c92db..cbaa3b8184ebb 100644 --- a/src/importexport/lyricsexport/lyricsexportmodule.cpp +++ b/src/importexport/lyricsexport/lyricsexportmodule.cpp @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,19 +17,18 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ + #include "lyricsexportmodule.h" #include "modularity/ioc.h" #include "project/inotationwritersregister.h" -#include "internal/iex_lyricsexport.h" +#include "internal/lrcwriter.h" #include "internal/lyricsexportconfiguration.h" -#include "log.h" - using namespace muse; using namespace mu::iex::lrcexport; using namespace mu::project; diff --git a/src/importexport/lyricsexport/lyricsexportmodule.h b/src/importexport/lyricsexport/lyricsexportmodule.h index d1161e766a554..583e0ac5f2afe 100644 --- a/src/importexport/lyricsexport/lyricsexportmodule.h +++ b/src/importexport/lyricsexport/lyricsexportmodule.h @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,8 +17,9 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ + #pragma once #include diff --git a/src/importexport/lyricsexport/tests/CMakeLists.txt b/src/importexport/lyricsexport/tests/CMakeLists.txt index bf29d8dab740a..e7537850e6797 100644 --- a/src/importexport/lyricsexport/tests/CMakeLists.txt +++ b/src/importexport/lyricsexport/tests/CMakeLists.txt @@ -4,7 +4,7 @@ # MuseScore Studio # Music Composition & Notation # -# Copyright (C) 2021 MuseScore Limited +# Copyright (C) 2025 MuseScore Limited # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3 as @@ -16,7 +16,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . set(MODULE_TEST iex_lyricsexport_tests) @@ -38,4 +38,3 @@ set(MODULE_TEST_LINK set(MODULE_TEST_DATA_ROOT ${CMAKE_CURRENT_LIST_DIR}) include(SetupGTest) - diff --git a/src/importexport/lyricsexport/tests/environment.cpp b/src/importexport/lyricsexport/tests/environment.cpp index c1241d4f53852..b92c326788a87 100644 --- a/src/importexport/lyricsexport/tests/environment.cpp +++ b/src/importexport/lyricsexport/tests/environment.cpp @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,7 +17,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ #include "testing/environment.h" diff --git a/src/importexport/lyricsexport/tests/lrc_tests.cpp b/src/importexport/lyricsexport/tests/lrc_tests.cpp index 68c144ee74998..0421d4e6ac34c 100644 --- a/src/importexport/lyricsexport/tests/lrc_tests.cpp +++ b/src/importexport/lyricsexport/tests/lrc_tests.cpp @@ -5,7 +5,7 @@ * MuseScore Studio * Music Composition & Notation * - * Copyright (C) 2021 MuseScore Limited + * Copyright (C) 2025 MuseScore Limited * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as @@ -17,36 +17,28 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ #include -#include "io/file.h" - #include "engraving/tests/utils/scorerw.h" #include "engraving/tests/utils/scorecomp.h" -#include "modularity/ioc.h" -#include "importexport/lyricsexport/ilyricsexportconfiguration.h" -#include "importexport/lyricsexport/internal/iex_lyricsexport.h" +#include "importexport/lyricsexport/internal/lrcwriter.h" using namespace mu::engraving; static const String LRC_DIR(u"data/"); -//////////////////////////////////////////////////////////////// -// Set to true to re-generate the MuseScore reference test files -#define BUILD_MSCORE_REF_FILE false -//////////////////////////////////////////////////////////////// - namespace mu::iex::lrcexport { class Lrc_Tests : public ::testing::Test { public: void lrcTest(const char* file, bool enhancedLrc); - inline static bool s_generateReferenceFile = BUILD_MSCORE_REF_FILE; + /// Set to true to re-generate the MuseScore reference test files + static constexpr bool s_generateReferenceFile = false; }; void Lrc_Tests::lrcTest(const char* file, bool enhancedLrc) @@ -63,7 +55,7 @@ void Lrc_Tests::lrcTest(const char* file, bool enhancedLrc) EXPECT_TRUE(score); // Flag to be turned on to generate the test reference lrc files - if (s_generateReferenceFile) { + if constexpr (s_generateReferenceFile) { bool res = exportFunc(score, ScoreRW::rootPath() + u"/" + LRC_DIR + fileName + u"_ref.lrc", enhancedLrc); EXPECT_TRUE(res); return; diff --git a/src/project/view/exportdialogmodel.cpp b/src/project/view/exportdialogmodel.cpp index 506720ca7a443..21cd661bb4e6c 100644 --- a/src/project/view/exportdialogmodel.cpp +++ b/src/project/view/exportdialogmodel.cpp @@ -274,10 +274,6 @@ void ExportDialogModel::setExportType(const ExportType& type) std::vector unitTypes = exportProjectScenario()->supportedUnitTypes(type); - if (type.id == "lrc") { - unitTypes = { UnitType::MULTI_PART }; // only supports single file export - } - IF_ASSERT_FAILED(!unitTypes.empty()) { return; } From 31fa1313ae2d27e9a724b5ebc2350055979a32c3 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Sun, 30 Nov 2025 18:08:38 +0100 Subject: [PATCH 5/8] Minor optimizations --- src/importexport/lyricsexport/internal/lrcwriter.cpp | 4 ++++ src/importexport/lyricsexport/lyricsexportmodule.cpp | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/importexport/lyricsexport/internal/lrcwriter.cpp b/src/importexport/lyricsexport/internal/lrcwriter.cpp index 5a8c28afb31b0..cb5cab5ee6996 100644 --- a/src/importexport/lyricsexport/internal/lrcwriter.cpp +++ b/src/importexport/lyricsexport/internal/lrcwriter.cpp @@ -225,6 +225,10 @@ void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score } } } + // If we have already chosen the lowest/prioritized option we can return (no better option available) + if (lyricsFound && (staff == 0) && (voice == 0) && (lyricNumber == 0)) { + return; + } } } } diff --git a/src/importexport/lyricsexport/lyricsexportmodule.cpp b/src/importexport/lyricsexport/lyricsexportmodule.cpp index cbaa3b8184ebb..1274c0547a28e 100644 --- a/src/importexport/lyricsexport/lyricsexportmodule.cpp +++ b/src/importexport/lyricsexport/lyricsexportmodule.cpp @@ -54,9 +54,5 @@ void LyricsExportModule::resolveImports() void LyricsExportModule::onInit(const IApplication::RunMode& mode) { - if (mode == IApplication::RunMode::AudioPluginRegistration) { - return; - } - m_configuration->init(); } From d5960ee2b8e2115e34383e7ee638ff84d09723d2 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Sun, 30 Nov 2025 18:35:32 +0100 Subject: [PATCH 6/8] Update src/importexport/lyricsexport/lyricsexportmodule.cpp Co-authored-by: Casper Jeukendrup <48658420+cbjeukendrup@users.noreply.github.com> --- src/importexport/lyricsexport/lyricsexportmodule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/importexport/lyricsexport/lyricsexportmodule.cpp b/src/importexport/lyricsexport/lyricsexportmodule.cpp index 1274c0547a28e..9d44601ac6a71 100644 --- a/src/importexport/lyricsexport/lyricsexportmodule.cpp +++ b/src/importexport/lyricsexport/lyricsexportmodule.cpp @@ -52,7 +52,7 @@ void LyricsExportModule::resolveImports() } } -void LyricsExportModule::onInit(const IApplication::RunMode& mode) +void LyricsExportModule::onInit(const IApplication::RunMode&) { m_configuration->init(); } From e6ef930686604575ef1f896c28aafdb60d817d28 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Sun, 30 Nov 2025 18:35:40 +0100 Subject: [PATCH 7/8] Update src/importexport/lyricsexport/internal/lrcwriter.cpp Co-authored-by: Casper Jeukendrup <48658420+cbjeukendrup@users.noreply.github.com> --- src/importexport/lyricsexport/internal/lrcwriter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/importexport/lyricsexport/internal/lrcwriter.cpp b/src/importexport/lyricsexport/internal/lrcwriter.cpp index cb5cab5ee6996..bd59790c50645 100644 --- a/src/importexport/lyricsexport/internal/lrcwriter.cpp +++ b/src/importexport/lyricsexport/internal/lrcwriter.cpp @@ -130,7 +130,7 @@ std::map LRCWriter::collectLyrics(const mu::engraving::Score* s for (const RepeatSegment* rs : repeats) { const int tickOffset = rs->utick - rs->tick; - for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + for (const MeasureBase* mb : rs->measureList()) { if (!mb->isMeasure()) { continue; } From e22bc62404a35efc9de5a8e597911c775c115259 Mon Sep 17 00:00:00 2001 From: Pedro Acebes Date: Sun, 30 Nov 2025 20:50:57 +0100 Subject: [PATCH 8/8] Additional optimizations and updated tests results to comparte with --- .../lyricsexport/internal/lrcwriter.cpp | 35 +++++++------------ .../lyricsexport/internal/lrcwriter.h | 3 +- .../tests/data/lrc_enhanced_test1_ref.lrc | 12 ------- .../tests/data/lrc_enhanced_test3_ref.lrc | 28 --------------- .../tests/data/lrc_enhanced_test4_ref.lrc | 15 -------- .../tests/data/lrc_enhanced_test5_ref.lrc | 12 ------- .../tests/data/lrc_simple_test1_ref.lrc | 12 ------- .../tests/data/lrc_simple_test3_ref.lrc | 28 --------------- .../tests/data/lrc_simple_test4_ref.lrc | 15 -------- .../tests/data/lrc_simple_test5_ref.lrc | 12 ------- 10 files changed, 14 insertions(+), 158 deletions(-) diff --git a/src/importexport/lyricsexport/internal/lrcwriter.cpp b/src/importexport/lyricsexport/internal/lrcwriter.cpp index bd59790c50645..7ab3ba86f2cc8 100644 --- a/src/importexport/lyricsexport/internal/lrcwriter.cpp +++ b/src/importexport/lyricsexport/internal/lrcwriter.cpp @@ -121,11 +121,10 @@ std::map LRCWriter::collectLyrics(const mu::engraving::Score* s std::map lyrics; const RepeatList& repeats = score->repeatList(); - staff_idx_t lyricsStaff; - voice_idx_t lyricsVoice; + track_idx_t trackNumber; int lyricNumber; - findStaffVoiceAndLyricToExport(score, lyricsStaff, lyricsVoice, lyricNumber); + findTrackAndLyricToExport(score, trackNumber, lyricNumber); for (const RepeatSegment* rs : repeats) { const int tickOffset = rs->utick - rs->tick; @@ -151,7 +150,7 @@ std::map LRCWriter::collectLyrics(const mu::engraving::Score* s continue; } - if ((lyricsStaff == e->staffIdx()) && (lyricsVoice == e->voice()) && (lyricNumber == l->subtype())) { + if ((trackNumber == e->track()) && (lyricNumber == l->subtype())) { const double time = score->utick2utime(l->tick().ticks() + tickOffset) * 1000; lyrics.insert_or_assign(time, l->plainText()); } @@ -172,18 +171,16 @@ QString LRCWriter::formatTimestamp(double ms) const .arg(static_cast(ms) % 1000 / 10, 2, 10, QLatin1Char('0')); } -void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score, mu::engraving::staff_idx_t& staff, - mu::engraving::voice_idx_t& voice, int& lyricNumber) +void LRCWriter::findTrackAndLyricToExport(const engraving::Score* score, mu::engraving::track_idx_t& trackNumber, int& lyricNumber) { bool lyricsFound = false; - staff = 0; - voice = 0; + trackNumber = 0; lyricNumber = 0; const RepeatList& repeats = score->repeatList(); for (const RepeatSegment* rs : repeats) { - for (const MeasureBase* mb = rs->firstMeasure(); mb; mb = mb->next()) { + for (const MeasureBase* mb : rs->measureList()) { if (!mb->isMeasure()) { continue; } @@ -206,27 +203,21 @@ void LRCWriter::findStaffVoiceAndLyricToExport(const mu::engraving::Score* score if (!lyricsFound) { lyricsFound = true; - staff = e->staffIdx(); - voice = e->voice(); + trackNumber = e->track(); lyricNumber = l->subtype(); continue; } - if (staff > e->staffIdx()) { - staff = e->staffIdx(); - voice = e->voice(); + // We check if we have a better option + if (trackNumber > e->track()) { + trackNumber = e->track(); lyricNumber = l->subtype(); - } else if (staff == e->staffIdx()) { - if (voice > e->voice()) { - voice = e->voice(); - lyricNumber = l->subtype(); - } else if (voice == e->voice()) { - lyricNumber = std::min(lyricNumber, l->subtype()); - } + } else if (trackNumber == e->track()) { + lyricNumber = std::min(lyricNumber, l->subtype()); } } // If we have already chosen the lowest/prioritized option we can return (no better option available) - if (lyricsFound && (staff == 0) && (voice == 0) && (lyricNumber == 0)) { + if (lyricsFound && (trackNumber == 0) && (lyricNumber == 0)) { return; } } diff --git a/src/importexport/lyricsexport/internal/lrcwriter.h b/src/importexport/lyricsexport/internal/lrcwriter.h index 599bfa37837b2..dd439f894a086 100644 --- a/src/importexport/lyricsexport/internal/lrcwriter.h +++ b/src/importexport/lyricsexport/internal/lrcwriter.h @@ -52,7 +52,6 @@ class LRCWriter : public project::INotationWriter // Core lyric functionality std::map collectLyrics(const mu::engraving::Score*); QString formatTimestamp(double ms) const; - void findStaffVoiceAndLyricToExport(const engraving::Score* score, engraving::staff_idx_t& staff, engraving::voice_idx_t& voice, - int& lyricNumber); + void findTrackAndLyricToExport(const engraving::Score* score, mu::engraving::track_idx_t& trackNumber, int& lyricNumber); }; } // namespace mu::iex::lrcexport diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc index 396b900552d44..aa82a79218207 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test1_ref.lrc @@ -112,15 +112,3 @@ [00:54.50] <00:54.50> SOneVOne-most [00:55.00] <00:55.00> SOneVOne-nights, [00:55.50] <00:55.50> SOneVOne-End -[00:56.00] <00:56.00> SOneVOne-of -[00:56.50] <00:56.50> SOneVOne-rather -[00:57.00] <00:57.00> SOneVOne-more -[00:57.50] <00:57.50> SOneVOne-beef -[00:58.00] <00:58.00> SOneVOne-than -[00:58.50] <00:58.50> SOneVOne-mutton -[00:59.00] <00:59.00> SOneVOne-a -[00:59.50] <00:59.50> SOneVOne-salad -[01:00.00] <01:00.00> SOneVOne-on -[01:00.50] <01:00.50> SOneVOne-most -[01:01.00] <01:01.00> SOneVOne-nights, -[01:01.50] <01:01.50> SOneVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc index b40076e87108d..792b1c3ca0b5a 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test3_ref.lrc @@ -8,10 +8,6 @@ [00:10.50] <00:10.50> SOneVOne-one [00:11.00] <00:11.00> SOneVOne-of [00:11.50] <00:11.50> SOneVOne-those -[00:12.00] <00:12.00> SOneVOne-gentlement -[00:12.50] <00:12.50> SOneVOne-that -[00:13.00] <00:13.00> SOneVOne-keep -[00:13.50] <00:13.50> SOneVOne-a [00:14.00] <00:14.00> SOneVOne-mind,-SOneVOne-there [00:14.50] <00:14.50> SOneVOne-lived [00:15.00] <00:15.00> SOneVOne-not @@ -44,14 +40,6 @@ [00:28.50] <00:28.50> SOneVOne-rather [00:29.00] <00:29.00> SOneVOne-more [00:29.50] <00:29.50> SOneVOne-beef -[00:30.00] <00:30.00> SOneVOne-than -[00:30.50] <00:30.50> SOneVOne-mutton -[00:31.00] <00:31.00> SOneVOne-a -[00:31.50] <00:31.50> SOneVOne-salad -[00:32.00] <00:32.00> SOneVOne-on -[00:32.50] <00:32.50> SOneVOne-most -[00:33.00] <00:33.00> SOneVOne-nights, -[00:33.50] <00:33.50> SOneVOne-End [00:36.00] <00:36.00> SOneVOne-mind,-SOneVOne-there [00:36.50] <00:36.50> SOneVOne-lived [00:37.00] <00:37.00> SOneVOne-not @@ -60,10 +48,6 @@ [00:38.50] <00:38.50> SOneVOne-one [00:39.00] <00:39.00> SOneVOne-of [00:39.50] <00:39.50> SOneVOne-those -[00:40.00] <00:40.00> SOneVOne-gentlement -[00:40.50] <00:40.50> SOneVOne-that -[00:41.00] <00:41.00> SOneVOne-keep -[00:41.50] <00:41.50> SOneVOne-a [00:42.00] <00:42.00> SOneVOne-mind,-SOneVOne-there [00:42.50] <00:42.50> SOneVOne-lived [00:43.00] <00:43.00> SOneVOne-not @@ -92,15 +76,3 @@ [00:54.50] <00:54.50> SOneVOne-most [00:55.00] <00:55.00> SOneVOne-nights, [00:55.50] <00:55.50> SOneVOne-End -[00:56.00] <00:56.00> SOneVOne-of -[00:56.50] <00:56.50> SOneVOne-rather -[00:57.00] <00:57.00> SOneVOne-more -[00:57.50] <00:57.50> SOneVOne-beef -[00:58.00] <00:58.00> SOneVOne-than -[00:58.50] <00:58.50> SOneVOne-mutton -[00:59.00] <00:59.00> SOneVOne-a -[00:59.50] <00:59.50> SOneVOne-salad -[01:00.00] <01:00.00> SOneVOne-on -[01:00.50] <01:00.50> SOneVOne-most -[01:01.00] <01:01.00> SOneVOne-nights, -[01:01.50] <01:01.50> SOneVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc index 076485c1537ae..4aa3dee79ebaf 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test4_ref.lrc @@ -57,9 +57,6 @@ [00:28.50] <00:28.50> STwoVOne-rather [00:29.00] <00:29.00> STwoVOne-more [00:29.50] <00:29.50> STwoVOne-beef -[00:30.00] <00:30.00> STwoVOne-than -[00:30.50] <00:30.50> STwoVOne-mutton -[00:31.00] <00:31.00> STwoVOne-a [00:31.50] <00:31.50> STwoVOne-of [00:32.00] <00:32.00> STwoVOne-which [00:32.50] <00:32.50> STwoVOne-I @@ -109,15 +106,3 @@ [00:54.50] <00:54.50> STwoVOne-most [00:55.00] <00:55.00> STwoVOne-nights, [00:55.50] <00:55.50> STwoVOne-End -[00:56.00] <00:56.00> STwoVOne-of -[00:56.50] <00:56.50> STwoVOne-rather -[00:57.00] <00:57.00> STwoVOne-more -[00:57.50] <00:57.50> STwoVOne-beef -[00:58.00] <00:58.00> STwoVOne-than -[00:58.50] <00:58.50> STwoVOne-mutton -[00:59.00] <00:59.00> STwoVOne-a -[00:59.50] <00:59.50> STwoVOne-salad -[01:00.00] <01:00.00> STwoVOne-on -[01:00.50] <01:00.50> STwoVOne-most -[01:01.00] <01:01.00> STwoVOne-nights, -[01:01.50] <01:01.50> STwoVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc index 289ed055d0a1a..4f016046c2ffe 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_enhanced_test5_ref.lrc @@ -112,15 +112,3 @@ [00:54.50] <00:54.50> SThreeVOne-most [00:55.00] <00:55.00> SThreeVOne-nights, [00:55.50] <00:55.50> SThreeVOne-End -[00:56.00] <00:56.00> SThreeVOne-of -[00:56.50] <00:56.50> SThreeVOne-rather -[00:57.00] <00:57.00> SThreeVOne-more -[00:57.50] <00:57.50> SThreeVOne-beef -[00:58.00] <00:58.00> SThreeVOne-than -[00:58.50] <00:58.50> SThreeVOne-mutton -[00:59.00] <00:59.00> SThreeVOne-a -[00:59.50] <00:59.50> SThreeVOne-salad -[01:00.00] <01:00.00> SThreeVOne-on -[01:00.50] <01:00.50> SThreeVOne-most -[01:01.00] <01:01.00> SThreeVOne-nights, -[01:01.50] <01:01.50> SThreeVOne-End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc index f725337191fde..f78990d4239db 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test1_ref.lrc @@ -112,15 +112,3 @@ [00:54.50]SOneVOne most [00:55.00]SOneVOne nights, [00:55.50]SOneVOne End -[00:56.00]SOneVOne of -[00:56.50]SOneVOne rather -[00:57.00]SOneVOne more -[00:57.50]SOneVOne beef -[00:58.00]SOneVOne than -[00:58.50]SOneVOne mutton -[00:59.00]SOneVOne a -[00:59.50]SOneVOne salad -[01:00.00]SOneVOne on -[01:00.50]SOneVOne most -[01:01.00]SOneVOne nights, -[01:01.50]SOneVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc index 74e45e3ac1a53..fd1856ff06319 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test3_ref.lrc @@ -8,10 +8,6 @@ [00:10.50]SOneVOne one [00:11.00]SOneVOne of [00:11.50]SOneVOne those -[00:12.00]SOneVOne gentlement -[00:12.50]SOneVOne that -[00:13.00]SOneVOne keep -[00:13.50]SOneVOne a [00:14.00]SOneVOne mind, SOneVOne there [00:14.50]SOneVOne lived [00:15.00]SOneVOne not @@ -44,14 +40,6 @@ [00:28.50]SOneVOne rather [00:29.00]SOneVOne more [00:29.50]SOneVOne beef -[00:30.00]SOneVOne than -[00:30.50]SOneVOne mutton -[00:31.00]SOneVOne a -[00:31.50]SOneVOne salad -[00:32.00]SOneVOne on -[00:32.50]SOneVOne most -[00:33.00]SOneVOne nights, -[00:33.50]SOneVOne End [00:36.00]SOneVOne mind, SOneVOne there [00:36.50]SOneVOne lived [00:37.00]SOneVOne not @@ -60,10 +48,6 @@ [00:38.50]SOneVOne one [00:39.00]SOneVOne of [00:39.50]SOneVOne those -[00:40.00]SOneVOne gentlement -[00:40.50]SOneVOne that -[00:41.00]SOneVOne keep -[00:41.50]SOneVOne a [00:42.00]SOneVOne mind, SOneVOne there [00:42.50]SOneVOne lived [00:43.00]SOneVOne not @@ -92,15 +76,3 @@ [00:54.50]SOneVOne most [00:55.00]SOneVOne nights, [00:55.50]SOneVOne End -[00:56.00]SOneVOne of -[00:56.50]SOneVOne rather -[00:57.00]SOneVOne more -[00:57.50]SOneVOne beef -[00:58.00]SOneVOne than -[00:58.50]SOneVOne mutton -[00:59.00]SOneVOne a -[00:59.50]SOneVOne salad -[01:00.00]SOneVOne on -[01:00.50]SOneVOne most -[01:01.00]SOneVOne nights, -[01:01.50]SOneVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc index 5b71951f82580..1e561b0b47a38 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test4_ref.lrc @@ -57,9 +57,6 @@ [00:28.50]STwoVOne rather [00:29.00]STwoVOne more [00:29.50]STwoVOne beef -[00:30.00]STwoVOne than -[00:30.50]STwoVOne mutton -[00:31.00]STwoVOne a [00:31.50]STwoVOne of [00:32.00]STwoVOne which [00:32.50]STwoVOne I @@ -109,15 +106,3 @@ [00:54.50]STwoVOne most [00:55.00]STwoVOne nights, [00:55.50]STwoVOne End -[00:56.00]STwoVOne of -[00:56.50]STwoVOne rather -[00:57.00]STwoVOne more -[00:57.50]STwoVOne beef -[00:58.00]STwoVOne than -[00:58.50]STwoVOne mutton -[00:59.00]STwoVOne a -[00:59.50]STwoVOne salad -[01:00.00]STwoVOne on -[01:00.50]STwoVOne most -[01:01.00]STwoVOne nights, -[01:01.50]STwoVOne End diff --git a/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc b/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc index 78c8a01c3203e..7c78e5f0e9939 100644 --- a/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc +++ b/src/importexport/lyricsexport/tests/data/lrc_simple_test5_ref.lrc @@ -112,15 +112,3 @@ [00:54.50]SThreeVOne most [00:55.00]SThreeVOne nights, [00:55.50]SThreeVOne End -[00:56.00]SThreeVOne of -[00:56.50]SThreeVOne rather -[00:57.00]SThreeVOne more -[00:57.50]SThreeVOne beef -[00:58.00]SThreeVOne than -[00:58.50]SThreeVOne mutton -[00:59.00]SThreeVOne a -[00:59.50]SThreeVOne salad -[01:00.00]SThreeVOne on -[01:00.50]SThreeVOne most -[01:01.00]SThreeVOne nights, -[01:01.50]SThreeVOne End