简单的Java MIDI示例不产生任何声音

Dav*_*lle 10 java midi

这个简单的代码不会在我用来测试它的几台机器上产生任何声音.我正在运行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();
    }
}
Run Code Online (Sandbox Code Playgroud)

通过获取音序器,将MIDI事件添加到序列并播放序列,我能够成功获得声音,但我正在尝试做一些实时音乐效果,音序器不支持.

有任何想法吗?

编辑解决方案:事实证明问题在于,默认情况下,JRE没有声音库(有趣的是,使用Sequencer工作,但使用合成器没有).谢谢,thejmc!

为了解决这个问题,我从java.sun.com下载了一个soundbank并将其放入(在WinXP上)C:\ Program Files\jre1.6.0_07\lib\audio(必须制作音频文件夹).

小智 9

一些JRE安装不包括JavaSound soundbank.gm(为了节省空间),因此您的代码不会在这些机器上触发声源.

检查不起作用的机器上是否存在声音库.您也可以将声音库放在与.class文件相同的目录中,它会找到它.

可以添加声音库或升级那些机器上的Java安装 - 不一致的痛苦,我知道:)