0

我想用 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();

4

1 回答 1

1

设置什么channels[0]?既然你说“什么都没有发生”,我假设程序正在运行并且没有抛出 a 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();
    }

我得到这个来播放一个随机的音符。

于 2015-01-12T02:15:38.010 回答