Как увеличить громкость анимации в Java - PullRequest
0 голосов
/ 01 марта 2019

Я занимаюсь разработкой музыкального плеера, и я почти закончил.Но мне нужно кое-что попробовать, потому что я видел, что есть больше коммерческих музыкальных приложений, использующих различные типы анимации для увеличения и уменьшения громкости во время воспроизведения музыки.

Мне нужно что-то вроде этого,


.

Как я могу это сделать?Кто-нибудь может мне помочь?Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Если вы выводите звук через SourceDataLine, можно проверить аудиоданные во время их обработки.Вот полезный пример кода, представленный в руководствах по Oracle Sound Trail, на странице Использование файлов и преобразователей формата в разделе «Чтение звуковых файлов».Важная точка в коде помечена комментарием "// Here, do something useful"

. В этот момент вы должны преобразовать байты в значения аудио и использовать их как часть вычисления RMS.Детали для покрытия и вычисления среднеквадратичного значения должны быть доступны для поиска - я знаю, что видел объяснения для обоих в stackoverflow.

Как только вы вычислили среднеквадратичное значение, оно может быть отправлено в независимый поток, который обрабатываетграфическая визуализация.Следует использовать шаблон слабой связи, чтобы минимизировать объем работы, выполняемой с аудиопотоком, и избегать любых блокировок, которые могут повесить звук.

Например, поток визуализации может иметь метод setRMSValue, который просто обновляет переменную экземпляра, без какой-либо синхронизации или блокировки.Поток обработки звука может вызывать этот метод свободно, поскольку он генерирует новые точки данных RMS.Визуализатор может одновременно читать текущую переменную экземпляра с вашей скоростью анимации.Нет synchronization необходимо.Если поток визуализации пропускает несколько точек данных RMS, это не должно вызывать проблем.

...