例によってAVRのアセンブラでFFTについての妄想中。
128点でFFT掛けてシリアルから読み出してグラフ化して
みると、前にもアップしたとおりこんな感じな訳だけど…

サンプリング周波数が2000Hzで128点なら、分解能は
およそ15.63Hz。
(訂正:ナイキスト周波数じゃなくてサンプリング
周波数でした。訂正しました)
それより細かくするためには点数を増やすか、サンプリング
周波数を小さくするか…ってことになるんだけど、
どちらもウケシンセには役に立たない。でもチョーキング
したときの周波数変化をナントカして取り出したい…
目下、可変抵抗のスライダーか何かを使ってスライド量を
別途入力させる(ギターのアームみたいの)っていう
方向で考えてたんだけど、グラフをチラッと見直してみて
ふと思った…。
ピーク周波数を取り出してから、その左右を見てみて、
加重平均とか取ったら周波数の変化量が取り出せるんじゃ
ないかな?とか思ったり。
そうそう。以前ChaNさんのライントレーサのページの
「ライン検出処理」のところで書かれてたことと一緒
かな。
http://elm-chan.org/works/ltc/report_j.html
↑6個のセンサーから取り出した情報のうち、ピーク
とその左右から読み出した情報から比率を求める…と。
リクツから言えば何とかなりそうな気がするんだけど、
実際にはFFTの結果ってそれほど安定はしてくれない
ような気がするから、この処理だけを通すと周波数が
安定しない気がするんだよな…
ソフトウェア的なLPFを掛けてみるか…チョーキング
なら遅延量は殆ど気にする必要ないだろうし。
なんにしても、早いところ4弦分セットにしたピックアップ
とそのドライブ回路を組むことだな。それが無いと
いつまでも妄想君から先に進まない…
あ、でもいいこと思いついた!
そういう風に、少ない点数のFFT(言い換えれば
周波数分解能が荒いFFT)を掛けても、そういう風に
時間軸方向で平均化してしまえば、本来の分解能
よりも細かい周波数領域まで精度を上げていける
かもしれないな、という妄想。
で、そういうのを使えば、64点とか128点とかでも
そこそこ実用レベルのクロマチックチューナーが
作れちゃうんじゃなかろうかと。どうなんだろ?
そもそも市販のクリップ式のクロマチックチューナー
ってどんな仕組みになってんだろ?ものすごいSRAM量
を使って多点FFTで精度を上げるっていうのはなんだか
エネロスな気がするしな。やっぱ何かうまいことを
やってるんだろう。
もし、オイラの妄想がビンゴなら、ウケシンセの
電子回路部分にチューナー機能を持たせることも
難しくは無いはず。
一度実験してみたいところ…

0