Vâng, đây là những gì FFT là tất cả về! Để cung cấp cho bạn phổ tần số của dữ liệu bạn cung cấp. Phần khó là các chi tiết thực hiện, như bạn đã đề cập.
Tùy thuộc vào những gì bạn muốn làm, chính xác, thay đổi câu trả lời.
Nếu bạn chỉ muốn phân tích âm nhạc của riêng bạn, đã có sẵn phần mềm để làm điều đó. Bạn có thể xem EQ thể hiện phản hồi (về cơ bản là FFT) hoặc nhận được "EQ âm nhạc" cũng thể hiện các nốt nhạc. Bạn có thể nhận âm thanh sang midi VST để chuyển đổi nội dung bạn phát sang ghi chú midi chính xác. Nếu bàn phím của bạn là midi, chỉ cần bỏ qua VST và ghi âm midi trực tiếp.
Nếu bạn muốn dạy cho mình FFT và cách nó liên quan đến âm nhạc, thì tốt hơn là lấy một cái gì đó như Matlab nơi bạn có thể tính toán FFT của bất kỳ dữ liệu nào. Nó có khả năng ghi và phát lại cùng với việc đọc các tệp wav và như vậy. Những sau đó để được reall dễ sử dụng. Bạn có thể vẽ biểu đồ âm thanh và thực hiện tất cả các loại phân tích khá nhanh nếu bạn biết cú pháp.
Nếu bạn muốn xây dựng một thiết bị để làm một việc như vậy thì nó khá phức tạp. Bạn sẽ cần một uC / dsp / fpga / etc để thực hiện các phép tính. Hầu hết các thiết bị phổ biến đã đi kèm với mã FFT vì vậy bạn sẽ không phải tự viết mã (cũng phức tạp).
Bạn sẽ cần phải xây dựng các mạch và tất cả điều đó. Nó không khó nhưng tùy thuộc vào kinh nghiệm / kiến thức của bạn, nó có thể mất khá nhiều thời gian và có một đường cong học tập dốc. Nó cũng phụ thuộc vào chất lượng của sản phẩm cuối cùng.
Về mặt toán học, một nốt nhạc lý tưởng bao gồm một loạt hình học của "cơ bản".
Giả sử F0 là tần số cơ bản, thì hầu hết các nốt nhạc sẽ được xấp xỉ bởi F (t) + F0 * sum (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
Các a_k chỉ là thế mạnh của các tần số cao hơn đó là F_k và F_k chỉ là bội số của F0. Nếu a_k = 0 với mọi k, thì chúng ta có một hình sin thuần túy. Cao độ của điều này là dễ dàng để phát hiện. Chỉ cần tìm mức tối đa của FFT và tần số đó là nền tảng của âm = nốt nhạc.
Khi bạn thực hiện FFT, bạn kết thúc với dữ liệu đó và chỉ cần làm toán. Về cơ bản là tính toán.
Tất cả điều đó là tương đối dễ dàng.
Một số vấn đề bạn sẽ phải giải quyết. Lưu ý rằng không phải tất cả trong số này là "giải quyết".
Độ trễ - Nếu bạn định làm bất kỳ loại công cụ thời gian thực nào, điều này có thể trở thành một vấn đề.
Nhiều ghi chú - Rất khó để xác định nhóm các ghi chú vì tất cả các hài âm thêm. Nếu phát A = 440hz và A '= 880hz, hầu hết các sóng hài sẽ chồng lấp. Bạn có thể dễ dàng nhận được A = 440hz, nhưng để có được A '= 880hz thì khó khăn hơn. Khi bạn nghĩ về hợp âm, chạy nhanh, v.v., thì có thể rất khó để có được chính xác tất cả các thông tin (ghi chú). Mặc dù mọi thứ nói chung đều có thể về mặt toán học, bản thân dữ liệu có lỗi và quang sai, và các phương trình được xác định trong một số trường hợp.
Nhiễu - Nhiễu trong tín hiệu có thể cho bạn kết quả giả. Nếu một tiếng ồn âm nhạc xảy ra, nó có thể làm hỏng kết quả của bạn. Các thuật toán tốt hơn sau đó sẽ được yêu cầu = thời gian + tiền bạc + kiến thức.