Skip to content

Commit

Permalink
ENG-30: Change non-end melismas to hyphens
Browse files Browse the repository at this point in the history
Melismas in the middle of words were previously incorrectly imported
as normal extensions, resulting in a underscore-style extension marking.
This commit adds a check to make sure a lyric is either Syllabic::SINGLE
or Syllabic::END before treating it as an extended lyric, which
results in the mid-word melismas correctly being marked by a hyphen.
It also adds a test for this specific case.
  • Loading branch information
iveshenry18 committed May 21, 2021
1 parent 5c203ce commit c70d45d
Show file tree
Hide file tree
Showing 4 changed files with 613 additions and 1 deletion.
5 changes: 4 additions & 1 deletion importexport/musicxml/importmxmlpass2.cpp
Expand Up @@ -5364,7 +5364,10 @@ void MusicXMLParserLyric::parse()
const auto l = lyric.release();
_numberedLyrics[lyricNo] = l;

if (hasExtend && (extendType == "" || extendType == "start"))
if (hasExtend
&& (extendType == "" || extendType == "start")
&& (l->syllabic() == Lyrics::Syllabic::SINGLE || l->syllabic() == Lyrics::Syllabic::END)
)
_extendedLyrics.insert(l);

Q_ASSERT(_e.isEndElement() && _e.name() == "lyric");
Expand Down
275 changes: 275 additions & 0 deletions mtest/musicxml/io/testLyricExtensions.xml
@@ -0,0 +1,275 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.1 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="3.1">
<work>
<work-number>MuseScore testfile</work-number>
<work-title>Lyric Extensions</work-title>
</work>
<identification>
<creator type="composer">Henry Ives</creator>
<encoding>
<software>MuseScore 0.7.0</software>
<encoding-date>2007-09-10</encoding-date>
<supports element="accidental" type="yes"/>
<supports element="beam" type="yes"/>
<supports element="print" attribute="new-page" type="no"/>
<supports element="print" attribute="new-system" type="no"/>
<supports element="stem" type="yes"/>
</encoding>
</identification>
<part-list>
<score-part id="P1">
<part-name>Piano</part-name>
<score-instrument id="P1-I1">
<instrument-name>Staff 1</instrument-name>
</score-instrument>
<midi-device id="P1-I1" port="1"></midi-device>
<midi-instrument id="P1-I1">
<midi-channel>1</midi-channel>
<midi-program>1</midi-program>
<volume>78.7402</volume>
<pan>0</pan>
</midi-instrument>
</score-part>
</part-list>
<part id="P1">
<measure number="1">
<attributes>
<divisions>2</divisions>
<key>
<fifths>2</fifths>
</key>
<time>
<beats>4</beats>
<beat-type>4</beat-type>
</time>
<clef>
<sign>G</sign>
<line>2</line>
</clef>
</attributes>
<note>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>Oh</text>
</lyric>
</note>
<note>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>say</text>
</lyric>
</note>
<note>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>can</text>
</lyric>
</note>
<note>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>you</text>
</lyric>
</note>
</measure>
<measure number="2">
<note>
<pitch>
<step>A</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>see</text>
</lyric>
</note>
<note>
<pitch>
<step>G</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>by</text>
</lyric>
</note>
<note>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>the</text>
</lyric>
</note>
<note>
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<notations>
<slur type="start" placement="below" number="1"/>
</notations>
<lyric number="1">
<syllabic>single</syllabic>
<text>dawn's</text>
<extend/>
</lyric>
</note>
</measure>
<measure number="3">
<note>
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<notations>
<slur type="stop" number="1"/>
</notations>
</note>
<note>
<pitch>
<step>D</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
<notations>
<slur type="start" placement="below" number="1"/>
</notations>
<lyric number="1">
<syllabic>begin</syllabic>
<text>ear</text>
</lyric>
</note>
<note>
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
</note>
<note>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>2</duration>
<voice>1</voice>
<type>quarter</type>
<stem>up</stem>
</note>
</measure>
<measure number="4">
<note>
<pitch>
<step>F</step>
<alter>1</alter>
<octave>4</octave>
</pitch>
<duration>3</duration>
<voice>1</voice>
<type>quarter</type>
<dot/>
<stem>up</stem>
<notations>
<slur type="stop" number="1"/>
</notations>
</note>
<note>
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>1</duration>
<voice>1</voice>
<type>eighth</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>ly</text>
</lyric>
</note>
<note>
<pitch>
<step>E</step>
<octave>4</octave>
</pitch>
<duration>4</duration>
<voice>1</voice>
<type>half</type>
<stem>up</stem>
<lyric number="1">
<syllabic>single</syllabic>
<text>light?</text>
</lyric>
</note>
<barline location="right">
<bar-style>light-heavy</bar-style>
</barline>
</measure>
</part>
</score-partwise>

0 comments on commit c70d45d

Please sign in to comment.