publicMidiHandler() { MidiDevice device; MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for (inti=0; i < infos.length; i++) { try { device = MidiSystem.getMidiDevice(infos[i]); //does the device have any transmitters? //if it does, add it to the device list System.out.println(infos[i]);
//get all transmitters List<Transmitter> transmitters = device.getTransmitters(); //and for each transmitter
for(intj=0; j<transmitters.size();j++) { //create a new receiver transmitters.get(j).setReceiver( //using my own MidiInputReceiver newMidiInputReceiver(device.getDeviceInfo().toString()) ); }
//open each device device.open(); //if code gets this far without throwing an exception //print a success message System.out.println(device.getDeviceInfo()+" Was Opened"); frame.setTitle("设置模式"); label.setText("midi键盘加载成功"); if(!isSetting){ frame.setVisible(false); } } catch (MidiUnavailableException e) {} }
}
/* * abacdefghijklmnopqrstuvwxyzvwxyzonmabcdefghijklmnohov xyzahovzahovzahoobilibilibilibilibiliaceacehjlo * */ //tried to write my own class. I thought the send method handles an MidiEvents sent to it publicclassMidiInputReceiverimplementsReceiver{ publicinta=1; public String name; publicvoidupdateData(int data){ if(hasKey){ keyS.put(data,key); System.out.println(data+"="+key); label2.setText("对应midi键盘上的"+data); } } publicvoidbindKey(byte b){ System.out.println("case " + b + ":"); System.out.println(" r.keyPress(" + "KeyEvent.VK_NUMPAD" + a + ");"); System.out.println(" break;"); a++; } publicMidiInputReceiver(String name) { this.name = name; }//-112按下 //-128松开 publicvoidsend(MidiMessage msg, long timeStamp) { //System.out.println("msg " + msg.getMessage()[1]); for (byte a:msg.getMessage()){ //System.out.println(a); } if(isSetting){ try { FileWriterfr=newFileWriter(System.getProperty("user.dir")+"\\config.properties"); fr.write("setting=true\n\n"); for (Integer key : keyS.keySet()) { fr.write(key+"="+keyS.get(key)+"\n"); } fr.flush(); fr.close(); } catch (IOException e) { e.printStackTrace(); }
publicMidiHandler() { MidiDevice device; MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for (inti=0; i < infos.length; i++) { try { device = MidiSystem.getMidiDevice(infos[i]); //does the device have any transmitters? //if it does, add it to the device list System.out.println(infos[i]);
//get all transmitters List<Transmitter> transmitters = device.getTransmitters(); //and for each transmitter
for(intj=0; j<transmitters.size();j++) { //create a new receiver transmitters.get(j).setReceiver( //using my own MidiInputReceiver newMidiInputReceiver(device.getDeviceInfo().toString()) ); }
//open each device device.open(); //if code gets this far without throwing an exception //print a success message System.out.println(device.getDeviceInfo()+" Was Opened");
} catch (MidiUnavailableException e) {} }
}
/* * abacdefghijklmnopqrstuvwxyzvwxyzonmabcdefghijklmnohov xyzahovzahovzahoobilibilibilibilibiliaceacehjlo * */ //tried to write my own class. I thought the send method handles an MidiEvents sent to it publicclassMidiInputReceiverimplementsReceiver{ publicinta=1; public String name; publicvoidbindKey(byte b){ System.out.println("case " + b + ":"); System.out.println(" r.keyPress(" + "KeyEvent.VK_NUMPAD" + a + ");"); System.out.println(" break;"); a++; } publicMidiInputReceiver(String name) { this.name = name; }//-112按下 //-128松开 publicvoidsend(MidiMessage msg, long timeStamp) { //System.out.println("msg " + msg.getMessage()[1]); for (byte a:msg.getMessage()){ //System.out.println(a); } byte[] message = msg.getMessage(); try { Robotr=newRobot(); if(message[0] == -112){//按下 //System.out.println(message[1]); Pianopiano=newPiano(Integer.parseInt(message[1]+"")-9); piano.start(); //r.keyPress(KeyEvent.VK_A); bindKey(message[1]); //System.out.println("press"); switch (message[1]){ case83: r.keyPress(0x6e); break; case46: r.keyPress(KeyEvent.VK_TAB); break; case9: r.keyPress(KeyEvent.VK_UP); break; case93: r.keyPress(KeyEvent.VK_DOWN); break; case91: r.keyPress(KeyEvent.VK_LEFT); break;