Làm thế nào để các trò chơi dựa trên âm thanh như Audiosurf và Beat Hazard hoạt động?


43

Lưu ý: Tôi không hỏi làm thế nào để tạo một bản sao của một trong số này. Tôi đang hỏi về cách họ làm việc.

Tôi chắc rằng mọi người đều đã xem các trò chơi mà bạn sử dụng các tệp nhạc của riêng mình (hoặc được cung cấp) và các trò chơi tạo ra các cấp độ dựa trên chúng, như AudiosurfBeat Hazard .

Dưới đây là video Audiosurf đang hoạt động, để cho thấy ý tôi là gì.

Nếu bạn cung cấp một bài hát heavy metal, bạn sẽ nhận được một loạt các chướng ngại vật, kẻ thù và trải nghiệm trò chơi hoàn toàn khác với một thứ như Vivaldi.

Điều làm tôi quan tâm là làm thế nào những trò chơi này hoạt động. Tôi không biết nhiều về âm thanh (tốt, phía dữ liệu), nhưng làm thế nào để họ xử lý bài hát để hiểu khi nào nó lắng xuống hoặc khi nó tăng tốc? Tôi đoán rằng họ chỉ có thể cung cấp các giá trị cao độ (giả sử những thứ đó tồn tại trong các tệp âm thanh) để tạo thành một mức, nhưng nó sẽ không giải thích đầy đủ về nó.

Tôi đang tìm kiếm một lời giải thích, một số liên kết đến các bài viết về loại điều này (tôi chắc chắn có một thuật ngữ hoặc thuật ngữ cho nó), hoặc thậm chí là một triển khai nguồn mở của loại điều này ;-)

EDIT: Sau một số tìm kiếm và một chút giúp đỡ, tôi đã tìm hiểu về FFT (Biến đổi Fourier nhanh). Đây có thể là một bước đi đúng hướng, nhưng nó là thứ gì đó không có ý nghĩa gì với tôi..hoặc phù hợp với kiến ​​thức vật lý của tôi về sóng.


1
Tôi vừa chỉnh sửa để thêm một số thông tin về FFT, hy vọng điều đó có ích :)
Ray Dey

Câu trả lời:


30

Thuật ngữ bạn đang tìm kiếm là xử lý / phân tích tín hiệu Có rất nhiều kỹ thuật liên quan nhưng một trong những kỹ thuật cơ bản mà những trò chơi đó sử dụng là Phát hiện Beat . Điều này cố gắng tính toán nhịp độ của bài hát và vị trí các nhịp trong một thước đo và do đó đặt các chướng ngại vật cách nhau khoảng cách phù hợp với mỗi nhịp.

Cách mà các trò chơi biết khi nào "đá vào", v.v. có thể từ rất đơn giản và đo biên độ (âm lượng) của dạng sóng hoặc một cái gì đó phức tạp hơn như cách ly âm lượng của các tần số nhất định và đo âm lượng của chúng.

Nếu bạn quan tâm, hãy xem xét Xử lý tín hiệu số để xem cách bạn có thể phân tích dạng sóng, về cơ bản là những gì các trò chơi này đang làm trong giai đoạn tải của chúng.

Các liên kết này là tốt để giúp bạn bắt đầu:

Giới thiệu về
Lý thuyết xử lý âm thanh và Kỹ thuật của Âm nhạc điện tử
Giới thiệu về Bộ lọc kỹ thuật số

Mong rằng sẽ giúp :)

-Cá đuối

EDIT: Tôi vừa thấy chỉnh sửa của bạn về các biến đổi Fourier và nghĩ rằng tôi sẽ thêm một số hiểu biết về nó, mặc dù tôi không có nghĩa là một chuyên gia về nó!

FFT là cách tính toán biến đổi Fourier thực tế của dạng sóng. Về cơ bản, nếu bạn tải lên một tệp âm thanh vào Audacity , bạn sẽ thấy dạng sóng với dòng thời gian dọc theo đỉnh, đây được gọi là miền thời gian . FFT sẽ chuyển đổi tín hiệu từ miền thời gian sang miền tần số (về cơ bản là tất cả các tần số xảy ra trong âm thanh).

Chuyển đổi này rất hữu ích cho phân tích quang phổ. Trong một ví dụ về trò chơi, nếu bạn thực hiện chuyển đổi Fourier, bạn có thể dễ dàng tính toán mức độ xuất hiện tần số cao trong âm thanh và từ đó bạn có thể thêm các hiệu ứng hình ảnh, ngôi sao hoặc thứ gì đó liên quan đến âm thanh tần số cao thông thường. Đối với các tần số thấp, bạn có thể có những con quái vật to lớn, háu ăn di chuyển kịp thời với âm thanh bass, v.v.


1
Liên kết tuyệt vời! Tuy nhiên, tôi nhấp vào chúng và đôi mắt tôi tan chảy một chút. : p
Vịt Cộng sản

5
@ Vịt Cộng sản: Đó là phần yếu. Bây giờ đôi mắt của bạn mạnh mẽ hơn.
doppelgreener

3
@ Vịt Cộng sản Bạn vừa bước xuống hố thỏ và nó đi xuống một cách looooooong;)
Ray Dey

Tôi cảm thấy khó chịu khi XNA không thực sự cho phép tôi thực hiện bất kỳ điều nào trong số này với các tệp MP3 (tôi có thể với .WAV tôi nghĩ, nhưng những thứ đó rất lớn) gây phiền nhiễu. Nhưng này, cảm ơn bạn rất nhiều vì tài nguyên tuyệt vời và đau đầu: D
Vịt Cộng sản

1
@Kay cập nhật liên kết
Ray Dey

6

Dưới đây là một loạt hướng dẫn gồm bảy phần tuyệt vời về chủ đề này của Badlogic Games. Họ bao gồm tất cả mọi thứ từ những điều cơ bản để thực hiện.

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

Họ cố gắng bắt chước thuật toán Audiosurf bằng mã và tất cả.


0

Dữ liệu đến từ phân tích biến đổi năng lượng quang phổ là đủ để tạo ra loại bản đồ này. Vấn đề ở đây có thể là nếu có quá nhiều dữ liệu cần xử lý: không phải loại dữ liệu nào được sử dụng, mà là làm thế nào.

Sau khi xem một số video, tôi bắt đầu tin rằng dữ liệu được di chuyển xa hơn trong miền tính năng (miền thời gian -> miền tần số -> miền tính năng). Phần mềm tạo dữ liệu bằng cách sử dụng các thay đổi năng lượng quang phổ và cố gắng nhận ra các tính năng đã biết, sau đó phần mềm sử dụng thông tin về các tính năng để thiết lập bản đồ. Sự công nhận có thể được thực hiện bằng cách phân cụm, khả năng tối đa, mạng lưới thần kinh, thuật toán di truyền, v.v.

Sau khi hoàn thành việc nhận dạng, bạn có các thông tin như: nơi tính năng nếu được tìm thấy theo thời giantần suất , loại hình kỳ công được tìm thấy, vận tốc của vectơ đặc trưng đang di chuyển và vân vân; bạn có thể sử dụng những dữ liệu này để cung cấp một algorimth tạo bản đồ, chừa chỗ cho những cải tiến như tạo ra thuật toán nhận dạng tốt hơn, nhận ra nhiều tính năng hơn, trích xuất nhiều dữ liệu hơn, tìm cách mới để "kết xuất" những dữ liệu này, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.