重新实现“ToneMatrix”音频玩具[关闭]
-
09-09-2019 - |
题
有一个很酷的声音 “玩具” 叫 ToneMatrix 。我想重新实现它作为Java applet。我已经尝试使用 JFugue 的player.play
用声音和Thread.sleep
的时机单个音符,但结果可怕。
JFugue停止第17响应后(是的,真的,我数)player.play
和Thread.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);
不隶属于 StackOverflow