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



FFTばかりじゃなく、回路のほうもちゃんと実験
しておかないといけないなぁ。

以前の実験
http://brown.ap.teacup.com/nekosan0/713.html
からずっとほったらかしだったけど、今回はこれを
単にヘッドフォンで聴くんじゃなく、pico scope
でFFTを掛けてスペクトルを眺めてみたい…という
話し。

今回のコンセプトは、一つには1弦1弦完全に独立した
信号のセンスができるということと、それをFFT掛けて
1フレット単位で音量が拾えるということ。

1フレット単位で音量が拾えるためには、大事なのは
弦の振動波形にあまり倍音成分などが含まれていない
ということ。倍音成分があまり載っちゃってると、
FFTを掛けても1フレット単位でちゃんと分離
出来るのかが難しい…。

ってわけで、この間のビヨンビヨンの輪ゴムの音の
代わりに、あの1×2材で作ったソリッドウクレレ
http://brown.ap.teacup.com/nekosan0/730.html
の弦を弾いてみようという作戦。これでちゃんと
信号が拾えて、しかも倍音成分が少ない信号が
拾えていることを祈るばかり。まぁ、少しくらい
倍音成分が載っててもなんとかできる処理方法の
はずなんだけど。

とりあえずスペクトルとして見れればいいだけ。
感触が判れば十分。遅延時間とかは特に気にしない
ので、pico scopeで十分。

うーん、旨く鳴ってくれるといいな。

ピックアップ部分はエポキシパテを使ってすでに
ユニットかしてあるんだけど、それをドライブする
回路は都度ブレッドボードなのでちょっと手間。
まぁ、ちょっと気合入れて組んでみよう。

今日は昼間お出かけしちゃってwindows7マシン
組み立てる時間はなかったな…。明日以降だな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




もっと大きな問題があった…。忘れてた…。

256点サンプルでFFTを掛けると、単純計算なら
256個のサンプルを取り込むまでキチンと周波数の
解析が出来ないのでは?ということ。
言い換えると、256点取り込むのにどのくらいの
時間が掛かるのか… それが問題。

ナイキスト周波数を800Hzとするなら、サンプリング
周波数は1600Hz。ってことは、
(1÷1600Hz)×256点=0.16秒

弦を弾いてから256点取り込み終わるまで0.16秒
かかるということ。うーん。FFTをどれだけ早く
処理し終えても、その元ねたであるサンプリングが自体
が0.16秒遅延するのか…うーん。

256点サンプルとする時点で遅延の長さは避けられない
わけなんだなぁ。うーん。
SRAMが潤沢に使えるならアレコレ選択肢はあるけど、
4KBの制約は結構でかいなぁ。

もっと工夫が要るのかな?

1本の弦からの信号をさらに高音・低音に分けて
サンプリング、そいつらにそれぞれFFTを掛けるとか。

いや、もしかしたら128点や64点に減らすことで
パート毎のSRAM消費量は減らしつつ、周波数分解能
は据え置きで、遅延時間だけ短くすることもできる
のかなぁ?リクツから言えば…。

制御はやたらと面倒くさくなるだろうけど。1つの
弦から複数に分けて読み込むわけだから、各回路(LPF)
も、各ナイキスト周波数にあわせていっぱい用意する
必要ができちゃうからなぁ…ソフト的にもハード的にも
結構メンドウ。

ふと、クリップ式のクロマチックチューナーを探してみる。
こいつらも、結構細かい周波数分解能が必要なはず。
中身はデジタル回路のFFTだろうと。

大きさから考えると、かなり小さいマイコンで処理
してそうな感じ。なんか糸口がありそうな…

ただよく考えると、チューナーってそもそも遅延時間
は結構大きかったような。
うーん。256点どころではなく、もっとたくさんの
サンプルを取って、時間掛けて変換しても問題ない
製品だもんなぁ。目指す方向がちょっと違うかも。

ROLANDのGR-20GKのレビューも見てみる。
うーん、「微妙な遅延」かぁ。微妙な遅延があるっていう
のが製品レベルでも存在するってことか。

そう簡単には片付かないってことかもしれんなぁ…
頑張ろう。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




制約事項を色々とアタマに浮かべながら、さらに作戦
を練りつづけてみる。

256点サンプリングで単純に全レンジの周波数解析
を行うとすると、どうしても周波数分解能が物足りない…

かと言って、4KBのメモリでは4チャンネル別々の
周波数帯でFFT掛けるほどの余力もないだろうし、
ADCトリガの割込み制御も複雑になっちゃうし、
ADC取り込みのタイミングとFFT時の読み出し
タイミングの制御も難しくなるし…

512点に増やすのも無理。

と色々な制約事項を念頭に、表計算ソフト上で
あれこれシミュレーション。一つの案が出来た。

実数値の数値列2セットを一度にFFT掛けて分離、
それを2度行えば4系列のFFTが可能なので、
それぞれのナイキスト周波数をちょっとずらして
設定してしまえば、各弦用に必要な周波数分解能は
確保出来そうだと見えてきた。

低音側2弦のナイキスト周波数は800Hz程度に、
高音側2弦は1200Hz程度に。

その辺で設定すればまぁまぁなスペックが確保
できるんじゃないかなぁ?あとは4KBの
SRAMに入りきるか、処理が間に合うか、
その辺かな…

もうちょっと色々検討してみよう。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする