Search in sources :

Example 1 with MxlDynamics

use of com.xenoage.zong.musicxml.types.MxlDynamics 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 2 with MxlDynamics

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

the class NotationsReader method readToNote.

public void readToNote(Chord chord, int noteIndex, int staffIndexInPart, Context context) {
    StaffDetails staffDetails = StaffDetails.fromContext(context, staffIndexInPart);
    ArrayList<Annotation> annotations = alist(0);
    for (MxlNotations mxlNotationsElement : mxlNotations) {
        for (MxlNotationsContent mxlNC : mxlNotationsElement.getElements()) {
            MxlNotationsContentType mxlNCType = mxlNC.getNotationsContentType();
            switch(mxlNCType) {
                case SlurOrTied:
                    {
                        SlurReader.readToContext(chord, noteIndex, staffIndexInPart, context, (MxlSlurOrTied) mxlNC);
                        break;
                    }
                case Dynamics:
                    {
                        Dynamic dynamics = DynamicsReader.read((MxlDynamics) mxlNC, staffDetails);
                        new DirectionAdd(dynamics, chord).execute();
                        break;
                    }
                case Articulations:
                    {
                        MxlArticulations mxlArticulations = (MxlArticulations) mxlNC;
                        annotations.addAll(ArticulationReader.read(mxlArticulations));
                        break;
                    }
                case Fermata:
                    {
                        Fermata fermata = FermataReader.read((MxlFermata) mxlNC, staffDetails);
                        annotations.add(fermata);
                        break;
                    }
                case Ornaments:
                    {
                        MxlOrnaments mxlOrnaments = (MxlOrnaments) mxlNC;
                        annotations.addAll(OrnamentReader.read(mxlOrnaments));
                        break;
                    }
                default:
            }
        }
    }
    if (annotations.size() > 0)
        chord.setAnnotations(annotations);
}
Also used : Dynamic(com.xenoage.zong.core.music.direction.Dynamic) MxlFermata(com.xenoage.zong.musicxml.types.MxlFermata) MxlDynamics(com.xenoage.zong.musicxml.types.MxlDynamics) MxlSlurOrTied(com.xenoage.zong.musicxml.types.MxlSlurOrTied) Annotation(com.xenoage.zong.core.music.annotation.Annotation) MxlNotationsContent(com.xenoage.zong.musicxml.types.choice.MxlNotationsContent) Fermata(com.xenoage.zong.core.music.annotation.Fermata) MxlFermata(com.xenoage.zong.musicxml.types.MxlFermata) DirectionAdd(com.xenoage.zong.commands.core.music.direction.DirectionAdd) MxlNotations(com.xenoage.zong.musicxml.types.MxlNotations) MxlArticulations(com.xenoage.zong.musicxml.types.MxlArticulations) StaffDetails(com.xenoage.zong.io.musicxml.in.util.StaffDetails) MxlOrnaments(com.xenoage.zong.musicxml.types.MxlOrnaments) MxlNotationsContentType(com.xenoage.zong.musicxml.types.choice.MxlNotationsContent.MxlNotationsContentType)

Aggregations

MxlDynamics (com.xenoage.zong.musicxml.types.MxlDynamics)2 Tuple2 (com.xenoage.utils.kernel.Tuple2)1 DirectionAdd (com.xenoage.zong.commands.core.music.direction.DirectionAdd)1 Annotation (com.xenoage.zong.core.music.annotation.Annotation)1 Fermata (com.xenoage.zong.core.music.annotation.Fermata)1 Direction (com.xenoage.zong.core.music.direction.Direction)1 Dynamic (com.xenoage.zong.core.music.direction.Dynamic)1 StaffDetails (com.xenoage.zong.io.musicxml.in.util.StaffDetails)1 MxlArticulations (com.xenoage.zong.musicxml.types.MxlArticulations)1 MxlDirection (com.xenoage.zong.musicxml.types.MxlDirection)1 MxlFermata (com.xenoage.zong.musicxml.types.MxlFermata)1 MxlNotations (com.xenoage.zong.musicxml.types.MxlNotations)1 MxlOrnaments (com.xenoage.zong.musicxml.types.MxlOrnaments)1 MxlSlurOrTied (com.xenoage.zong.musicxml.types.MxlSlurOrTied)1 MxlWords (com.xenoage.zong.musicxml.types.MxlWords)1 MxlDirectionTypeContent (com.xenoage.zong.musicxml.types.choice.MxlDirectionTypeContent)1 MxlMusicDataContent (com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent)1 MxlNotationsContent (com.xenoage.zong.musicxml.types.choice.MxlNotationsContent)1 MxlNotationsContentType (com.xenoage.zong.musicxml.types.choice.MxlNotationsContent.MxlNotationsContentType)1 MxlMeasure (com.xenoage.zong.musicxml.types.partwise.MxlMeasure)1