Я рекомендую вам пропустить звук через JNI и посмотреть, как он на самом деле работает. Я обнаружил, что JNI на самом деле довольно эффективен (если реализован правильно) и не удивлюсь, если он будет более чем достаточно быстрым для того, что вам нужно.
Просто примечание о реализации, не заставляйте Java создавать буфер каждый раз, когда вы хотите передать аудио, просто создайте буфер в Java (или через JNI) и затем memcpy в него каждый раз, когда вам нужно обновить .
Кроме того, вы должны заметить, что ВСЕ аудио классы на Android в настоящее время написаны на c ++ и проходят через JNI. Если он достаточно быстрый, чтобы идти в одну сторону (в настоящее время я работаю над игрой, в которой мы можем без проблем передавать более 0,5 Мб аудиоданных из Java в AudioTrack в некоторых кадрах), то, вероятно, это будет не так уж и плохо. переходите к другому, поскольку это в основном та же самая операция, то есть блокировка буфера, запись, разблокировка при переходе к аудио, и блокировка буфера, чтение, разблокировка в аудио классах.