Come funzionano i giochi audio come Audiosurf e Beat Hazard?


43

Nota: non sto chiedendo come creare un clone di uno di questi. Sto chiedendo come funzionano.

Sono sicuro che tutti hanno visto i giochi in cui usi i tuoi file musicali (o quelli forniti) e i giochi producono livelli basati su di essi, come Audiosurf e Beat Hazard .

Ecco un video di Audiosurf in azione, per mostrare cosa intendo.

Se fornisci una canzone heavy metal, otterrai una serie completamente diversa di ostacoli, nemici ed esperienza di gioco da qualcosa come Vivaldi.

Quello che mi interessa è come funzionano questi giochi. Non so molto sull'audio (bene, dal lato dei dati), ma come elaborano la canzone per capire quando si sta stabilizzando o quando sta accelerando? Immagino che possano semplicemente alimentare i valori del pitch (supponendo che esistano cose di questo tipo nei file audio) per formare un livello, ma non lo spiegherebbe completamente.

Sto cercando una spiegazione, alcuni collegamenti ad articoli su questo genere di cose (sono sicuro che ci sia un termine o termini per esso), o anche un'implementazione open source di questo tipo di cose ;-)

EDIT: Dopo alcune ricerche e un piccolo aiuto, ho scoperto FFT (Fast Fourier Transform). Questo forse è un passo nella giusta direzione, ma è qualcosa che non ha alcun senso per me ... o si adatta alla mia conoscenza fisica delle onde.


1
Ho appena modificato per aggiungere alcune informazioni sugli FFT, spero che sia d'aiuto :)
Ray Dey,

Risposte:


30

Il termine che stai cercando è elaborazione / analisi del segnale. Ci sono molte tecniche coinvolte, ma quella fondamentale che quei giochi usano è Beat Detection . Questo cerca di calcolare il tempo della canzone e dove sono i battiti in una misura e quindi posizionare gli ostacoli a una distanza appropriata per coincidere con ogni battuta.

Il modo in cui i giochi sanno quando "dare il calcio" ecc. Può variare dall'essere molto semplice e misurare l'ampiezza (volume) della forma d'onda o qualcosa di più complesso come isolare il volume di determinate frequenze e misurarne il volume.

Se sei interessato, guarda Digital Signal Processing per vedere come puoi analizzare le forme d'onda, che è essenzialmente ciò che stanno facendo questi giochi nella loro fase di caricamento.

Questi link sono utili per iniziare:

Introduzione alla
teoria e alle tecniche di elaborazione del suono della musica elettronica
Introduzione ai filtri digitali

Spero che sia d'aiuto :)

-Ray

EDIT: Ho appena visto la tua modifica relativa alle trasformazioni di Fourier e ho pensato di aggiungere qualche intuizione, anche se non sono affatto un esperto!

FFT è un modo per calcolare l'attuale trasformata di Fourier di una forma d'onda. Fondamentalmente, se carichi un file audio in Audacity , vedrai la forma d'onda con la linea temporale nella parte superiore, questo è noto come dominio del tempo . La FFT convertirà un segnale dal dominio del tempo nel dominio della frequenza (sostanzialmente tutte le frequenze che si verificano all'interno dell'audio).

Questa conversione è utile per l'analisi spettrale. In un esempio di gioco, se dovessi eseguire una trasformazione di Fourier, potresti facilmente calcolare la quantità di occorrenze ad alta frequenza nell'audio e da ciò puoi aggiungere effetti visivi, stelle o qualcosa associato a suoni tipicamente ad alta frequenza. Per le basse frequenze potresti avere mostri grandi e golosi che si muovono nel tempo verso i suoni dei bassi, ecc.


1
Grandi collegamenti! Tuttavia, li ho cliccati e i miei occhi si sono sciolti un po '. : p
Il comunista Duck il

5
@L'anatra comunista: quella era la parte debole. Adesso i tuoi occhi sono più forti.
doppelgreener,

3
@L'anatra comunista Hai appena fatto un passo più in basso nella tana del coniglio e va fino in fondo;)
Ray Dey,

Sono un po 'seccato che XNA non mi permetta davvero di fare nessuna di queste cose con i file MP3 (potrei con .WAV credo, ma quelli sono enormi) che è fastidioso. Ma ehi, grazie mille per le grandi risorse e il mal di testa: D
L'anatra comunista

1
@Kay ha aggiornato il collegamento
Ray Dey il


0

I dati che derivano dall'analisi della variazione di energia spettrale sono sufficienti per generare questo tipo di mappe. Qui il problema potrebbe essere se ci sono troppi dati da elaborare: non quale tipo di dati vengono utilizzati, ma come.

Dopo aver visto alcuni video, sto iniziando a credere che i dati vengano spostati ulteriormente nel dominio delle funzioni (dominio del tempo -> dominio della frequenza -> dominio delle caratteristiche). Il software genera dati utilizzando i cambiamenti di energia spettrale e prova a riconoscere funzionalità note, quindi utilizza le informazioni sulle funzionalità per impostare la mappa. Il riconoscimento può essere fatto tramite clusterizzazione, massima probabilità, reti neurali, algoritmo genetico e così via.

Dopo aver completato il riconoscimento, si hanno informazioni come: dove la funzione viene trovata in tempo e frequenza , quale tipo di featuature viene trovata, la velocità con cui si muove il vettore della funzione e così via; puoi utilizzare questi dati per alimentare un algoritmo di generazione di mappe, lasciando spazio a miglioramenti come rendere algoritmi di riconoscimento migliori, riconoscere più famiglie di funzionalità, estrarre più dati, trovare nuovi modi per "renderizzare" questi dati e così via.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.