【问题标题】:Simple Java MIDI example not producing any sound不产生任何声音的简单 Java MIDI 示例
【发布时间】:2008-12-19 04:28:10
【问题描述】:

这个简单的代码在我用来测试它的几台机器上没有产生任何声音。我在 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 不附带音库(有趣的是,使用音序器有效,但使用合成器没有't)。谢谢,thejmc

为了解决这个问题,我downloaded a soundbank from java.sun.com 并将它放在(在 WinXP 上)C:\Program Files\jre1.6.0_07\lib\audio(必须制作音频文件夹)。

【问题讨论】:

  • 您的扬声器插好了吗? :)
  • 是的! (不过,这是个好问题——我曾经用同样的问题诊断出某人的显示器“问题”)

标签: java midi


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您是否尝试过使用不同的频道? 可能是this discusson 会让您更接近解决方案...

    【讨论】:

      【解决方案3】:

      我已经在我的机器(Windows XP、JRE 1.6)中测试了您的代码,它确实可以播放音符。也许只有一个音符太少听不见。尝试添加更多注释。另外,请尝试将音量调大。

      【讨论】:

        【解决方案4】:

        在关闭合成器之前只需要 1 个睡眠动作:

        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);
                Thread.sleep(200);
        
                synthesizer.close();
            } catch (Exception e)
            {
                e.printStackTrace();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-13
          • 2013-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多