--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.1 Partwise//EN"\r
+ "http://www.musicxml.org/dtds/partwise.dtd">\r
+<score-partwise version="1.1">\r
+ <movement-title>Lyrics and melismata</movement-title>\r
+ <identification/>\r
+ <defaults/>\r
+ <credit/>\r
+ <part-list>\r
+ <score-part id="P1">\r
+ <part-name></part-name>\r
+ </score-part>\r
+ </part-list>\r
+ <!--=========================================================-->\r
+ <part id="P1">\r
+ <measure number="1">\r
+ <attributes>\r
+ <divisions>2</divisions>\r
+ </attributes>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">begin</beam>\r
+ <lyric number="1">\r
+ <syllabic>begin</syllabic>\r
+ <text>Me</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">continue</beam>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">end</beam>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>middle</syllabic>\r
+ <text>lis</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">begin</beam>\r
+ <lyric number="1">\r
+ <syllabic>end</syllabic>\r
+ <text>ma</text>\r
+ <extend/>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>G</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">continue</beam>\r
+ </note>\r
+ <note>\r
+ <pitch><step>B</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <beam number="1">end</beam>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ <measure number="2">\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>begin</syllabic>\r
+ <text>Me</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>middle</syllabic>\r
+ <text>lis</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>end</syllabic>\r
+ <text>ma</text>\r
+ <extend/>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>G</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>B</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ <measure number="3">\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="start"/>\r
+ </notations>\r
+ <lyric number="1">\r
+ <syllabic>begin</syllabic>\r
+ <text>Me</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="stop"/>\r
+ </notations>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>middle</syllabic>\r
+ <text>lis</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="start"/>\r
+ </notations>\r
+ <lyric number="1">\r
+ <syllabic>end</syllabic>\r
+ <text>ma</text>\r
+ <extend/>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>G</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>B</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="stop"/>\r
+ </notations>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ <measure number="4">\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="start"/>\r
+ </notations>\r
+ <lyric number="1">\r
+ <syllabic>begin</syllabic>\r
+ <text>Me</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>A</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>middle</syllabic>\r
+ <text>lis</text>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>5</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <lyric number="1">\r
+ <syllabic>end</syllabic>\r
+ <text>ma</text>\r
+ <extend/>\r
+ </lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>G</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <note>\r
+ <pitch><step>B</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ <notations>\r
+ <slur number="1" type="stop"/>\r
+ </notations>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>eighth</type>\r
+ </note>\r
+ <barline location="right">\r
+ <bar-style>light-heavy</bar-style>\r
+ </barline>\r
+ </measure>\r
+ </part>\r
+ <!--=========================================================-->\r
+</score-partwise>\r
inside_slur = False
is_tied = False
is_chord = False
+ is_beamed = False
ignore_lyrics = False
current_staff = None
main_event = musicxml_note_to_lily_main_event (n)
if main_event and not first_pitch:
first_pitch = main_event.pitch
- ignore_lyrics = inside_slur or is_tied or is_chord
+ # ignore lyrics for notes inside a slur, tie, chord or beam
+ ignore_lyrics = inside_slur or is_tied or is_chord or is_beamed
if main_event and hasattr (main_event, 'drum_type') and main_event.drum_type:
modes_found['drummode'] = True
if ev:
ev_chord.append (ev)
- # Extract the lyrics
- if not rest and not ignore_lyrics:
- note_lyrics_processed = []
- note_lyrics_elements = n.get_typed_children (musicxml.Lyric)
- for l in note_lyrics_elements:
- if l.get_number () < 0:
- for k in lyrics.keys ():
- lyrics[k].append (l.lyric_to_text ())
- note_lyrics_processed.append (k)
- else:
- lyrics[l.number].append(l.lyric_to_text ())
- note_lyrics_processed.append (l.number)
- for lnr in lyrics.keys ():
- if not lnr in note_lyrics_processed:
- lyrics[lnr].append ("\skip4")
-
mxl_beams = [b for b in n.get_named_children ('beam')
if (b.get_type () in ('begin', 'end')
beam_ev = musicxml_spanner_to_lily_event (mxl_beams[0])
if beam_ev:
ev_chord.append (beam_ev)
+ if beam_ev.span_direction == -1: # beam and thus melisma starts here
+ is_beamed = True
+ elif beam_ev.span_direction == 1: # beam and thus melisma ends here
+ is_beamed = False
if tuplet_event:
mod = n.get_maybe_exist_typed_child (musicxml.Time_modification)
tuplet_events.append ((ev_chord, tuplet_event, frac))
+ # Extract the lyrics
+ if not rest and not ignore_lyrics:
+ note_lyrics_processed = []
+ note_lyrics_elements = n.get_typed_children (musicxml.Lyric)
+ for l in note_lyrics_elements:
+ if l.get_number () < 0:
+ for k in lyrics.keys ():
+ lyrics[k].append (l.lyric_to_text ())
+ note_lyrics_processed.append (k)
+ else:
+ lyrics[l.number].append(l.lyric_to_text ())
+ note_lyrics_processed.append (l.number)
+ for lnr in lyrics.keys ():
+ if not lnr in note_lyrics_processed:
+ lyrics[lnr].append ("\skip4")
+
## force trailing mm rests to be written out.
voice_builder.add_music (musicexp.ChordEvent (), Rational (0))