ずっと前から線形補間リサンプラーに我慢がならない状況が続いていたので作ることを考えていた。大雑把には貴家先生の『マルチレート信号処理』に従えばいいと考えていた。
実装に当たって考えたことは、
- なるべく高速な実装、でもエイリアシングはなるべく回避する。44.1k -> 48kをスムーズに変換したい。
- マルチステージ構成
- FIRフィルタ設計は窓関数法でいいかな(Remez法はワークメモリがいるのがつらい)
お役立ちリンク
- Free Resampling Software フリーのリサンプリングライブラリ集。実装し始めてから存在に気づいた。あるじゃん。
- The SoX resampler library soxの一部分。かなり使われているらしいリサンプラ
- 6: Window Filter Design 窓関数法。遷移幅から近似によりフィルタ次数を決める手法が載っている。
- 窓関数のダイナミックレンジと分解能 色々な窓がある。メインローブの太さとサイドローブの減衰が重要。
- わかりやすいリサンプリングとポリフェーズフィルタの解説。
- ポリフェーズフィルタの基本を知る
- ポリフェーズ・フィルタ
- 解説を見ていると、現在の計算方法(ダウンサンプル分出力を止める/アップサンプル分読み飛ばす)でよさそうな印象を受ける。
- ダウンサンプリング IIRの設計や最適なマルチステージ構成についても記述あり。
- 波ノート 音声に関する包括的な実験ノート。大ボリューム。
- SRC Comparisons リサンプラー性能比較。性能比較に使ったwavもある。入手すべき。