Bagaimana cara kerja game berbasis audio seperti Audiosurf dan Beat Hazard?

43

Catatan: Saya tidak bertanya bagaimana membuat tiruan dari salah satunya. Saya bertanya tentang bagaimana mereka bekerja.

Saya yakin semua orang melihat permainan di mana Anda menggunakan file musik Anda sendiri (atau yang disediakan) dan game menghasilkan level berdasarkan mereka, seperti Audiosurf dan Beat Hazard .

Ini adalah video Audiosurf yang sedang beraksi, untuk menunjukkan apa yang saya maksud.

Jika Anda memberikan lagu heavy metal, Anda akan mendapatkan serangkaian rintangan, musuh, dan pengalaman game yang sama sekali berbeda dari sesuatu seperti Vivaldi.

Yang menarik bagi saya adalah bagaimana game ini bekerja. Saya tidak tahu banyak tentang audio (well, data-side), tetapi bagaimana mereka memproses lagu untuk memahami kapan itu menjadi tenang atau ketika sedang dipercepat? Saya kira mereka hanya bisa memberi makan nilai pitch (dengan asumsi hal-hal semacam itu ada dalam file audio) untuk membentuk level, tetapi itu tidak sepenuhnya menjelaskannya.

Saya sedang mencari penjelasan, beberapa tautan ke artikel tentang hal semacam ini (saya yakin ada istilah atau syarat untuk itu), atau bahkan implementasi open source dari hal semacam ini ;-)

EDIT: Setelah mencari dan sedikit bantuan, saya mengetahui tentang FFT (Fast Fourier Transform). Ini mungkin langkah ke arah yang benar, tetapi itu adalah sesuatu yang tidak masuk akal bagi saya..atau cocok dengan pengetahuan fisika saya tentang gelombang.

Bebek Komunis
sumber
1
Saya baru saja mengedit untuk menambahkan beberapa informasi tentang FFT, harap itu membantu :)
Ray Dey

Jawaban:

30

Istilah yang Anda cari adalah pemrosesan sinyal / analisis. Ada banyak teknik yang terlibat, tetapi yang mendasar yang digunakan oleh game-game itu adalah Beat Detection . Ini mencoba untuk menghitung tempo lagu dan di mana ketukan dalam suatu ukuran berada dan karenanya menempatkan rintangan pada jarak yang sesuai untuk bertepatan dengan setiap ketukan.

Cara permainan tahu kapan harus "menendang" dll dapat berkisar dari sangat sederhana dan mengukur amplitudo (volume) dari bentuk gelombang atau sesuatu yang lebih kompleks seperti mengisolasi volume frekuensi tertentu dan mengukur volumenya.

Jika Anda tertarik, lihat ke Pemrosesan Sinyal Digital untuk melihat bagaimana Anda dapat menganalisis bentuk gelombang, yang pada dasarnya adalah apa yang dilakukan game-game ini dalam fase pemuatannya.

Tautan ini baik untuk membantu Anda memulai:

Pengantar
Teori Pemrosesan Suara dan Teknik Musik Elektronik
Pengantar Filter Digital

Semoga itu bisa membantu :)

-Sinar

EDIT: Saya baru saja melihat suntingan Anda mengenai transformasi Fourier dan berpikir saya akan menambahkan beberapa wawasan tentang hal itu, meskipun saya tidak berarti seorang ahli di dalamnya!

FFT adalah cara menghitung transformasi Fourier sebenarnya dari bentuk gelombang. Pada dasarnya, jika Anda memuat file audio ke Audacity , Anda akan melihat bentuk gelombang dengan garis waktu di bagian atas, ini dikenal sebagai domain waktu . FFT akan mengubah sinyal dari domain waktu ke domain frekuensi (pada dasarnya semua frekuensi yang terjadi dalam audio).

Konversi ini berguna untuk analisis spektral. Dalam contoh gim, jika Anda melakukan transformasi Fourier, Anda dapat dengan mudah menghitung jumlah kemunculan frekuensi tinggi dalam audio, dan dari situ Anda dapat menambahkan efek visual twinkly, bintang, atau sesuatu yang berhubungan dengan suara frekuensi tinggi yang biasanya. Untuk frekuensi rendah, Anda bisa membuat monster besar dan rakus bergerak tepat waktu ke suara bass, dll.

Ray Dey
sumber
1
Tautan bagus! Namun, saya mengkliknya dan mata saya sedikit meleleh. : p
The Communist Duck
5
@The Communist Duck: Itu adalah bagian yang lemah. Sekarang matamu lebih kuat.
doppelgreener
3
@ Bebek Komunis Anda baru saja melangkah lebih jauh ke lubang kelinci dan berjalan jauh-jauh ke bawah;)
Ray Dey
Saya agak kesal XNA tidak benar-benar memungkinkan saya untuk melakukan hal-hal ini dengan file MP3 (saya bisa dengan .WAV saya pikir, tetapi mereka sangat besar) yang menjengkelkan. Tapi hei, terima kasih banyak atas sumber daya yang bagus dan sakit kepala: D
The Communist Duck
1
@Kay memperbarui tautan
Ray Dey
6

Berikut adalah tujuh seri tutorial hebat tentang topik ini oleh Badlogic Games. Mereka mencakup segala sesuatu dari dasar hingga implementasi.

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

Mereka mencoba meniru algoritme Audiosurf dengan kode dan semuanya.

Árni Jónsson
sumber
0

Data yang berasal dari analisis variasi energi spektral cukup untuk menghasilkan peta semacam ini. Di sini masalahnya mungkin jika ada terlalu banyak data untuk diproses: bukan jenis data apa yang digunakan, tetapi bagaimana.

Setelah melihat beberapa video, saya mulai percaya bahwa data dipindahkan lebih jauh di domain-fitur (domain-waktu -> domain-frekuensi -> domain-fitur). Perangkat lunak menghasilkan data dengan menggunakan perubahan energi spektral dan mencoba mengenali fitur yang diketahui, kemudian menggunakan informasi tentang fitur untuk mengatur peta. Pengakuan dapat dilakukan dengan klasterisasi, kemungkinan maksimum, jaringan saraf, algoritma genetika dan sebagainya.

Setelah menyelesaikan pengenalan, Anda memiliki informasi seperti: di mana fitur jika ditemukan dalam waktu dan frekuensi , jenis fitur apa yang ditemukan, kecepatan vektor fitur bergerak dan sebagainya; Anda dapat menggunakan data ini untuk memberi makan algoritme pembuatan peta, menyisakan ruang untuk perbaikan seperti membuat algoritme pengenalan yang lebih baik, mengenali lebih banyak kumpulan fitur, mengekstrak lebih banyak data, menemukan cara baru untuk "merender" data ini dan sebagainya.

FxIII
sumber