JFugue Realtimeplayer случайным образом воспроизводит прошлые ноты без ввода пользователя - PullRequest
0 голосов
/ 01 мая 2020

Я использую 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

Вопросы

  1. Почему это происходит?
  2. Как найти root проблемы? Где посмотреть логи и сделать отладку (в каких файлах jfugue)?
  3. Что за исправление? (! важно)
...