リサンプル設計

入力サンプリングレートを内部処理レートへ引き上げ、再び戻すレート変換段です。アンチエイリアシング等の帯域制限が存在するのはこの段であり、フィルタ特性を設計できるのもここだけです。

設計パラメータ

すべての項目を省略可能です。すべて省略した場合は出荷時既定の設計(直線位相のKaiser低域通過フィルタ)が適用されます。

欄何を決めるか範囲既定
pass_hz通過帯域の上端(ここまで平坦に通す)。絶対値[Hz]でも入口ナイキストに対する比でも書ける。Hz / of_nyquist20000
phase位相タイプ。linearは係数が対称で、群遅延は全帯域一定(=純粋な遅れ)。minimumはbulk delayを持たない代わりに対称でなくなる。グラフのfirは補間の後に掛かるので、この段のプリリンギングはここでしか避けられない。linear / minimumlinear
shape?上端より下に載せる整形。省略(null)なら素の低域通過。帯域制限そのものは外せない(それがpass_hzで、常に在る)。周波数は絶対値なので、これも入口段にしか掛からない。high_pass / band_stop—
stop_hz?阻止域の下端。省略(null)ならそのレートから導く(入口レート−通過帯域=第1イメージの立つ位置)。下げるぶんにはイメージ抑圧が改善するだけ。導出値より上へ動かすことだけを断る(resample.stopband_too_high)。入口段にしか効かない。Hz / of_nyquist—
stopband_db窓に要求する阻止域減衰[dB]。Kaiserとガウシアンではここから窓のパラメータが決まり、遷移幅と合わせてタップ数も決まる。これは要求であって結果ではない。実際に届いた抑圧は測られ、最低イメージ抑圧に届かない設計は断られる(resample.image_leak)。—120
tapsタップ数の決め方。auto / fixedauto
window窓の種類。stopband_dbからパラメータが決まるのはkaiserとgaussianだけで、残りは減衰が固定。弱いものは最低イメージ抑圧にそもそも届かない。kaiserとgaussianは同じタップ数で深さとリンギングを交換する。kaiser / hann / hamming / blackman / blackman_harris / gaussiankaiser

? = 省略できる欄

窓の種類

窓関数減衰量備考
kaiserstopband_db から自動算出指定した阻止域減衰量から必要なタップ数を自動算出します。同一タップ数であれば最も減衰が深く急峻になります(既定値)
gaussianstopband_db から自動算出Kaiserと同等の設計では約2倍のタップ数が必要です。同一タップ数では阻止域減衰が約3.5dB浅くなりますが、中心から離れた高周波の裾野ノイズは約7dB低くなります
blackman_harris約-92dB(固定)減衰量は固定。タップ数の明示的な指定が必要です
blackman約-74dB(固定)減衰量は固定。検証で要求される最低イメージ抑圧を満たせません
hamming約-53dB(固定)減衰量は固定。最低イメージ抑圧を満たせません
hann約-44dB(固定)減衰量は固定。最低イメージ抑圧を満たせません

stopband_db からパラメータが自動算出されるのは kaiser と gaussian のみです。その他の窓関数は減衰量が固定されており、減衰の足りない窓関数は必要とされる最低イメージ抑圧を満たせないため、タップ数をどれだけ増やしても検証で拒否されます。

位相

直線位相最小位相
位相特性帯域内の全域で位相ずれが発生しません可聴帯域内に位相ずれが生じます
遅延群遅延が一定(純粋なレイテンシのみ)群遅延による全体的な遅れがありません
インパルス応答時間対称(主インパルスの前後にリンギングが発生)プリリンギング(事前リンギング)が発生しません
タップ数奇数に制限(群遅延を整数サンプル長にするため)奇数・偶数の制約なし

レート変換カーネルによるプリリンギングを回避できるのは、このリサンプル段でのみです。グラフ内の各ノードは補間処理の後に適用されるため、そちらで最小位相を選択してもリサンプル段のプリリンギングには影響しません。

上端の書きかた

形式意味どんなときに
絶対値(Hz)指定した周波数がすべてのサンプリングレートで同一の位置になります。上限周波数は対象レートのうち最も低いもののナイキスト周波数に制限されるため、44.1kHzを含める場合は最大22,050Hzとなります全レートで一律20kHzにするなど、カットオフ上限を固定したい場合
入力ナイキスト比1.0 が入力音源の上端周波数(ナイキスト周波数)に対応します(44.1kHz音源なら22,050Hz、96kHz音源なら48kHz)音源のサンプリングレートに上限を追従させ、全レート共通の単一設計としたい場合

比率が1.0以下であれば、どのサンプリングレートであっても条件は常に満たされます。

指定方法固定されるもの変動するもの
自動通過帯域のみ。カットオフ周波数は各系列のナイキストに配置されますそれ以外のパラメータはレートに自動追従します(推奨)
遷移帯域幅で指定カットオフ周波数と遷移帯域幅必要なタップ数(両系列で同一の周波数応答形状になります)
タップ数で指定計算量(タップ数)遷移帯域幅(44.1k系と48k系の間で約8.8%変動します)

どの方法で指定しても、結果として生成・保存されるフィルタ係数の品質は同等です。パラメータの入力アプローチの違いであり、異なる設計になるわけではありません。なお、タップ数の指定が適用されるのは入口段(アップサンプル)のみであり、出口段(デシメーション)は自身の遷移帯域幅から自動で解き直されます。

設計を囲む欄

  • kind は、このファイルがリサンプル設計であることを示す識別子です。グラフファイルと混同しないために定義されています。
  • name は表示名です。システム上の識別子はグラフと同様にファイル名です。
  • targets は、適用を想定する入力レートの一覧です。空配列の場合は「全レート対象」を意味し、保存時に両系列について計算されます。
  • min_partition は、処理を想定する最小ブロック長の宣言です。フィルタ係数には影響せず、CPU負荷予測の表示基準を決定します。
  • spec_version は必須項目で、グラフの仕様バージョンとは独立して更新されます。
  • 設計ファイルはレートや係数を直接保持しません。

    処理段ごと・入力レートごとに動的に再計算されます。そのため、1つの設計ファイルで多様なレートの音源に対応できます。Hz表記の周波数とナイキスト比表記の周波数の意味が異なるのも、この動的計算によるものです。

  • 現在の再生レートを含まない設計は適用されません。

    出荷時の既定設計でフォールバック再生され、その旨が再生画面に通知されます。targets に該当レートを追加するか、全レート対応として宣言してください。