Windows でリアルタイム信号処理?
昨日、Audacity と、C ででっち上げた信号処理コードで K2 の調整をしていたのですが、今日になって「やっぱり、リアルタイムで信号見られないと面倒だなあ」と怠惰な気持ちで妄想を始めました。イメージというか、したいことは以下のようなことです。
最初、Cygwin とか使って Windows のオーディオインターフェイスを触れないかと考えていたのですが、ちょっと面倒そうなことが分かりました。素直に Visual Studio Express とかインストールしたほうが良さそうですが、肝心な信号処理を始める前に、Windows SDK の習得あたりで脱落しそうです*1。MATLAB とか使えばできるのかなー、とか思って探してみたところ、以下のような記事を発見。どうも、Simulink とか使うと、MATLAB モデルから、リアルタイム処理のための C コードを生成したりできるみたいです。
しかし。MATLAB 買うほどの財力はないなあ、と思っていたら、こんなのを発見。
- http://newsgroups.derkeiler.com/Archive/Comp/comp.soft-sys.matlab/2008-07/msg01533.html
- http://www.playrec.co.uk/
Playrec というライブラリだそうで、GNU Octave と組み合わせてリアルタイム信号処理のコードを作れるらしい。素晴らしい。日本語の情報も見つけました。
もしかして私の探していたのは、実はこれなのではないか! と、ちょっと興奮しています。ちょっと勉強してみるかな。
Playrec ちょっと試してみた
Octave ですが、Cygwin 版でがんばろうと思ったのですが、Playrec コンパイルできませんでした。調査がメンドーなので、即あきらめ、素直に Octave Forge 版 3.0.3 をインストールしました。初めから Playrec は入ってきましたが、さすがにサンプルスクリプトは付いてなかったので、Playrec 本家からダウンロードしました。test_playrec を実行したら、ちゃんと動きました。spectrum_analyser は最初動かなかったのですが、これは引数を与えていないのが原因であることが判明。ちゃんと引数を与えたら動きました*2。おー、すごい。ちゃんとスペクトラムがリアルタイムでグラフ表示されます。ちなみに、ここまでは Visual Studio Express などインストールしなくても動いています。
目標は、FIR フィルタを動かして入力信号のパワーを表示することです。やっぱり、コンパイラは要るのかなあ。