理屈はじっくり勉強するとして、変換コードは早く組み込みたい。のでsoxを参考にすることにする。できればコードをそのまま使って実装したいところだ。
soxとは
soxはコマンドラインユーティリティである。あるフォーマットからあるフォーマットへのファイル変換を行う。その際さまざまなエフェクトをかけることができる。私は一回も使ったことはない。。
soxのビルド
バイナリはあるのだけれど、勉強のためにビルドすることにした。
soxの入手
soxのソースコード自体はgitレポジトリからcloneしてくれば入手できる。VC++10でコンパイルするためのソリューション・プロジェクトファイルも付いてくる。
周辺ライブラリのソースコード入手
プロジェクトには依存するライブラリのソースコードはついてこないので、入手する。すべてオープンソースのライブラリである。
プロジェクトの修正・ビルド
そのままビルドすると何個かリンカーでエラーが発生する。プロジェクトに追加するファイルが足りていないようである。エラーから必要なファイルを特定して追加する。これでビルドが完了する。
使ってみる
44.1KHzのWAVファイルを、48KHzに変換してみる。
H:\libs\sox\msvc10\Debug>sox "E:\wav_data\44.1Khz_ST\test.wav" "E:\wav_d ata\48Khz_ST\test.wav" rate 48k sox WARN rate: rate clipped 387 samples; decrease volume? sox WARN dither: dither clipped 334 samples; decrease volume?
少しwarningが出ているけれども変換できた。