サンプリング周波数変換

公開:2011-10-05 20:06
更新:2020-02-15 04:36
カテゴリ:dawもどきの作成,c++,windows,audio

会社の休み時間とか通勤時間にサンプリングレート変換について勉強していた。単純にデータを間引いたり、データを補完をするだけではダメなのであった。

考え方としては3つ。アップサンプリング・ダウンサンプリング・非整数倍のサンプリングレート変換である。

アップサンプリング

元のサンプリング周波数よりも高い周波数に変換する。元データ間に0を挿入するのが基本だが、そうするとイメージング成分が発生する。それを除去するために元のナイキスト周波数(サンプリング周波数/2)のLPFに通してイメージング成分を除去する。

ダウンサンプリング

元のサンプリング周波数よりも低い周波数に変換する。元データを適当に間引くのが基本だが、そうすると低い周波数では表現できない周波数成分が歪みとして出てくる。それを除去するために変換前に低いナイキスト周波数のLPFに通して歪みとなる周波数成分を予め除去する。

非整数倍のサンプリング周波数変換

変換元となる周波数と変換先の周波数と最小公倍数をとり、その周波数に1回アップサンプリングしてから、変換先の周波数にダウンサンプリングする。LPFは元・先のうち低い方の周波数のナイキスト周波数のLPFを1回通せばよい。

LPF

サンプリング周波数変換ではLPFが大活躍するのであった。なのでまずはLPFを作ることにする。

参考になりそうなリンク

Wikipedia

サンプリング周波数変換でできる効率的なFFT分析

任意レート変換 サンプリングレートコンバータ.