gpt4 book ai didi

java - Java 中的 MidiUnavailableException?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:20 24 4
gpt4 key购买 nike

我在用 Java 播放 MIDI 文件时遇到了一些问题。当我尝试播放它时,我得到的是 MidiUnavailableException(MIDI OUT 发射器不可用)。我的代码是标准的:

try {
midiseq = MidiSystem.getSequencer();
midiseq.open();
midiseq.setSequence(MidiSystem.getSequence(sound1));
midiseq.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
midiseq.start();
} catch (Exception e) {e.printStackTrace();}

midiseq 是一个Sequencersound1 是一个 InputStream

此代码可在其他几台计算机上运行,​​甚至在 Eclipse 中和在 JAR 文件中使用时也可运行,只是当我从命令提示符启动它时无法运行。我下载了一个更稳定的 Java midi 应用程序,它抛出了同样的异常。

这不可能是硬件问题,因为 Eclipse 可以毫无问题地运行它,也不可能是编码问题,因为它可以在其他计算机上正常运行。即使是这一行代码也会抛出这个异常:

javax.sound.midi.MidiSystem.getSequencer();

提前致谢。

编辑:我的操作系统是 Windows Vista。在我问这个问题之前,我已经下载了最新的 JRE 和 JDK(我认为是 1.6.0_13)。

编辑:代码:

ClassLoader.getSystemClassLoader().loadClass("com.sun.media.sound.RealTimeSequencer");
System.out.println( "Sequencer class loaded" );// Otherwise ClassNotFoundException

打印“Sequencer 类已加载。”

但是这段代码:

  try{
System.out.println(javax.sound.midi.MidiSystem.getSequencer());
System.exit(0);
} catch(Exception e) {
throw new RuntimeException(e);
}
System.exit(1);

抛出 MidiUnavailableException。

另外,这段代码:

    MidiDevice.Info[] devices = MidiSystem.getMidiDeviceInfo();
if (devices.length == 0) {
System.out.println("No MIDI devices found");
} else {
for (MidiDevice.Info dev : devices) {
System.out.println(dev);
}
}

给我这个:

    Microsoft MIDI Mapper    Microsoft GS Wavetable Synth    Real Time Sequencer    Java Sound Synthesizer

最佳答案

首先看看你的系统的能力:

MidiDevice.Info[] devices = MidiSystem.getMidiDeviceInfo();
if (devices.length == 0) {
System.out.println("No MIDI devices found");
} else {
for (MidiDevice.Info dev : devices) {
System.out.println(dev);
}
}

如果那里什么都没有,您可能需要安装 soundbanks启用jvm 创建一个软件序列器。

还要检查 MidiSystem.getReceiver() 的输出,因为如果无法创建接收器 (MidiSystem javadoc),也会发生可怕的 MidiUnavailableException。

我希望安装音库文件将使 jvm 有机会回退到合成器接收器,并且不再需要硬件访问(这似乎失败了:)

关于java - Java 中的 MidiUnavailableException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762803/

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