package musicxmltestsuite.tests.base; import static com.xenoage.zong.core.music.Pitch.pi; import com.xenoage.zong.core.music.Pitch; public interface Base01b extends Base { @Override default String getFileName() { return "01b-Pitches-Intervals.xml"; } default Pitch[] getExpectedPitches() { Pitch[] expectedPitches = new Pitch[41 * 2]; Pitch pi1 = pi(0, 0, 5); Pitch pi2 = pi(0, 0, 5); for (int i = 0; i < expectedPitches.length / 2; i++) { expectedPitches[i * 2 + 0] = pi1; expectedPitches[i * 2 + 1] = pi2; pi1 = incHalftoneWithEnharmonicChange(pi1); pi2 = decHalftoneWithEnharmonicChange(pi2); } return expectedPitches; } default Pitch incHalftoneWithEnharmonicChange(Pitch p) { int step = p.getStep(); int alter = p.getAlter(); int octave = p.getOctave(); if (alter == 1) { //next step alter = -1; step += 1; if (step > 6) { step = 0; octave += 1; } } else { alter += 1; } return pi(step, alter, octave); } default Pitch decHalftoneWithEnharmonicChange(Pitch p) { int step = p.getStep(); int alter = p.getAlter(); int octave = p.getOctave(); if (alter == -1) { //next step alter = 1; step -= 1; if (step < 0) { step = 6; octave -= 1; } } else { alter -= 1; } return pi(step, alter, octave); } }