是否有一种方法可以在Java中发送和接收MIDI消息而无需构造midmessage对象?
我一直在研究一种概念验证的高性能实时音乐工作站原型,其中一个设计标准是乐器的普通演奏和信号处理一般不分配任何对象:对象只有在用户改变设置时才分配。(我想尽可能减少垃圾收集暂停的需要。)
显然,为每个细粒度的MIDI事件分配一个midmessage对象与我想要遵循的理念是相反的。javax.sound.sampled包允许我在没有分配的情况下处理采样声音,但到目前为止,我一直无法找到任何方法在Java中使用MIDI而不分配大量对象。
是否有一种方法让我只是从MIDI设备读取字节到缓冲区,而不是接收midmessage对象?MIDI消息非常容易解码,所以我很高兴不使用midmessage类提供的"帮助"(由于您仍然需要解码消息中的字节,因此没有多大帮助)。
如果我正确理解您的问题,您不能在代码中重用单个MidiMessage
对象并通过setMessage()
重新分配其数据吗?这样,引用永远不会丢失,也不会被垃圾收集。