2012-02-26 17 views
5

Hiện tại, tôi đang cố gắng tìm ra các mẫu (nhịp điệu) của bài hát để trình bày chúng một cách trực quan. Vì vậy, ví dụ, nhịp chính của một bài hát (trống) sẽ là một hình vuông màu đỏ, các nhịp đập thứ cấp (bass) vòng tròn màu xanh, vv Vì vậy, mỗi người trong số họ xuất hiện mỗi khi nhịp đập tương ứng của họ âm thanh.Làm thế nào để tìm ra các mẫu của bài hát (nhịp điệu) bằng cách sử dụng AS3 SoundMixer.computeSpectrum?

Tôi biết bài hát có thể có nhiều mẫu (nhịp đập) và đó là lý do tôi gặp sự cố. Ngay bây giờ tôi đang cố gắng để có được chỉ có nhịp đập chính. Tôi đang cố gắng giải quyết theo cách này:

Tôi đang sử dụng SoundMixer.computeSpectrum để nhận số ByteArray được tạo bởi thông số cường độ/tần số. Điều này ByteArray là nguồn cấp dữ liệu mỗi 1/10 giây. Tôi đang cố gắng nhóm dữ liệu cường độ/freq tương tự trong Từ điển để tìm ra các mẫu của bài hát.

A figure that explains it better.

Tôi nhận được mô hình bởi:

  • gia đình (toàn bộ đặc tả int/freq mỗi 1/10): Tuy nhiên, để có được một gia đình bị lặp đi lặp lại trong một bài hát thực sự rất hiếm. Thực tế không bao giờ xảy ra.
  • Thành viên gia đình (id cá nhân/idq): Các thành viên gia đình thường được lặp lại, nhưng một mình, chúng vô dụng.
  • Thành viên gia đình Twin Brothers (nhóm thành viên gia đình luôn âm thanh với nhau): Điều này đang hoạt động, nhưng tôi nhận được rất nhiều nhóm anh em sinh đôi, rất khó phân tích và tìm ra đó là những nhịp đập chính.

Bạn có biết nếu có một cách tốt hơn để tìm ra mô hình bài hát của (nhịp điệu) sử dụng AS3 SoundMixer.computeSpectrum hoặc bất kỳ đối tượng khác/khung/api?

PD: Tôi không có lý do âm nhạc nào được thừa nhận về lý thuyết âm nhạc.

Trả lời

1

Julapy đã đăng bản trình diễn và mã phát hiện một số nhịp rõ ràng. Julapy tập hợp năng lượng từ computeSpectrum. Julapy tập hợp trên một dải tần số rộng, không phải là các băng hẹp (các thành viên trong gia đình): http://www.julapy.com/blog/2007/12/30/beat-detection-in-flash/

Thành thật mà nói, tôi chưa bao giờ mã hóa các thuật toán dưới đây, nhưng trang 2 của một bài báo "Thuật toán phát hiện đánh bại" đề xuất ước tính nhịp mỗi phút bằng cách ước tính các khoảng thời gian của cùng một băng tần. Có vẻ như bạn có thể làm tăng thêm cách tiếp cận của Julapy: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/page2.html

Nhân tiện, bản demo và mã phân tích âm thanh trong khung HYPE cũng hiển thị tính toán theo cách mới lạ. Trong khi không giải quyết cùng một vấn đề, mã liên quan đến computeSpectrum có thể đáng đọc: http://www.hypeframework.org/02_examples/soundanalyzer/content/01_soundanalyzer/

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