Я пытаюсь сделать приложение метронома, и я взял основной код из BeatKeeper app/github repo. У меня проблема с синхронизацией пользовательского интерфейса, когда метроном играет в ритме. Репозиторий BeatKeeper пытается решить эту проблему, но решение не подходит. Я тоже пробовал пару способов, но ничего не сработало.Синхронизация потоковой передачи AudioTrack с пользовательским интерфейсом для Metronome
Я использую класс AudioTrack для записи звука (это звук в сетях). Аудио импортируется из wav-файла. Учитывая бит в минуту, я вычисляю количество образцов ловушки, которые должны быть записаны, а затем заполняем оставшиеся образцы 0 (для тишины). Поэтому для каждого удара я пишу в AudioTrack образцы ловушек, а затем тихие образцы. После записи образца ловушки я отправляю сообщение (используя обработчик) в поток пользовательского интерфейса, который обновляет TextView текущего бита. Однако эти два не синхронизированы.
Кто-нибудь знает, как это сделать? Я декомпилировал несколько приложений метронома (Mobile Metronome и Metronome Beats), которые делают это отлично. Грепинг по их коду, я нашел импорт AudioTrack, поэтому я предполагаю, что это возможно с помощью AudioTrack.
Я создал приложение с очень голыми костями/репозиторий github, чтобы разделить код. Класс Metronome - это волшебство. Я также создал branch и попытался использовать NotificationMarkerPosition для AudioTrack для обновления интерфейса. Используя слушателя, я использую текущую позицию головы и добавляю новый маркер каждый раз, когда происходит событие, чтобы получить вечные битовые события. Однако эта попытка начинает дрейфовать после нескольких ударов и уходит. Я даже попытался объяснить дрейф и исправить его, но это тоже не работает.
Я знаю, что обычно принято публиковать код в вопросе, но репо казалось мне более практичным. Если необходимо, я могу отправить код. Я был бы признателен за любую помощь/предложения или альтернативу созданию метронома, синхронизированного с пользовательским интерфейсом.
У вас есть опыт работы с Visualizer и верьте, что он будет работать для моего прецедента или это просто предложение? У меня нет большого опыта в аудиопрограмме, но до сих пор я не видел людей, использующих визуализатор для моего конкретного случая использования. Я собираюсь попробовать, но я просто хотел оценить свое ожидание. Спасибо – blinkmacalahan
Просто предложение. –