2012-12-29 54 views
6

Thời gian thực không nhất thiết là bắt buộc, tuy nhiên tôi đang tạo một trò chơi cho dự án năm cuối và tôi muốn sử dụng sức mạnh của âm thanh để tạo các mức năng động chỉ dựa trên bản nhạc đang phát. Tôi nhằm mục đích để tạo ra trò chơi này cho PS Vita sử dụng playstation di động và C#, nhưng nếu tôi muốn tôi có thể chuyển sang C + + và PSP.Cần thư viện phân tích âm thanh để tạo phản hồi thời gian thực từ tệp âm thanh?

Tôi có thể sử dụng tệp WAV và hy vọng trích xuất biên độ của dạng sóng, cũng như tính các đặc điểm khác như tần suất trung bình và BPM gần đúng từ dữ liệu này để tạo cấp.

Tôi không có gì phải lo lắng về việc cố gắng làm việc với dữ liệu thô này, tôi chỉ muốn biết cách tôi có thể thực sự GET thông tin đó trước tiên. Nếu tôi có thể trích xuất các mẫu và xác nhận các đặc điểm khác nhau của các mẫu này, tôi có thể lưu trữ chúng và thực hiện các thay đổi về độ lớn, độ cao và nhiều hơn nữa để tạo ghi chú, v.v.

Tôi đang sử dụng C#, nhưng nếu có thể tôi có thể sử dụng p/gọi hoặc chuyển dự án của tôi sang một thiết bị khác sử dụng C++ thay vì C#.

Tôi đang hoảng loạn một chút ở đây, tôi thực sự là một chút bối rối.

Rất cám ơn các bạn.

Trả lời

3

Vấn đề bạn mô tả ở đây là một trong số âm nhạc/âm thanh tính năng trích xuất và một lượng đáng kể công việc học tập tồn tại mà bạn có thể vẽ. Một thuật ngữ hữu ích khác của nghệ thuật để tìm kiếm là Truy xuất thông tin nhạc (MIR).

Danh sách các tính năng mà các nhà nghiên cứu đã cố gắng lấy từ bản ghi lớn và đa dạng, từ những thứ xác định như quảng cáo chiêu hàng và khóa thông qua các đặc điểm cảm xúc, chẳng hạn như 'năng lượng'.

Hầu hết những điều này hóa ra khó khăn hơn bạn tưởng tượng, và thường chỉ khoảng 60-70% chính xác - mặc dù yêu cầu của bạn, điều này có thể là đủ.

Điểm vào tốt có thể tải xuống Sonic Visualiser, trong đó một số lượng lớn trình cắm tính năng trích xuất tồn tại và là nguồn mở. Bạn sẽ ít nhất có được một cảm giác về những gì có thể.

Cập nhật: Thuật ngữ hữu ích khác của nghệ thuật là Phát hiện khởi động - điều này thường được sử dụng để mô tả thuật toán phát hiện nhịp.

4

Thật không may tôi không nghĩ rằng bạn sẽ có thể sử dụng C# để làm điều này - AFAIK, không có trình biên dịch JIT cho nó. Tôi nhớ đọc về một cái gì đó cho Mono, mà sẽ làm cho nó có sẵn để sử dụng với C#, nhưng tôi không chắc chắn ngay bây giờ.

Điều đó nói rằng - tôi sẽ đi với c + +. Nếu bạn đi theo cách đó, bạn có thể tận dụng một lượng lớn thư viện phân tích âm thanh, như CLAM (http://clam-project.org/).

Đừng hoảng sợ (hãy tưởng tượng các chữ cái lớn, thân thiện.) Hãy hình dung từng phần cần thiết cho dự án từng bước, giải quyết từng cái một, và bạn sẽ hoàn thành nhanh chóng. =)

1

Aubio là thư viện C/C++ có chức năng theo dõi quảng cáo chiêu hàng, phát hiện khởi động và theo dõi bpm, trong số những thứ khác.

Đối với "trích xuất biên độ của dạng sóng", dạng sóng là biên độ, tức là, bạn chỉ có thể chọn mẫu âm thanh có giá trị tuyệt đối lớn nhất trong mỗi mẫu n và sử dụng giá trị đó để thực hiện phần "biên độ" của trực quan hóa.

Here's some code có thể giúp bạn bắt đầu đọc dữ liệu WAVE trong C#.

Here's some information về cách viết trình bao bọc C# cho thư viện FFTW.

Các vấn đề liên quan