musicxml

musicXML: 2 voices in 1 measurement


I am trying to create a musicXML file with 2 voices:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE score-partwise PUBLIC
    "-//Recordare//DTD MusicXML 4.0 Partwise//EN"
    "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="4.0">
  <part-list>
    <score-part id="P1">
      <part-name>Music</part-name>
    </score-part>
  </part-list>
  <part id="P1">
    <measure number="1">
      <attributes>
        <divisions>1</divisions>
        <key>
          <fifths>1</fifths>
        </key>
        <time>
          <beats>4</beats>
          <beat-type>4</beat-type>
        </time>
        <clef>
          <sign>G</sign>
          <line>2</line>
        </clef>
      </attributes>
      <note>
        <voice>1</voice>
        <pitch>
          <step>F</step>
          <alter>1</alter>
          <octave>4</octave>
        </pitch>
        <duration>2</duration>
        <type>half</type>
      </note>
      <note>
        <pitch>
          <step>G</step>
          <alter>0</alter>
          <octave>4</octave>
        </pitch>
        <voice>1</voice>
        <duration>2</duration>
        <type>half</type>
      </note>
      <note>
        <pitch>
          <step>C</step>
          <alter>0</alter>
          <octave>4</octave>
        </pitch>
        <voice>2</voice>
        <duration>2</duration>
        <type>half</type>
      </note>
      <note>
        <pitch>
          <step>A</step>
          <alter>0</alter>
          <octave>3</octave>
        </pitch>
        <voice>2</voice>
        <duration>2</duration>
        <type>half</type>
      </note>
    </measure>
  </part>
</score-partwise>

It seems ok to me: the notes are in the same measure. But when I use musicxml2ly and then lilypond I get the second voice shifted to the next measurement:

enter image description here

What is wrong?


Solution

  • Every note in musicxml moves the time-pointer forward, so my musicxml represents two voices that follow each other. To make them parallel we need to <backup> a full measure before the notes of voice 2 to reset the time-pointer to the start of the measure.

    <note>
        <voice>1</voice>
        ...
    </note>
    <backup>
        <duration>4</duration>
    </backup>
    <note>
        <voice>2</voice>
        ...
    </note>
    

    https://www.w3.org/2021/06/musicxml40/musicxml-reference/elements/backup/