Я использую JFugue на Android. Я использовал функцию JFugue RealtimePlayer play()
, чтобы запускать и останавливать ноты, воспроизводимые в соответствии с данными, введенными пользователем в реальном времени. Мой код включает в себя повторные вызовы метода воспроизведения в следующей форме
V1 I[Violin] C6o- // Start playing note
V1 I[Violin] C6-o // Stop playing note
В настоящее время требуется только один тембр и один инструмент. Я вижу, что в документации есть еще пара похожих функций, но я не уверен, будут ли они работать (и как их использовать)
public void changeInstrument(String newInstrument) // call how many times, how to reset?
public void startNote(Note note) // Does it work in pair with above function
public void stopNote(Note note) // which instrument, timing or note duration?
Проблема в
Это расположение хорошо работает в течение первых нескольких секунд, но как только количество сыгранных клавиш накапливается, появляются случайные триггеры нот, которые начинаются непрерывно и не прекращаются. Эти ноты в основном те, которые были сыграны в предыдущие секунды пробной версии. Наблюдения:
- Уходит, если я поменяю инструмент или убью игрока
- На телефоне huawei я получаю эти журналы каждый раз, когда это происходит. На мобильные телефоны других производителей (Motorola) я ничего не получаю.
I / AudioTrack: audioTrack отправляет начальное состояние на pg I / AudioTrack: audioTrack постоянно обнуляет счетчик данных> = 20, отправляет состояние паузы / остановки в pg, счетчик: 20
Я подозреваю, что они запускаются вместе с некоторой очисткой или G C работающего кода. Это происходит на мобильных телефонах разных производителей. Протестировано на Android Версия: 9, Устройство: Honor9N ( Huawei LLD-AL20 ), Android Версия: 8.1.0, Устройство: Motorola XT1804
Вопросы
- Почему это происходит?
- Как найти root проблемы? Где посмотреть логи и сделать отладку (в каких файлах jfugue)?
- Что за исправление? (! важно)