这个简单的代码在我用来测试它的几台机器上没有产生任何声音。我在 Eclipse 中运行代码,但我也尝试使用命令行无济于事。
public static void main(String[] args)
{
try {
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
MidiChannel[] channels = synthesizer.getChannels();
channels[0].noteOn(60, 60);
Thread.sleep(200);
channels[0].noteOff(60);
synthesizer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
我可以通过获取音序器、将 MIDI 事件添加到音序并播放音序来成功获得声音,但我正在尝试做一些音序器不支持的实时音乐效果。
有任何想法吗?
使用解决方案编辑:事实证明,问题在于,默认情况下,JRE 不附带音库(有趣的是,使用 Sequencer 有效,但使用 Synthesizer 没有)。谢谢,jmc!
为了解决这个问题,我从 java.sun.com 下载了一个音库并将其放在(在 WinXP 上)C:\Program Files\jre1.6.0_07\lib\audio(必须制作音频文件夹)。