他の人が述べたように、ピッチ検出アルゴリズムを使用する必要があります。その根拠は十分にカバーされているので、私はあなたの質問のいくつかの詳細に対処します. あなたは音符のピッチクラスを探していると言いました。ただし、これを見つける方法は、音符の周波数を計算し、テーブルを使用してピッチ クラス、オクターブ、およびセントに変換することです。基本周波数を見つけずにピッチ クラスを取得する方法を知りません。
リアルタイムのピッチ検出アルゴリズムが必要になります。アルゴリズムを評価する際には、希望する精度と比較して、各アルゴリズムが暗示するレイテンシに注意してください。一部のアルゴリズムは他のアルゴリズムよりも優れていますが、基本的には一方を他方と交換する必要があり、両方を確実に知ることはできません。ハイゼンベルグの不確実性原理のようなものです。(サイクルのほんの一部しか聞こえていないのに、どのようにしてノートが C4 であるとわかるのでしょうか?)
あなたの「スムージング」アプローチは、音声の周波数特性を変更するデジタルフィルターと同等です。つまり、ピッチを推定しようとする試みを妨げる可能性があります。デジタル オーディオに興味がある場合、デジタル フィルターはその分野の基本的かつ有用なツールであり、魅力的なテーマでもあります。それらを理解する上で強力な数学のバックグラウンドを持っていると役立ちますが、基本的な考え方を理解するために必ずしも必要ではありません。
また、ゼロクロス法は、波形の周期とピッチを推定するための基本的な手法です。この方法で実行できますが、多くのヒューリスティックと微調整が必要です。(基本的に、いくつかの「候補」ピッチを作成し、支配的なピッチを推測してみてください。これを混乱させる多くの特殊なケースが発生します。簡単なものは「s」が少ないです。)周波数領域のピッチ検出アルゴリズムから始めます。