Графика часто отображается с частотой кадров около 60 кадров в секунду.Итак, можете ли вы наметить 735 (= 44100/60) звуковых значений в одном визуальном кадре, или есть особая необходимость попробовать с той же скоростью, что и звук?
Java не слишком хороша для реальноговремя гарантирует, насколько это происходит при выполнении потоков, поэтому попытка согласовать два потока будет непростой задачей.Но Java хорошо справляется с поддержанием стабильной подачи, которая позволяет воспроизводить звуковые данные правильно, благодаря методу writeDataLine, использующему блокировку.
Использование SourceDataLine позволит вам накопитьзвук, как он воспроизводится (следовательно, лучшее время).Ниже приведен пример кода для SourceDataLine, который может быть полезен по следующей ссылке:
https://docs.oracle.com/javase/tutorial/sound/converters.html
В первом примере в коде есть точка (в цикле while), где мыимейте этот комментарий:
// Here, do something useful with the audio data that's
// now in the audioBytes array...
Это "полезное" что-то будет декодировать байты в значения PCM и накапливать их в массив из чего-то вроде 735 значений для передачи в графический поток.