没有MidiMessage的Java MIDI

时间:2013-06-08 13:46:03

标签: java midi javax.sound.midi

有没有办法在不构建MidiMessage对象的情况下用Java发送和接收MIDI消息?

我一直在研究一种概念验证高性能实时音乐工作站原型,其中一个设计标准是普通的乐器演奏和信号处理通常不会分配任何对象:对象仅在用户更改设置时分配。 (我希望尽可能减少垃圾收集暂停的需要。)

显然,为每一个细粒度的MIDI事件分配一个MidiMessage对象与我想要遵循的哲学相反。 javax.sound.sampled包让我可以在没有分配的情况下处理采样声音,但到目前为止,我还没有找到任何方法在Java中使用MIDI而不分配大量的对象。

有没有办法让我只是从MIDI设备读取字节到缓冲区,而不是接收MidiMessage对象? MIDI消息很容易解码,所以我很高兴没有MidiMessage类提供的“帮助”(因为你仍然需要解码消息中的字节,无论如何都没有多大帮助)。

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您是否无法在代码中重复使用单个MidiMessage对象并通过setMessage()重新分配其数据?这样,引用永远不会丢失,也不会被垃圾回收。