ใช่นี่คือสิ่งที่เกี่ยวกับ FFT! เพื่อให้สเปกตรัมความถี่ของข้อมูลที่คุณป้อน ส่วนที่ยากคือรายละเอียดการใช้งานอย่างที่คุณพูดถึง
เปลี่ยนคำตอบทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการ
หากคุณต้องการวิเคราะห์เพลงของคุณเองมีซอฟต์แวร์ที่ทำเช่นนั้นอยู่แล้ว คุณสามารถดู EQ ที่แสดงการตอบสนอง (โดยทั่วไปคือ FFT) หรือได้รับ "EQ ทางดนตรี" ที่แสดงสนามด้วย คุณสามารถรับเสียงเป็น MIDI VST ที่แปลงสิ่งที่คุณเล่นเป็นโน้ตสั้น ๆ ที่ถูกต้อง หากแป้นพิมพ์ของคุณเป็น midi เพียงข้าม VST และบันทึก midi โดยตรง
ถ้าคุณต้องการที่จะสอนตัวเองเกี่ยวกับ FFT และวิธีการที่เกี่ยวข้องกับดนตรีคุณควรหา Matlab ที่คุณสามารถคำนวณ FFT ของข้อมูลใด ๆ ได้ดีกว่า มีความสามารถในการบันทึกและเล่นพร้อมกับอ่านไฟล์ wav และเช่น สิ่งเหล่านี้จะทำให้ใช้งานได้ง่าย คุณสามารถสร้างกราฟเสียงและทำการวิเคราะห์ทุกชนิดได้อย่างรวดเร็วหากคุณรู้ไวยากรณ์
ถ้าคุณต้องการสร้างอุปกรณ์เพื่อทำสิ่งนั้นมันค่อนข้างซับซ้อน คุณจะต้องใช้ uC / dsp / fpga / etc เพื่อทำการคำนวณ อุปกรณ์ยอดนิยมส่วนใหญ่มาพร้อมกับรหัส FFT แล้วดังนั้นคุณจะไม่ต้องใช้รหัสด้วยตัวเอง (เช่นซับซ้อน)
คุณจะต้องสร้างวงจรและสิ่งนั้น มันไม่ยาก แต่ขึ้นอยู่กับประสบการณ์ / ความรู้ของคุณมันอาจใช้เวลาพอสมควรและมีช่วงการเรียนรู้ที่สูงชัน นอกจากนี้ยังขึ้นอยู่กับคุณภาพของผลิตภัณฑ์ขั้นสุดท้าย
ศาสตร์โน้ตดนตรีในอุดมคติประกอบด้วยชุดเรขาคณิตของ "พื้นฐาน"
สมมติว่า F0 เป็นความถี่พื้นฐานแล้วโน้ตดนตรีส่วนใหญ่จะประมาณโดย F (t) + F0 * ผลรวม (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 + ...
a_k's เป็นเพียงจุดแข็งของความถี่ที่สูงกว่าเหล่านั้น F_k และ F_k เป็นเพียงค่าคูณของ F0 ถ้า a_k = 0 สำหรับ k ทั้งหมดดังนั้นเรามีไซน์ไซด์บริสุทธิ์ ระยะพิทช์นี้ง่ายต่อการตรวจจับ เพียงแค่หาค่าสูงสุดของ FFT และความถี่นั้นคือพื้นฐานของเสียง = โน้ตดนตรี
เมื่อคุณใช้ FFT คุณจะต้องจบด้วยข้อมูลนั้นและทำการคำนวณทางคณิตศาสตร์ มันเป็นแคลคูลัส
ทั้งหมดนั้นค่อนข้างง่าย
ปัญหาบางอย่างที่คุณจะต้องจัดการ โปรดทราบว่าไม่ใช่ทั้งหมดที่มี "แก้ไข"
ความหน่วงแฝง - หากคุณกำลังทำสิ่งต่าง ๆ แบบเรียลไทม์สิ่งนี้อาจกลายเป็นปัญหาได้
บันทึกหลายรายการ - เป็นการยากที่จะกำหนดกลุ่มของบันทึกเนื่องจากมีการประสานกันเป็นพิเศษทั้งหมด หากเล่น A = 440hz และ A '= 880hz เสียงประสานส่วนใหญ่จะทับซ้อนกัน คุณสามารถรับ A = 440hz ได้อย่างง่ายดาย แต่การได้รับ A '= 880hz นั้นยากขึ้น เมื่อคุณคิดถึงคอร์ดการวิ่งเร็วและอื่น ๆ มันอาจเป็นเรื่องยากมากที่จะรับข้อมูลทั้งหมดอย่างแม่นยำ (หมายเหตุ) ในขณะที่ทุกอย่างเป็นไปได้ทางคณิตศาสตร์ แต่ข้อมูลเองก็มีข้อผิดพลาดและความผิดปรกติและมีการกำหนดสมการไว้ในบางกรณี
เสียงรบกวน - สัญญาณรบกวนในสัญญาณสามารถให้ผลลัพธ์ที่น่าเกรงขาม หากเสียงดนตรีเกิดขึ้นก็สามารถทำให้ผลลัพธ์ของคุณ ขั้นตอนวิธีที่ดีกว่านั้นจะต้อง = เวลา + เงิน + ความรู้