【问题标题】:Java MIDI without MidiMessage没有 MidiMessage 的 Java MIDI
【发布时间】:2013-06-08 13:46:02
【问题描述】:

有没有办法在 Java 中发送和接收 MIDI 消息而无需构造 MidiMessage 对象?

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

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

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

【问题讨论】:

    标签: java midi javax.sound.midi


    【解决方案1】:

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

    【讨论】:

    • 是的,我认为这可以用于传输 MIDI 信息。当我收到它们时,我无法控制 MidiMessage 对象的分配方式。
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多