2013-06-08 2 views
2

Есть ли способ отправлять и получать MIDI-сообщения на Java без создания объектов MidiMessage?Java MIDI без MidiMessage

Я работал над прототипом прототипа рабочей станции реального времени с высокой степенью производительности, и одним из критериев дизайна является то, что обычное воспроизведение инструментов и обработка сигналов обычно не выделяют никаких объектов: объекты выделяются только тогда, когда пользователь меняет настройки. (Я хочу как можно меньше сократить паузы в сборке мусора.)

Очевидно, что выделение объекта MidiMessage для каждого отдельного мелкодисперсного MIDI-события является противоположностью философии, которой я хотел следовать. Пакет javax.sound.sampled позволяет мне обрабатывать дискретизированный звук без выделения, но до сих пор мне не удалось найти способ использовать MIDI в Java без выделения множества объектов.

Есть ли способ для меня просто читать байты с MIDI-устройства в буфер, а не получать объекты MidiMessage? MIDI-сообщения довольно легко декодировать, поэтому я счастлив пойти без «помощи», предлагаемой классом MidiMessage (который, поскольку вам все равно нужно декодировать байты в сообщении, в любом случае не очень помогает).

ответ

2

Если я правильно понимаю вашу проблему, не можете ли вы повторно использовать один объект MidiMessage в своем коде и переназначить его данные через setMessage()? Таким образом, ссылка никогда не теряется и не будет собираться мусор.

+0

Да, я думаю, что это могло бы работать для передачи MIDI-сообщений. Когда я их получаю, у меня нет контроля над тем, как выделяются объекты MidiMessage. – Doradus

Смежные вопросы