Какой алгоритм обработки звука позволяет вам делать подобные визуализации?
Я заинтересован в создании визуализатора OpenGL для MP3 в качестве любимого проекта.
Я наткнулся на это видео на YouTube, которое демонстрирует, как кто-то демонстрирует визуализатор, используемый в сочетании с дополненной реальностью.
http://www.youtube.com/watch?v=SnshyLJSpnc
Пожалуйста, посмотрите это видео, но игнорируйте аспект дополненной реальности этого видео. Меня интересует только создание визуализатора, а не дополненная реальность.
Какие алгоритмы были использованы для генерации этих паттернов в отношении музыки? Если вы смотрите, вы можете увидеть, как выглядит несколько разных методов визуализации. Первый имеет отчетливый вид:
Первый из них выглядел как волны, движущиеся по области рендеринга:
В другом "режиме" визуализация двигалась вокруг центра в виде концентрических окружностей:
Любой, кто хорошо разбирается в звуковом программировании, какие алгоритмы можно использовать для создания похожих визуализаций? Какой алгоритм использовал первый? Или с концентрическими кругами?
Любая помощь в указании мне, какие алгоритмы использовались для генерации этих визуализаций на основе музыки, очень мне поможет!
2 ответа
Во-первых, кажется, что все они основаны на алгоритмах БПФ (быстрых преобразованиях Фурье), которые могут взять звуковую волну для определенного отрезка времени и выделить ее в линейный график спектра XY, где X представляет частотный спектр (обычно основанный на логах) от 20 Гц до 20000 Гц) и Y представляет амплитуду или громкость звука на каждой частоте.
Если вы посмотрите на самые первые визуализации (плоские, бесцветные ранее в видео), вы увидите именно это в неприкрашенной форме. Вы заметите, что более низкие ноты выглядят как пики и пики на левой стороне, тогда как более высокие ноты появляются в середине и справа, что является классическим отображением преобразования Фурье. (На самом деле самая большая ошибка в этом видео состоит в том, что во второй половине, после введения, отображение БПФ слева направо имеет недостатки, так что большинство самых высоких и самых низких нот обрезают левый и правый края визуализация).
С этого момента он просто добавляет различные и все более и более сложные декорации к этой основной уловке. Сначала он добавляет очень простое цветовое отображение: высота сигнала отображается непосредственно в его цвете: от красного (самый низкий) до темно-синего / индиго (самый высокий), следуя классическому образцу ROYGBIV (красный, оранжевый, желтый, зеленый), синий, индиго, фиолетовый). Помните, что высота также соответствует объему на этой частоте. Насколько я могу судить, он использует это же цветовое отображение везде без каких-либо изменений.
Все последующие декорации и вариации кажутся просто разными способами поиграться с прогрессивным отображением времени. Первоначально он просто отображает формы сигналов в передней части визуальной области, а затем постепенно вытягивает их, так что он эффективно создает непрерывно работающий трехмерный график поверхности с частотой, бегущей слева направо, с объемом (и цветом), бегущим снизу вверх и время бежит спереди назад. Это то, что у вас есть на первой картинке.
Все остальное - это все более и более сложные версии этого, отображающие время (и только время) более сложными способами. Например, в круглом, который вы показываете вторым, я полагаю, что он отображает время очень быстрым радиальным циклом развертки вокруг очевидного полюса в середине.
Взгляните на sndpeek от Princeton Soundlab - некоторые базовые, но эффективные эффекты визуализации водопада, реализованные в OpenGL, а источник довольно инструктивный.