2017-02-10 6 views
0

Я пытаюсь написать небольшой код, который будет принимать MIDI-вход с моего пианино и выводить информацию о заметке каждый раз, когда я нажимаю клавишу на консоли. До сих пор я получил код для перечисления доступных MIDI-устройств и подключался к передатчику устройства, который затем отправляет информацию получателю.Как подключить приемник midi для вывода своих данных?

Как получить эти данные (примечания MIDI), отображаемые на консоли, и постоянно обновлять? Я думал об использовании цикла while.

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(); 

    } 

} 

ответ

0

Когда передатчик имеет сообщение, он вызывает метод send() всех подключенных приемников. Таким образом, чтобы получить сообщение, вы должны реализовать свой собственный класс, который реализует интерфейс Receiver.

См. Пример программы Listens to a MIDI port and dump the received event to the console.

Смежные вопросы