A05 BruteFIRで音を出す

室長:では前回の続きじゃ。BruteFIRとsoxはインストールされているな?

助手:超オーケーです。

室長:まずはbrutefirを起動して設定ファイルを作る。コマンドラインから

brutefir

とするだけじゃ。初回起動時に設定ファイルが無いと~/.brutefir_defaultが作られる。 次にフィルタ係数のテキストファイルを作る。filtertest1.txtという名前で

filtertest1.txt

0.5
-0.5
0
0.002

と数字4行のファイルを作る。 次にbrutefirの設定ファイルを作る。bruteconfig1.txtと言う名前で以下の内容を保存する。

bruteconfig1.txt

float_bits: 64;
filter_length: 512;

coeff "test1" {
  filename: "./filtertest1.txt";
};

input "lin","rin" {
  device: "file" { path: "/dev/stdin"; };
};

output "lout","rout" {
  device: "alsa" { device: "plughw"; };
  dither: true;
};

filter "ltest" {
  from_inputs: "lin";
  to_outputs: "lout";
  coeff: "test1";
};

filter "rtest" {
  from_inputs: "rin";
  to_outputs: "rout";
  coeff: "test1";
};

すべてのファイルがカレントディレクトリにあれば準備完了。まずテストをしてみよう。サンプル音声ファイルをtest1.wavとする。

play test1.wav

これで大抵の場合音が出るはずじゃ。次にbrutefirを通して音を聞いてみよう。

sox test1.wav -t .s16 - | brutefir  bruteconfig1.txt

どうじゃ?なにか聞こえたかな。

助手:おおっ。brutefirを通して聞くと低音が全然無くてシャカシャカした音になった。これがtap数4[0.5 -0.5 0 0.002]のfirフィルタを通した音なんですね。

室長:そのとおりなのだ。

助手:さっき入力したコマンドが良く解らないので少し解説してください。

室長:おお、そうじゃった。まずbrutefirじゃが初回起動時に~/.brutefir_defaultsと~/.brutefir_configの二つのファイルが作られる。 .brutefir_defaultsが標準のデフォルト設定のファイルだ。 .brutefir_configがメインの設定ファイルだが、最初は空っぽじゃ。 何のオプションもつけずにbrutefirを起動すると、.brutefir_defaultsの設定が読み込まれ、その後.brutefir_configの設定が上書きされ、実行される。 つまり.brutefir_defautsに書いてある設定は.brutefir_configに書く必要が無い。 足りないところ、変更する所だけ書けば良い。同じ項目があった場合、.brutefir_configのほうが優先されるわけだ。 また.brutefir_configではなく別のファイルを指定することが出来る。 今回の場合は.brutefir_configではなくオプションとして指定したbruteconfig1.txtの設定が使われる。 また-nodefaultオプションをつければ.brutefir_defaultsは読み込まれずにすべてメインのconfigファイルだけが読み込まれる。

助手:soxとの連携はどうなっているのですか?

室長:brutefirは音声入力デバイスだけでなく標準入力からの音声データを処理することが出来るのだ。inputで/dev/stdinを指定しているところがその設定じゃ。

助手:標準入力を指定するとなにかいいことがあるんですか?

室長:パイプといって別のソフトの標準出力を標準入力に継ぐ機能を利用できる。この機能のおかげでbrutefirはいろんなソフトと連携できるのだ。今回はsoxを使って音声を標準出力に出力している。’-‘というのがその設定だ。soxで標準出力を指定した場合には出力フォーマットを指定しなければならない。それが’-t’オプションだ。もとがCDなので.s16を指定してる。そして’|’がパイプじゃ。mpdも出力先を標準出力に指定できるのでbrutefirと連携する事が可能なのだ。それに比べてwindowsソフトのfoobar2000のプラグインとして作られたソフトは再生ソフトにfoobar2000しか使うことが出来んのじゃ。

助手:なるほど。それは便利ですね。

室長:例えば自作の音楽再生ソフトなどを作る場合にも標準出力に出力できる機能をつけておけば簡単にbrutefirを使えるわけだ。パイプには色々便利な使い方もあるのでlinuxを使うなら知っておいて損は無いぞ。

助手:ところで今回使ったフィルタの特性はどうなっているのですか?

室長:良い質問じゃ。それでは次回はフィルタの特性をグラフで見ることにしよう。

2012年12月09日