2

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

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

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

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

4

1 回答 1

2

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

于 2013-06-08T14:09:18.347 回答