import jp.crestmuse.cmx.amusaj.sp.* import jp.crestmuse.cmx.amusaj.filewrappers.* import jp.crestmuse.cmx.sound.* import javax.sound.midi.* class PrintModule extends SPModule { void execute(Object[] src, TimeSeriesCompatible[] dest) { // src[0]からステータスバイトとデータバイトを取得 def (status, data1, data2) = src[0].getMessageInByteArray() // 取得したステータスバイトとデータバイトを画面表示 println(status + " " + data1 + " " + data2) // 入力されたデータをそのまま出力 dest[0].add(src[0]) } Class[] getInputClasses() { [MidiEventWithTicktime.class] } Class[] getOutputClasses() { [MidiEventWithTicktime.class] } } exec = new SPExecutor() vkb = new VirtualKeyboard() mi = new MidiInputModule(vkb) rcv = MidiSystem.getReceiver() mo = new MidiOutputModule(rcv) pm = new PrintModule() exec.addSPModule(mi) exec.addSPModule(pm) exec.addSPModule(mo) exec.connect(mi, 0, pm, 0) exec.connect(pm, 0, mo, 0) exec.start()