Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何连接midi接收器以输出其数据?_Java_Midi - Fatal编程技术网

Java 如何连接midi接收器以输出其数据?

Java 如何连接midi接收器以输出其数据?,java,midi,Java,Midi,我正在尝试编写一个小代码,它将从我的钢琴中获取midi输入,并在每次我按一个键到控制台时输出音符信息。到目前为止,我已经获得了列出可用MIDI设备的代码,并连接到设备的发射机,然后发射机将信息发送到接收机 如何将这些数据(MIDI音符)显示到控制台并不断刷新?我在考虑使用while循环 import java.util.Scanner; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiD

我正在尝试编写一个小代码,它将从我的钢琴中获取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();

    }

}
import java.util.Scanner;
导入javax.sound.midi.InvalidMidiDataException;
导入javax.sound.midi.midi设备;
导入javax.sound.midi.midi系统;
导入javax.sound.midi.MidiUnavailableException;
导入javax.sound.midi.Receiver;
导入javax.sound.midi.Sequence;
导入javax.sound.midi.Sequencer;
导入javax.sound.midi.Track;
导入javax.sound.midi.Transmitter;
导入javax.sound.sampled.DataLine.Info;
公共类获取{
公共静态void main(字符串[]args)引发MidiUnavailableException、InvalidMidiDataException、InterruptedException{
javax.sound.midi.MidiDevice.Info[]infos=MidiSystem.getMidiDeviceInfo();
System.out.println(“选择Midi设备编号:”);

对于(int i=0;i当发送器有消息时,它调用所有已连接接收器的
send()
方法。因此,要获取消息,您必须实现自己的类来实现
Receiver
接口


参见示例程序。

当发送器有消息时,它调用所有连接接收器的
send()
方法。因此,要获取消息,您必须实现自己的类,该类实现
接收器
接口

参见示例程序