Я создаю приложение, которое будет генерировать звук (пока что это в основном экспериментально) и воспроизводить его на телефоне Android.
На данный момент я пытаюсь воспроизвести простой синусоидальный звук (440 Гц) и сначала попробовал с аудиодорожкой, но испытал некоторое опустошение буфера. Поэтому я решил взглянуть на OpenSL.
Теперь я прочитал множество руководств и сообщений в блогах по этому поводу и, наконец, сделал свою собственную реализацию, используя OpenSL Engine с простой буферной очередью Android.
Теперь в обратном вызове буфера я генерирую новые данные буфера и добавляю их в очередь, но тогда задержка намного хуже, чем у звуковой дорожки (я слышу промежутки между каждым буфером).
Мой вопрос: какова наилучшая практика/архитектура для сгенерированных звуков в OpenSL? Должен ли я заполнить буфер в альтернативном потоке (тогда потребуется некоторый процесс синхронизации с обратным вызовом буфера)?
Я еще не нашел руководств по OpenSL ES для сгенерированных звуков (большинство из них посвящено воспроизведению аудиофайлов или перенаправлению аудиовхода на аудиовыход).