Как работают звуковые игры, такие как Audiosurf и Beat Hazard?

Примечание. Я не спрашиваю, как сделать клон одного из них. Я спрашиваю, как они работают.

Я уверен, что все видели игры, в которых вы используете свои собственные музыкальные файлы (или предоставленные), и игры создают уровни на их основе, такие как Audiosurf и Beat Hazard .

Вот видео Audiosurf в действии, чтобы показать, что я имею в виду.

Если вы предоставите хэви-металлическую песню, вы получите совершенно другой набор препятствий, врагов и игрового опыта от чего-то вроде Вивальди.

Интересно, как работают эти игры. Я не очень разбираюсь в аудио (ну, на стороне данных), но как они обрабатывают песню, чтобы понять, когда она оседает или когда она ускоряется? Я предполагаю, что они могут просто подпитывать значения основного тона (при условии, что эти типы существуют в аудиофайлах), чтобы сформировать уровень, но он не будет полностью объяснять это.

Я либо ищу объяснения, некоторые ссылки на статьи о подобных вещах (я уверен, что для этого есть термин или термины) или даже реализация такого рода с открытым исходным кодом ;-)

EDIT: после некоторого поиска и небольшой помощи я узнал о FFT (быстрое преобразование Фурье). Это может быть шаг в правильном направлении, но это то, что не имеет для меня никакого смысла ... и соответствует моему физическому знанию волн.

41 голос | спросил The Communist Duck 9 J000000Saturday11 2011, 17:49:56

3 ответа


29

Термин, который вы ищете, это обработка /анализ сигналов Существует множество методов но основополагающим, что эти игры используют, является Beat Detection . Это пытается рассчитать темп песни и где биения в меру и, следовательно, помещают препятствия на соответствующее расстояние друг от друга, чтобы совпадать с каждым ударом.

То, что игры знают, когда «пинать» и т. д. может варьироваться от очень простого и измерения амплитуды (объема) формы волны или чего-то более сложного, например, выделения объема определенных частот и измерения их объема.

Если вам интересно, посмотрите на Digital Signal Processing, чтобы увидеть, как вы можете анализировать формы сигналов, что по сути является тем, что делают эти игры в фазе загрузки.

Эти ссылки хороши, чтобы вы начали:

Введение в обработку звука
Теория и техника электронной музыки
Введение в цифровые фильтры

Надеюсь, что помогает:)

-Ray

EDIT: Я только что видел ваше редактирование преобразований Фурье и думал, что добавлю в него некоторое представление, хотя я ни в коем случае не эксперт в этом!

FFT - это способ вычисления фактического преобразования Фурье формы волны. В принципе, если вы загрузите аудиофайл в Audacity , вы увидите форму волны с временной шкалой вдоль top, это называется доменом . FFT преобразует сигнал из временной области в частотную область (в основном все частоты, которые происходят в аудио).

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

ответил Ray Dey 9 J000000Saturday11 2011, 18:21:33
5

Вот серия сериалов из семи частей по этой теме от Badlogic Games. Они охватывают все: от основ до реализации.

http://www.badlogicgames.com/wordpress/?cat=18

Они пытаются имитировать алгоритм Audiosurf с кодом и всеми.

ответил Árni Jónsson 11 J000000Monday11 2011, 19:26:50
0

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

После просмотра некоторых видеороликов, я начинаю считать, что данные перемещаются дальше в домене с доменными именами (domain-domain -> frequency-domain ->). Программное обеспечение генерирует данные с использованием спектральных изменений энергии и пытается распознавать известные функции, затем использует информацию о функциях для настройки карты. Признание может быть выполнено путем кластеризации, максимального правдоподобия, нейронных сетей, генетического алгоритма и т. Д.

После завершения распознавания у вас есть такие данные, как: где функция, если она найдена в время и частота , что type featuature, скорость скорость движется вектор функции и т. д .; вы можете использовать эти данные для подачи алгоритма генерации карты, оставляя место для улучшения, например, улучшая алгоритмы распознавания, узнавайте больше семейств функций, извлекайте больше данных, находите новые способы «визуализации» этих данных и т. д.

ответил FxIII 11 J000000Monday11 2011, 11:23:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132