在Java中播放单个随机音符

时间:2015-01-12 02:05:29

标签: java audio midi javax.sound.midi

我想在Java中播放单个随机音符。我使用以下内容:

Random rand = new Random();

try {
    Synthesizer synth = MidiSystem.getSynthesizer();
    synth.open();

    int note = rand.nextInt(128);
    channels[0].noteOn(note, 80);
} catch (MidiUnavailableException e) {
    e.printStackTrace();
}

但什么也没发生过。谁能告诉我为什么?

编辑:我忘了加入MidiChannel[] channels = synth.getChannels();

1 个答案:

答案 0 :(得分:1)

channels[0]设置的内容是什么?既然你说"什么都没发生"我假设程序正在运行而不是抛出NullPointerException,这意味着channels[0]必须具有非空值。我打赌你忘记了以某种方式将你现有的channels[0]对象链接到你的synth对象。很抱歉非特定的答案,我会再深入了解API。

编辑:好的,请尝试将channels[0]更改为synth.getChannels()[0]

    Random rand = new Random();

    try {
        Synthesizer synth = MidiSystem.getSynthesizer();
        synth.open();

        int note = rand.nextInt(128);
        synth.getChannels()[0].noteOn(note, 80);
    } catch (MidiUnavailableException e) {
        e.printStackTrace();
    }

我得到这个随机音符。