「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



例によって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 )