Как увеличить громкость анимации в Java
Я занимаюсь разработкой музыкального плеера, и я почти закончил. Но мне нужно кое-что попробовать, потому что я видел, что есть больше коммерческих музыкальных приложений, использующих различные типы анимации для увеличения и уменьшения громкости во время воспроизведения музыки.
Мне нужно что-то вроде этого,
Как я могу это сделать? Кто-нибудь может мне помочь? Заранее спасибо.
0 ответов
Если вы выводите звук через SourceDataLine, вы можете проверить аудиоданные во время их обработки. Вот полезный пример кода, представленный в руководствах по Oracle Sound Trail, на странице " Использование файлов и конвертеров форматов" в разделе "Чтение звуковых файлов". Важный пункт в коде отмечен комментарием// Here, do something useful
"
В этот момент вы конвертируете байты в аудио значения и используете значения как часть вычисления RMS. Детали для покрытия и вычисления RMS должны быть доступны для поиска - я знаю, что видел объяснения для обоих на стеке потока.
После расчета среднеквадратичного значения его можно отправить в независимый поток, который обрабатывает графическую визуализацию. Следует использовать шаблон слабой связи, чтобы минимизировать объем работы, выполняемой с аудиопотоком, и избегать любых блокировок, которые могут повесить звук.
Например, поток визуализации может иметь метод setRMSValue, который просто обновляет переменную экземпляра, без какой-либо синхронизации или блокировки. Поток обработки звука может вызывать этот метод свободно, поскольку он генерирует новые точки данных RMS. Визуализатор может одновременно читать текущую переменную экземпляра с вашей скоростью анимации. нет synchronization
необходимо. Если поток визуализации пропускает несколько точек данных RMS, это не должно быть проблемой.