/* * Copyright (C) 2015-2017 たんらる */ package fourthline.mabiicco.midi; import static org.junit.Assert.*; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaMessage; import javax.sound.midi.Sequence; import javax.sound.midi.ShortMessage; import org.junit.Test; import fourthline.UseLoadingDLS; import fourthline.mmlTools.MMLScore; import fourthline.mmlTools.MMLTrack; import fourthline.mmlTools.core.MMLTicks; import fourthline.mmlTools.core.UndefinedTickException; /** * */ public class MabiDLSTest extends UseLoadingDLS { private MabiDLS dls = MabiDLS.getInstance(); private void checkMute(int trackIndex, int midiChannel) { System.out.println("checkMute "+trackIndex+" @ "+midiChannel); assertEquals(false, dls.getMute(midiChannel)); dls.toggleMute(trackIndex); assertEquals(true, dls.getMute(midiChannel)); dls.toggleMute(trackIndex); assertEquals(false, dls.getMute(midiChannel)); } private void checkPanpot(int trackIndex, int midiChannel) { System.out.println("checkPanpot "+trackIndex+" @ "+midiChannel); assertEquals(64, dls.getSynthesizer().getChannels()[midiChannel].getController(10)); dls.setChannelPanpot(trackIndex, 0); assertEquals(0, dls.getSynthesizer().getChannels()[midiChannel].getController(10)); dls.setChannelPanpot(trackIndex, 64); assertEquals(64, dls.getSynthesizer().getChannels()[midiChannel].getController(10)); } @Test public final void test() { for (int i = 0; i < 16; i++) { checkMute(i, i); checkPanpot(i, i); } } @Test public void test_loop() { assertFalse( dls.isLoop() ); dls.setLoop( true ); assertTrue( dls.isLoop() ); } @Test public void test_createSequence() throws InvalidMidiDataException, UndefinedTickException { MMLScore score = new MMLScore(); score.addTrack(new MMLTrack().setMML("MML@aat180aa,brb,crc,drd;").setProgram(5)); Sequence seq = dls.createSequence(score); assertEquals(3, seq.getTracks().length); assertEquals(MMLTicks.getTick("1"), seq.getTickLength()); byte a[][] = new byte[][] { new byte[]{(byte)ShortMessage.PROGRAM_CHANGE, 0x5}, new byte[]{(byte)ShortMessage.NOTE_ON, 69, 56}, // a new byte[]{(byte)ShortMessage.NOTE_ON, 71, 56}, // b new byte[]{(byte)ShortMessage.NOTE_ON, 60, 56}, // c new byte[]{(byte)ShortMessage.NOTE_OFF, 69, 0}, // a new byte[]{(byte)ShortMessage.NOTE_OFF, 71, 0}, // b new byte[]{(byte)ShortMessage.NOTE_OFF, 60, 0}, // c new byte[]{(byte)ShortMessage.NOTE_ON, 69, 56}, // a new byte[]{(byte)ShortMessage.NOTE_OFF, 69, 0}, // a new byte[]{(byte)MetaMessage.META, 81, 3, 5, 22, 21}, // t180 new byte[]{(byte)ShortMessage.NOTE_ON, 69, 56}, // a new byte[]{(byte)ShortMessage.NOTE_ON, 71, 56}, // b new byte[]{(byte)ShortMessage.NOTE_ON, 60, 56}, // c new byte[]{(byte)ShortMessage.NOTE_OFF, 69, 0}, // a new byte[]{(byte)ShortMessage.NOTE_OFF, 71, 0}, // b new byte[]{(byte)ShortMessage.NOTE_OFF, 60, 0}, // c new byte[]{(byte)ShortMessage.NOTE_ON, 69, 56}, // a new byte[]{(byte)ShortMessage.NOTE_OFF, 69, 0}, // a }; for (int i = 0; i < a.length; i++) { assertArrayEquals(""+i, a[i], seq.getTracks()[0].get(i).getMessage().getMessage()); } } }