amafir_v0.12a_.tar.gz 現在のバージョンは0.12aです(2016年4月10日)

amafirは天の川オーディオ研究室で作成したソフトでfftライブラリとしてfftw3を利用してます。 fftw3のライセンスがGPLなのでamafirのライセンスもGPLとなります。

このソフトは2015年5月の時点でRaspberry Pi2でBruteFIRで多チャンネル出力しようとしると 安定動作しなかったので作成しました。現在のjessieでBruteFIRで多チャンネル出力が安定して 可能かは確認していません。

機能は単純で標準入力から32bit整数で2chのデータを読み込み、畳み込み積分を行い標準出力に 32bit整数8chのデータを送ります。

コマンドライン変数はフィルタ係数の入っているフォルダだけです。 このフォルダないにwisdomファイルを書き込むので、 amafirを実行するユーザーがこのフォルダに書き込めるようにしてください。

初回実行時にはwisdomを計算するので音が出るまで時間がかかります。

標準では16384tapの係数を畳み込んでいます。

これはamafir.cの #define N (8192*2) のところで定義してます。

Raspberry Pi2 で 32768tap以上にするのならば

make -f Makefile_openmp

としてOpenMPを有効にしてマルチスレッド対応にしてください。 forループをopenmpのコマンドで挟んだだけなので メインループ1回まわるたびにスレッドの生成と消失がおこるので 効率がよくありませんが、 問題なく動いているので改良する予定はありません。

x86で動かしてみたいという物好きな方は

make -f Makeile_x86

としてください。 Tap数を増やしてもたいていのCPUではシングルスレッドで問題無いはずです。

フィルタの係数はコマンドラインで指定したフォルダ内に置きます。 ファイル名は固定で

LF.txt
RF.txt
LS.txt
RS.txt
LB.txt
RB.txt
CF.txt

の7つです。

係数ファイルが存在していなければそのチャンネルの出力はゼロになります。

CFはサブウーファ用で (L+R)/2 に係数ファイルを畳み込んだものが出力されます。

係数ファイルの形式はテキストのみです。他形式のもの(pcmやwavなど)はGNU Octaveなどで テキストファイルに変更する必要があります。

係数ファイルがTap数より短い場合には後ろがゼロ詰めされます。
係数ファイルがTap数より長い場合にはTap数以降は捨てられます。

ファイルの終わりに改行がないと動作がおかしくなるので気をつけてください。

v0.12aで修正しました。fgetsの使い方を間違えていたのが原因です。恥ずかし〜。

係数のゲインなどチェックしてないので、レベルオーバーしないように フィルタの設計時に確認してください。
高価なツィーターを破損してしまう可能性があります。

2016年1月11日