Java JFugue 5外部midi设备

Java JFugue 5外部midi设备,java,midi,javax.sound.midi,jfugue,Java,Midi,Javax.sound.midi,Jfugue,很长一段时间以来,我们一直在尝试使用jFugue 5向midi设备发送序列: MusicReceiver device = getDeviceByName("name"); Player player = new Player(); Pattern pattern = new Pattern("A"); device.sendSequence(player.getSequence(pattern)); 无法超出设备上未处理的异常类型Midi

很长一段时间以来,我们一直在尝试使用jFugue 5向midi设备发送序列:

     MusicReceiver device = getDeviceByName("name");

     Player player = new Player(); 
     Pattern pattern = new Pattern("A");    

     device.sendSequence(player.getSequence(pattern));
无法超出设备上未处理的异常类型MidiUnavailableException.sendSequence


您正在尝试将从getDeviceByInfo获得的MidiDevice.Info实例强制转换为MidiDevice。将getDeviceByName函数替换为以下函数:

static MusicReceiver getDeviceByName(String name)
        throws MidiUnavailableException {
    MidiDevice.Info info = getDeviceInfoByName(name);
    return new MusicReceiver(MidiSystem.getMidiDevice(info));
}

能否给出整个堆栈跟踪?java.lang.ClassCastException:com.sun.media.sound.MidiInDeviceProvider$MidiInDeviceInfo无法强制转换为线程main java.lang中的javax.sound.midi.MidiDeviceException。错误:未解决的编译问题:未处理的异常类型MidiUnavailableException来自javadoc:MidiUnavailableException-如果由于资源限制,请求的设备不可用-因此我猜您的特定MIDI设备可能有问题,但MidiSystem.getMidiDeviceinfo和device.sendSequenceplayer.getSequencepattern都有下划线,我甚至无法编译,所以这怎么可能是特定设备的问题呢?对不起,我忘了MidiUnavailableException不是RuntimeException。此最新编辑将修复该问题,但您需要在MusicReceiver device=getDeviceByNamename;或者执行其他类型的错误处理javax.sound.midi.MidiUnavailableException:com.sun.media.sound.AbstractMidiDevice.createReceiverUnknown Source上的接收器中的midi不可用com.sun.media.sound.AbstractMidiDevice.getReceiverUnknown Source
static MusicReceiver getDeviceByName(String name)
        throws MidiUnavailableException {
    MidiDevice.Info info = getDeviceInfoByName(name);
    return new MusicReceiver(MidiSystem.getMidiDevice(info));
}