我正在尝试使用Java Sound API(javax.sound.midi)构建一个在合成器播放时在屏幕上显示MIDI音符的程序。 MIDI文件需要从磁盘加载,我在将Sequencer连接到Synthesizer时遇到一些麻烦,这样我就可以在合成器播放时捕获音符。
我不能只是将序列加载到Sequencer并使用sequencer.start(),因为那时我将无法捕获midi消息,因此会丢失note_on消息。另一方面,如果我将音序器连接到合成器并将消息发送到合成器,它将只是以错误的时序播放所有音符。有没有办法将消息发送到合成器JUST当它打算播放时?必须有一些midi蜱会做的事情,但我无法弄明白。另外,我无法理解Java如何管理midi ticks。
答案 0 :(得分:0)
如果Sequencer支持多个Transmitters,请将其中两个连接到Synthesizer和您自己的Receiver。