Як працюють ігри на основі аудіо, такі як Audiosurf та Beat Hazard?


43

Примітка. Я не запитую, як зробити клон одного з них. Я запитую про те, як вони працюють.

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

Ось відео Audiosurf в дії, щоб показати, що я маю на увазі.

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

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

Я або шукаю пояснення, деякі посилання на статті про подібні речі (я впевнений, що є термін або терміни для цього), або навіть реалізація подібного роду з відкритим кодом ;-)

EDIT: Після деякого пошуку та невеликої допомоги я дізнався про FFT (Швидке перетворення Фур'є). Це може бути крок у правильному напрямку, але це щось, що для мене не має сенсу .. або відповідає моїм фізичним знанням хвиль.


1
Я щойно відредагував, щоб додати трохи інформації про FFT, сподіваюся, що це допоможе :)
Ray Dey

Відповіді:


30

Термін, який ви шукаєте, - це обробка / аналіз сигналів Існує безліч методик, але основна, якою користуються ці ігри, є виявлення удару . Це намагається обчислити темп пісні і там, де б'є міра, і, отже, розміщуйте перешкоди на відповідній відстані, щоб збігатися з кожним ритмом.

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

Якщо вам цікаво, загляньте в цифрову обробку сигналів, щоб побачити, як можна аналізувати форми хвиль, що по суті є тим, що ці ігри роблять у фазі завантаження.

Ці посилання корисні для початку:

Введення в
теорію обробки звуку та методи електронної музики
Вступ до цифрових фільтрів

Сподіваюся, що це допомагає :)

-Рей

EDIT: Я щойно бачив вашу редакцію щодо перетворень Фур'є і думав, що я додам деяке розуміння, хоча я аж ніяк не експерт!

FFT - це спосіб обчислення фактичного перетворення Фур'є у формі хвилі. Якщо ви завантажуєте аудіофайл в Audacity , ви побачите форму хвилі з часовою шкалою вгорі, це відоме як часова область . FFT перетворить сигнал з часової області в частотну область (в основному всі частоти, що виникають в аудіо).

Ця конверсія корисна для спектрального аналізу. На прикладі гри, якби ви зробили перетворення Фур'є, ви могли легко обчислити кількість високочастотних явищ в аудіо, і з цього ви могли б додати блискучі візуальні ефекти, зірки або щось, пов’язане із типово високочастотними звуками. На низьких частотах у вас можуть виникнути великі ненажерливі монстри, які вчасно рухаються під звуки басів тощо.


1
Чудові посилання! Однак я натискав на них і очі трохи танули. : p
Качка комуніста

5
@ Комуністична качка: Це була слабка частина. Тепер очі сильніші.
doppelgreener

3
@Камуністична качка Ви щойно ступили далі по кролячій норі, і вона йде вниз по дорозі;)
Рей Дей

Я настільки роздратований XNA насправді не дозволяє мені робити будь-яку з цих речей за допомогою MP3-файлів (я міг би. Але е, спасибі вам за великі ресурси та головний біль: D
Качка комуніста

1
@Kay оновив посилання
Ray Dey


0

Даних, отриманих в результаті аналізу спектральної зміни енергії, достатньо для створення такого роду карт. Тут може виникнути проблема, якщо обробляти занадто багато даних: не те, які дані використовуються, а як.

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

Після завершення розпізнавання у вас з'являються такі відомості, як: де функція, якщо її знайдено в часі та частоті , який тип ознаки знайдено, швидкість переміщення вектора ознак тощо; ви можете використовувати ці дані для подачі алгоритму генерації карт, залишаючи місце для вдосконалень, таких як вдосконалення алгоритмів розпізнавання, розпізнавання більшої кількості сімейств функцій, витягування більше даних, пошук нових способів "рендерингу" цих даних тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.