有一个很酷的声音 “玩具” 叫 ToneMatrix 。我想重新实现它作为Java applet。我已经尝试使用 JFugue player.play用声音和Thread.sleep的时机单个音符,但结果可怕。

JFugue停止第17响应后(是的,真的,我数)player.playThread.sleep的调用是太不规则提供了良好的节奏。

你会怎么推荐呢?基本上,我正在寻找一种简单的方法来产生声音在飞行的单个音符。所以声音前一秒钟的一小部分是由于玩,我需要能够看的数据,并告诉音频库什么注意到发挥。 (和谐多个音符是可能的。)

有帮助吗?

解决方案

我的猜测是你忘记打开关闭的注意事项在JFugue,或有被忘记停止播放的音符一次错误开始。

使用MIDI是一个非常简单的方法,你在说什么。这里有一个位在MIDI包有用的方法,这将让你开始一个大杂烩的:

Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel midiChannel = synth.getChannels()[0];
midiChannel.allNotesOff();
currentInstrument = synth.getAvailableInstruments()[index];
System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName());
synth.loadInstrument(currentInstrument);
midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram());
midiChannel.noteOn(noteNumber, velocity);
midiChannel.noteOff(noteNumber);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top