Примечание: я не спрашиваю, как сделать клон одного из них. Я спрашиваю о том, как они работают.
Я уверен, что все видели игры, в которых вы используете свои собственные музыкальные файлы (или предоставленные), и игры создают уровни на их основе, такие как Audiosurf и Beat Hazard .
Вот видео Audiosurf в действии, чтобы показать, что я имею в виду.
Если вы предоставите песню хэви-метала, вы получите совершенно другой набор препятствий, врагов и игрового опыта от чего-то вроде Вивальди.
Что меня интересует, так это то, как работают эти игры. Я не знаю много об аудио (ну, со стороны данных), но как они обрабатывают песню, чтобы понять, когда она успокаивается или когда она ускоряется? Я предполагаю, что они могли бы просто подавать значения высоты тона (предполагая, что такого рода вещи существуют в аудиофайлах), чтобы сформировать уровень, но это не полностью объясняет это.
Я либо ищу объяснение, некоторые ссылки на статьи о подобных вещах (я уверен, что есть термин или термины для этого), либо даже реализацию такого рода вещей с открытым исходным кодом ;-)
РЕДАКТИРОВАТЬ: После некоторого поиска и небольшой помощи, я узнал о БПФ (быстрое преобразование Фурье). Это может быть шаг в правильном направлении, но это то, что не имеет никакого смысла для меня ... или соответствует моим физическим знаниям о волнах.
источник
Ответы:
Термин, который вы ищете, - это обработка / анализ сигналов. Здесь задействовано много технологий, но основной из тех, которые используются в этих играх, - Beat Detection . Это пытается вычислить темп песни и место ударов в такте и, следовательно, разместить препятствия на соответствующем расстоянии друг от друга, чтобы они совпадали с каждым ударом.
Способ, которым игры знают, когда «начинать» и т. Д., Может варьироваться от очень простого и измерения амплитуды (объема) формы волны до чего-то более сложного, например, выделения громкости определенных частот и измерения их громкости.
Если вам интересно, посмотрите на Цифровую обработку сигналов, чтобы увидеть, как вы можете анализировать сигналы, что, по сути, и делают эти игры на этапе загрузки.
Эти ссылки хороши для начала:
Введение в
теорию обработки звука и технику электронной музыки
Введение в цифровые фильтры
Надеюсь, это поможет :)
-Ray
РЕДАКТИРОВАТЬ: Я только что видел ваши правки относительно преобразований Фурье и думал, что я добавлю немного понимания, хотя я ни в коем случае не эксперт в этом!
БПФ - это способ вычисления фактического преобразования Фурье сигнала. По сути, если вы загрузите аудиофайл в Audacity , вы увидите форму волны с временной шкалой вверху, это называется временной областью . БПФ преобразует сигнал из временной области в частотную область (в основном все частоты, которые встречаются в аудио).
Это преобразование полезно для спектрального анализа. В примере с игрой, если бы вы выполняли преобразование Фурье, вы могли легко вычислить количество высокочастотных вхождений в аудио, и из этого вы могли бы добавить мерцающие визуальные эффекты, звезды или что-то, связанное с обычно высокочастотными звуками. Для низких частот у вас могут быть большие прожорливые монстры, движущиеся во времени под звуки баса и т. Д.
источник
Вот отличная серия из семи статей на эту тему от Badlogic Games. Они охватывают все от основ до реализации.
http://www.badlogicgames.com/wordpress/?cat=18
Они пытаются подражать алгоритму Audiosurf с помощью кода и всего.
источник
Данные, полученные в результате анализа изменения спектральной энергии, достаточны для создания карт такого типа. Здесь проблема может заключаться в том, что данных слишком много для обработки: не какие данные используются, а как.
Посмотрев несколько видео, я начинаю верить, что данные перемещаются дальше в область объектов (временная область -> частотная область -> область функций). Программное обеспечение генерирует данные, используя изменения спектральной энергии, и пытается распознать известные функции, а затем использует информацию о функциях для настройки карты. Распознавание может быть сделано с помощью кластеризации, максимального правдоподобия, нейронных сетей, генетического алгоритма и так далее.
После завершения распознавания у вас есть информация, такая как: где признак, если он найден по времени и частоте , какой тип особенности найден, скорость, с которой вектор элемента перемещается и т. Д . ; Вы можете использовать эти данные для подачи алгоритма генерации карты, оставляя место для улучшений, таких как создание улучшенных алгоритмов распознавания, распознавание большего числа функций, извлечение большего количества данных, поиск новых способов «рендеринга» этих данных и так далее.
источник