Skip to content

Commit 47799b3

Browse files
committed
fix lyrics
1 parent f0c629a commit 47799b3

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/importexport/midi/internal/midiexport/exportmidi.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,13 @@ bool ExportMidi::write(QIODevice* device, bool midiExpandRepeats, bool exportRPN
372372
ChordRest* cr = toChordRest(seg->element(i));
373373
if (cr) {
374374
for (const auto& lyric : cr->lyrics()) {
375+
LyricsSyllabic syllabic = lyric->syllabic();
375376
muse::ByteArray lyricText = lyric->plainText().toUtf8();
377+
if ((syllabic == LyricsSyllabic::SINGLE || syllabic == LyricsSyllabic::END)
378+
&& (lyricText.empty() || lyricText[lyricText.size() - 1] != ' ')) {
379+
lyricText.push_back(' ');
380+
}
381+
376382
size_t len = lyricText.size() + 1;
377383
std::vector<unsigned char> data(lyricText.constData(), lyricText.constData() + len);
378384

src/importexport/midi/internal/midiimport/importmidi_lyrics.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ extractLyricsFromTrack(const MidiTrack& track, int division, bool isDivisionInTp
6868
if (isLyricEvent(e)) {
6969
const uchar* data = (uchar*)e.edata();
7070
std::string text = MidiCharset::fromUchar(data);
71+
text.erase(text.find_last_not_of(' ') + 1);
7172
if (isLyricText(text)) {
7273
const auto tick = toMuseScoreTicks(i.first, division, isDivisionInTps);
7374
// no charset handling here

0 commit comments

Comments
 (0)