目標仕様と課題及び処理方法について
1.目標仕様
項目 |
目標値 |
備考 |
用途 |
弦楽器の調弦 |
弦を使うピアノも含む |
計測値 |
音名、セント値 |
オクターブ値は実用上必要ないので参考値とする |
計測範囲 |
55[Hz]〜880[Hz] |
下限がベース下限周波数より高いが下記により選定 ・使用するマイクの帯域下限が50Hz ・倍音で計測しオクターブ値は参考 |
計測精度 |
±1[セント] |
セント値=1200・log2(計測周波数/基準周波数) 計測周波数=基準周波数・2^(セント値/1200) |
サンプリング周期 |
250[msec] |
4回/秒 サンプリング設定と使いやすさの相関から選定 |
2.課題と対策
1)基音
(1)課題
・基音より強い倍音が存在する場合がある
・計測したい基音周波数が計測範囲外にある
(2)対策
・特許公報H3-10118より
最も大きなスペクトル値よりも30dB程度の範囲内で小さなスペクトル値を示す周波数成分の周波数を基音として判定する
・計測範囲外の基音については2次高調波と3次高調波の差または3次高調波と4次高調波の差を基音周波数とする
2)計測精度
(1)課題
・CMSIS-DPS Real FFTライブラリーの最大ポイント数4096では分割ピッチが目標計測精度より荒い
分割ピッチ=サンプリング周波数/4096
(2)対策
・サンプリング周波数を基音に対して可変させて分割ピッチを最適化する
・スプライン補間で誤差を少なくする
3.処理方法
処理 |
手順 |
詳細 |
データサンプリンング |
計測:内蔵ADC |
サンプリング周波数 16,000[Hz] 分解能 12bit 読込 DMA |
デバッグ: USB Speaker |
サンプリング周波数 48,000[Hz] / 3 分解能 16bit / 16 読込 USB Speaker ISO プロジェクト流用 |
|
基音判定 |
CMSIS Real FFT 1回目 |
R FFT計算 各ポイントのパワー計算 ピークパワーポイント選定 ピーク平均値の2倍以下はピーク判定から除外 大きい順に2個選定 if ピークパワーポイント最小値≒ピークパワーポイント間隔 基音=ピークパワーポイント最小値 ピークパワーポイントの次数=1 else 基音=ピークパワーポイント間隔 スプライン補間で使用するピークパワーポイントの次数を計算 |
基音周波数計測 |
サンプリング周波数最適化 |
2回目サンプリング周波数 = 125 * 2 ^ xn xn は2回目サンプリング周波数が基音周波数の概略16倍となる整数 |
CMSIS Real FFT 2回目 |
サンプリング周波数を変更 R FFT計算 各ポイントのパワー計算 |
|
CMSIS Spline Interpolation |
基音またはR FFTピークパワーポイントを中央としてスプライン補間 補間したピークパワーポイントを抽出 |
|
基音周波数計算 |
基音周波数=スプライン補間ピーク周波数/次数 |
4.解説
1)サンプリング周波数
(1)周波数選定
・FFTポイント数の倍数が処理しやすいがデバッグで使う48kHzとサンプリング周期をもとに選定
(2)サンプリング最適化周波数
・理論的には計測周波数の2倍以上と言われているが16倍にしている
・倍率を下げればFFT分割ピッチがより小さくなり計測精度が上がる
・現状実精度は目標値と同等レベルとなっているが音源の音程が揺れるため正確な検定は難しい
2)オクターブ値
・調弦する場合オクターブ値は必要ないので計測を省略している
・FFT1回目でピークポイントをより多く抽出して基音判定精度を上げればより正確にオクターブ値を計測できる
3)FFTパワー計測例
高調波パワーが大きい場合
Cello C弦 C1 : 65.406[Hz]
続く