2017-02-10 7 views
0

私はピアノからMIDI入力を受け取り、コンソールにキーを押すたびにノート情報を出力する小さなコードを書こうとしています。これまでは、使用可能なMIDIデバイスをリストし、デバイスのトランスミッタに接続して情報をレシーバに送信するコードを取得しました。midi receiverを接続してデータを出力するにはどうすればいいですか?

(MIDIノートの)このデータをコンソールに表示し、常にリフレッシュするにはどうすればよいですか?私はwhileループを使うことを考えていました。送信機はメッセージを有する場合

答えて

0
import java.util.Scanner; 

import javax.sound.midi.InvalidMidiDataException; 
import javax.sound.midi.MidiDevice; 
import javax.sound.midi.MidiSystem; 
import javax.sound.midi.MidiUnavailableException; 
import javax.sound.midi.Receiver; 
import javax.sound.midi.Sequence; 
import javax.sound.midi.Sequencer; 
import javax.sound.midi.Track; 
import javax.sound.midi.Transmitter; 
import javax.sound.sampled.DataLine.Info; 

public class Get { 

    public static void main(String[] args) throws MidiUnavailableException, InvalidMidiDataException, InterruptedException{ 
     javax.sound.midi.MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); 
     System.out.println("Select Midi Device Number:"); 
     for(int i=0;i<infos.length;i++){ 
      System.out.println("Device Number " + i + ": " + infos[i].getName() + " - " + infos[i].getDescription()); 
     } 
     System.out.println("Enter device number then press enter..."); 
     Scanner in = new Scanner(System.in); 
     int deviceNumber = in.nextInt(); 
     MidiDevice input1Device = MidiSystem.getMidiDevice(infos[deviceNumber]); 
     MidiDevice inputDevice = MidiSystem.getMidiDevice(infos[deviceNumber]); 
     Sequencer sequencer = MidiSystem.getSequencer(); 
     Transmitter trans = inputDevice.getTransmitter(); 
     trans.setReceiver(MidiSystem.getReceiver()); 
     Receiver rec = trans.getReceiver(); 

    } 

} 

、それはすべての接続された受信機のsend()メソッドを呼び出します。メッセージを受け取るには、Receiverインターフェイスを実装する独自のクラスを実装する必要があります。

プログラム例Listens to a MIDI port and dump the received event to the consoleを参照してください。

関連する問題