Search in sources :

Example 6 with MxlMusicDataContent

use of com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent in project Zong by Xenoage.

the class Test13a method test.

@ToDo("Zong! supports only -7 to +7, starting in measure 9, ending in measure 38")
@Test
public void test() {
    MxlPart part = getFirstPart();
    TraditionalKey[] expectedKeys = getExpectedKeys();
    int iKey = 0;
    for (int i = 8; i <= 37; i++) {
        MxlMeasure measure = part.getMeasures().get(i);
        for (MxlMusicDataContent data : measure.getMusicData().getContent()) {
            if (data.getMusicDataContentType() == MxlMusicDataContentType.Attributes) {
                // check type
                MxlAttributes attr = (MxlAttributes) data;
                MxlKey key = attr.getKey();
                assertEquals(expectedKeys[iKey].getFifths(), key.getFifths());
                assertEquals(expectedKeys[iKey].getMode(), getEnumValue("" + key.getMode(), Mode.values()));
                iKey++;
            }
        }
    }
}
Also used : MxlMusicDataContent(com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent) MxlAttributes(com.xenoage.zong.musicxml.types.MxlAttributes) MxlPart(com.xenoage.zong.musicxml.types.partwise.MxlPart) TraditionalKey(com.xenoage.zong.core.music.key.TraditionalKey) MxlKey(com.xenoage.zong.musicxml.types.MxlKey) MxlMeasure(com.xenoage.zong.musicxml.types.partwise.MxlMeasure) ToDo(musicxmltestsuite.tests.utils.ToDo) Test(org.junit.Test)

Example 7 with MxlMusicDataContent

use of com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent in project Zong by Xenoage.

the class Test13b method test.

@Test
public void test() {
    TraditionalKey[] expectedKeys = getExpectedKeys();
    MxlPart part = getFirstPart();
    int iKey = 0;
    for (int i = 0; i <= 2; i++) {
        MxlMeasure measure = part.getMeasures().get(i);
        for (MxlMusicDataContent data : measure.getMusicData().getContent()) {
            if (data.getMusicDataContentType() == MxlMusicDataContentType.Attributes) {
                // check type
                MxlAttributes attr = (MxlAttributes) data;
                MxlKey key = attr.getKey();
                assertEquals(expectedKeys[iKey].getFifths(), key.getFifths());
                assertEquals(expectedKeys[iKey].getMode(), getEnumValue("" + key.getMode(), Mode.values()));
                iKey++;
                if (iKey >= expectedKeys.length)
                    break;
            }
        }
    }
    assertEquals("not all keys found", expectedKeys.length, iKey);
}
Also used : MxlMusicDataContent(com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent) MxlAttributes(com.xenoage.zong.musicxml.types.MxlAttributes) MxlPart(com.xenoage.zong.musicxml.types.partwise.MxlPart) TraditionalKey(com.xenoage.zong.core.music.key.TraditionalKey) MxlKey(com.xenoage.zong.musicxml.types.MxlKey) MxlMeasure(com.xenoage.zong.musicxml.types.partwise.MxlMeasure) Test(org.junit.Test)

Example 8 with MxlMusicDataContent

use of com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent in project Zong by Xenoage.

the class Test21d method test.

@Test
public void test() {
    MxlPart part = getFirstPart();
    List<Tuple2<MP, ? extends Direction>> expectedDirections = getExpectedDirections();
    // check only directions in this test
    int iDirection = 0;
    for (int iMeasure = 0; iMeasure <= 1; iMeasure++) {
        MxlMeasure measure = part.getMeasures().get(iMeasure);
        for (MxlMusicDataContent data : measure.getMusicData().getContent()) {
            if (data.getMusicDataContentType() == MxlMusicDataContentType.Direction) {
                // check type
                MxlDirection dir = (MxlDirection) data;
                MxlDirectionTypeContent content = dir.getDirectionTypes().get(0).getContent();
                if (iDirection == 0) {
                    // Words "Largo"
                    assertEquals(0, iMeasure);
                    assertEquals(MxlDirectionTypeContentType.Words, content.getDirectionTypeContentType());
                    assertEquals("Largo", ((MxlWords) content).getFormattedText().getValue());
                } else if (iDirection == 1) {
                    // Dynamic "fp"
                    assertEquals(0, iMeasure);
                    assertEquals(MxlDirectionTypeContentType.Dynamics, content.getDirectionTypeContentType());
                    assertEquals(DynamicValue.fp, ((MxlDynamics) content).getElement());
                } else if (iDirection == 2) {
                    // Dynamic "p"
                    assertEquals(1, iMeasure);
                    assertEquals(MxlDirectionTypeContentType.Dynamics, content.getDirectionTypeContentType());
                    assertEquals(DynamicValue.p, ((MxlDynamics) content).getElement());
                }
                iDirection++;
            }
        }
    }
    assertEquals("not all directions found", expectedDirections.size(), iDirection);
}
Also used : MxlMusicDataContent(com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent) MxlDynamics(com.xenoage.zong.musicxml.types.MxlDynamics) Tuple2(com.xenoage.utils.kernel.Tuple2) MxlDirectionTypeContent(com.xenoage.zong.musicxml.types.choice.MxlDirectionTypeContent) MxlWords(com.xenoage.zong.musicxml.types.MxlWords) MxlPart(com.xenoage.zong.musicxml.types.partwise.MxlPart) MxlDirection(com.xenoage.zong.musicxml.types.MxlDirection) Direction(com.xenoage.zong.core.music.direction.Direction) MxlMeasure(com.xenoage.zong.musicxml.types.partwise.MxlMeasure) MxlDirection(com.xenoage.zong.musicxml.types.MxlDirection) Test(org.junit.Test)

Example 9 with MxlMusicDataContent

use of com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent in project Zong by Xenoage.

the class Test01b method test.

@Test
public void test() {
    Pitch[] expectedPitches = getExpectedPitches();
    MxlPart part = getFirstPart();
    int iPitch = 0;
    for (int iM = 0; iM < part.getMeasures().size(); iM++) {
        MxlMeasure measure = part.getMeasures().get(iM);
        for (MxlMusicDataContent data : measure.getMusicData().getContent()) {
            if (data.getMusicDataContentType() == MxlMusicDataContentType.Note) {
                // check note and pitch
                MxlFullNote note = ((MxlNote) data).getContent().getFullNote();
                MxlPitch pitch = (MxlPitch) (note.getContent());
                assertEquals("note " + iPitch, expectedPitches[iPitch++], pitch.getPitch());
            }
        }
    }
    assertEquals("not all notes found", expectedPitches.length, iPitch);
}
Also used : MxlMusicDataContent(com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent) MxlFullNote(com.xenoage.zong.musicxml.types.groups.MxlFullNote) MxlPitch(com.xenoage.zong.musicxml.types.MxlPitch) MxlPitch(com.xenoage.zong.musicxml.types.MxlPitch) Pitch(com.xenoage.zong.core.music.Pitch) MxlPart(com.xenoage.zong.musicxml.types.partwise.MxlPart) MxlMeasure(com.xenoage.zong.musicxml.types.partwise.MxlMeasure) Test(org.junit.Test)

Example 10 with MxlMusicDataContent

use of com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent in project Zong by Xenoage.

the class StavesListReader method countStaves.

/**
 * Counts the number of staves used in each part and returns them.
 * @return a hashmap which maps a part ID to the number of staves in this part
 */
private HashMap<String, Integer> countStaves(MxlScorePartwise mxlScore) {
    HashMap<String, Integer> ret = map();
    // check all parts
    for (MxlPart mxlPart : mxlScore.getParts()) {
        String id = mxlPart.getId();
        // heck all measures for attributes with staves-element and store the greatest value
        int maxStaves = 1;
        for (MxlMeasure mxlMeasure : mxlPart.getMeasures()) {
            for (MxlMusicDataContent content : mxlMeasure.getMusicData().getContent()) {
                if (content.getMusicDataContentType() == MxlMusicDataContentType.Attributes) {
                    Integer xmlStaves = ((MxlAttributes) content).getStaves();
                    if (xmlStaves != null) {
                        maxStaves = Math.max(maxStaves, xmlStaves);
                    }
                }
            }
        }
        // set the number of staves of the part
        ret.put(id, maxStaves);
    }
    return ret;
}
Also used : MxlMusicDataContent(com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent) MxlPart(com.xenoage.zong.musicxml.types.partwise.MxlPart) MxlMeasure(com.xenoage.zong.musicxml.types.partwise.MxlMeasure)

Aggregations

MxlMusicDataContent (com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent)13 MxlMeasure (com.xenoage.zong.musicxml.types.partwise.MxlMeasure)11 Test (org.junit.Test)10 MxlPart (com.xenoage.zong.musicxml.types.partwise.MxlPart)9 MxlAttributes (com.xenoage.zong.musicxml.types.MxlAttributes)4 ToDo (musicxmltestsuite.tests.utils.ToDo)4 MxlPitch (com.xenoage.zong.musicxml.types.MxlPitch)3 MxlFullNote (com.xenoage.zong.musicxml.types.groups.MxlFullNote)3 Pitch (com.xenoage.zong.core.music.Pitch)2 TraditionalKey (com.xenoage.zong.core.music.key.TraditionalKey)2 MxlDirection (com.xenoage.zong.musicxml.types.MxlDirection)2 MxlKey (com.xenoage.zong.musicxml.types.MxlKey)2 MxlNote (com.xenoage.zong.musicxml.types.MxlNote)2 MxlNormalNote (com.xenoage.zong.musicxml.types.choice.MxlNormalNote)2 Tuple2 (com.xenoage.utils.kernel.Tuple2)1 Direction (com.xenoage.zong.core.music.direction.Direction)1 TimeType (com.xenoage.zong.core.music.time.TimeType)1 MxlBarline (com.xenoage.zong.musicxml.types.MxlBarline)1 MxlDynamics (com.xenoage.zong.musicxml.types.MxlDynamics)1 MxlInstrument (com.xenoage.zong.musicxml.types.MxlInstrument)1