我想在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();
答案 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();
}
我得到这个随机音符。