gpt4 book ai didi

java - 如何连接midi接收器输出数据?

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:55 25 4
gpt4 key购买 nike

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

}

}

最佳答案

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

参见示例程序Listens to a MIDI port and dump the received event to the console .

关于java - 如何连接midi接收器输出数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com