Android 開発の経験がなく、デジタル信号処理とフーリエ変換の経験がほとんどまたはまったくない場合は、難しい課題に取り組んでいます。
一方、anthropomo が提案したように、課題に既存のライブラリを使用できる場合は、それをうまくやってのけるチャンスがあるかもしれません。
ただし、教授が既存のライブラリの使用を許可しない場合は、次の難しい問題を解決する必要があります。
あなたのプログラムは、演奏されている音の基本周波数をどのように自動的に見つけますか? E2 ノートを演奏する本物のクラシック アコースティック ギターの周波数/周波数_デシベルマグニチュード プロットを見てください。基本周波数 (82.4 Hz) が最初の高調波より約 17 デシベル (17 dB) 減衰していることに注目してください (最初の高調波は 164.8 Hz にあります)。
以下は同じプロットの拡大図で、基本的なピークをより明確に見ることができます。
第 1 高調波よりも 17 dB 減衰している基本周波数は、大きな減衰です。以下は同じ E2 ノート スペクトルですが、線形の周波数マグニチュード軸にプロットされています (縦軸はデシベル周波数マグニチュードではなく線形周波数マグニチュードになります)。これで、基本周波数のピークが実際に第 1 高調波をどれだけ下回っているかをより明確に確認できます。
あなたのプログラムは 82.4 Hz で 17 dB 減衰された基本波を自動的に検出する必要がありますが、ユーザーがギターで演奏している音符をプログラムが事前に知ることができない一般的なケースでは、どのように検出するのでしょうか?
上記の周波数スペクトルは、クラシック アコースティック ギターの E2 のものです。スチール弦ギターの E2 のスペクトルはどのように異なりますか? 増幅されたエレクトリック ギターの E2 はどうですか? あなたのプログラムは、これらの異なるスペクトル間の違いをどのように扱いますか?
問題は簡単ではありません。問題は、この課題にどれくらいの時間があるか、そして教授が完了した課題と見なす時間はどれくらいかということです。
このリファレンスは、より深い理解を提供します: 102.4 KHz までの楽器スペクトル
周波数スペクトルをプロットし、E2 から Bb5 までのギターの音を聞くことができます:楽器のスペクトル