package musicxmltestsuite.tests.base; import static com.xenoage.utils.collections.CollectionUtils.alist; import static com.xenoage.utils.kernel.Tuple2.t; import static com.xenoage.utils.math.Fraction.fr; import static com.xenoage.zong.core.position.MP.atBeat; import static musicxmltestsuite.tests.utils.Utils.articulation; import static musicxmltestsuite.tests.utils.Utils.fermata; import java.util.List; import musicxmltestsuite.tests.utils.ToDo; import com.xenoage.utils.kernel.Tuple2; import com.xenoage.zong.core.music.annotation.Articulation; import com.xenoage.zong.core.music.annotation.ArticulationType; import com.xenoage.zong.core.music.annotation.Fermata; import com.xenoage.zong.core.music.annotation.Ornament; import com.xenoage.zong.core.music.annotation.OrnamentType; import com.xenoage.zong.core.music.direction.Dynamic; import com.xenoage.zong.core.music.direction.DynamicValue; import com.xenoage.zong.core.music.format.Placement; import com.xenoage.zong.core.position.MP; @ToDo("several yet unsupported notation elements") public interface Base32a extends Base { @Override default String getFileName() { return "32a-Notations.xml"; } List<Tuple2<MP, ?>> expectedAnnotations = getExpectedAnnotations(); static List<Tuple2<MP, ?>> getExpectedAnnotations() { //TODO: not all notations are supported yet. return only those which are supported now return alist( t(atBeat(0, 0, 0, fr(0, 4)), fermata(Placement.Above)), t(atBeat(0, 0, 0, fr(1, 4)), new Fermata()), //TODO: angled fermata //TODO: square fermata //t(atBeat(0, 1, 0, fr(0, 4)), fermata(Placement.Below)), //TODO: arp. //TODO: non.arp. //TODO: acc.mark t(atBeat(0, 2, 0, fr(0, 4)), new Articulation(ArticulationType.Accent)), t(atBeat(0, 2, 0, fr(1, 4)), new Articulation(ArticulationType.Marcato)), t(atBeat(0, 2, 0, fr(2, 4)), new Articulation(ArticulationType.Staccato)), t(atBeat(0, 2, 0, fr(3, 4)), new Articulation(ArticulationType.Tenuto)), //TODO: det.-leg. t(atBeat(0, 3, 0, fr(1, 4)), new Articulation(ArticulationType.Staccatissimo)), //TODO: ... more notations ... t(atBeat(0, 6, 0, fr(0, 4)), new Ornament(OrnamentType.Trill)), t(atBeat(0, 6, 0, fr(1, 4)), new Ornament(OrnamentType.Turn)), //TODO: del.turn t(atBeat(0, 6, 0, fr(3, 4)), new Ornament(OrnamentType.InvertedTurn)), //TODO: ... more notations ... t(atBeat(0, 8, 0, fr(0, 4)), new Ornament(OrnamentType.Mordent)), t(atBeat(0, 8, 0, fr(1, 4)), new Ornament(OrnamentType.InvertedMordent)), //TODO: ... more notations ... t(atBeat(0, 21, 0, fr(0, 4)), new Dynamic(DynamicValue.f)), t(atBeat(0, 21, 0, fr(1, 4)), new Dynamic(DynamicValue.ppp)), t(atBeat(0, 21, 0, fr(2, 4)), new Dynamic(DynamicValue.sfp)), //TODO: other dynamic "sfffz" t(atBeat(0, 22, 0, fr(0, 4)), alist( articulation(ArticulationType.Staccato, Placement.Above), articulation(ArticulationType.Marcato, Placement.Above))), t(atBeat(0, 22, 0, fr(1, 4)), alist( articulation(ArticulationType.Staccato, Placement.Above), articulation(ArticulationType.Accent, Placement.Below), articulation(ArticulationType.Tenuto, Placement.Below)))); } }