Skip to content

DSP 実装解説 ​

このページは、各 DSP ファミリーが内部で何をしているかを説明します。

次の 3 つのリファレンスページを補完します。

ページ役割
マスタリングプロセッサ公開プロセッサのレジストリ
アルゴリズム根拠標準規格、アルゴリズム名、互換性参照
実装検証機能グループとテストの対応

UI にプロセッサを出す前、リアルタイム設定を選ぶ前、レンダリングレポートを説明するときの実装レベルの資料として使います。

記述の根拠は libsonare リポジトリの C++ 実装です。

領域ソース
DSP 実装src/analysis、src/feature、src/mastering、src/effects、src/mixing、src/engine
マスタリングプロセッサの公開名src/mastering/api/named_processor_registry.cpp
解析・特徴量ヘルパーquick API と各言語バインディング

初めて読む場合

このページは実装寄りなので、最初から全部を理解する必要はありません。まず「DSP は音声を数値列として扱い、測る・分ける・変形する処理の総称」と捉えてください。表の「主な用途」を読み、自分が使う処理だけ詳しく見れば十分です。

たとえば BPM を知りたいだけなら 解析と特徴量 DSP を、ラウドネスや配信用の仕上げをしたいなら マスタリングチェーン と 最終段とマキシマイザー を読む、という使い方で構いません。

目的別のプロセッサ ​

目的まず見るもの
ラウドネスの目標に合わせるチェーンのラウドネススロット、またはファイル全体なら maximizer.loudnessOptimize。最終段とマキシマイザーを参照
ピークをシーリング以下に収めるmaximizer.truePeakLimiter または dynamics.brickwallLimiter
ダイナミクスをそろえるダイナミクス
音色を整えるEQ と スペクトル処理とステレオ処理
ノイズ、ハム、クリック、クリッピングを取り除くリペア
空間や動きを加えるエフェクトと編集 DSP と モジュレーション・ディレイ・フィルター・ユーティリティのインサート
ステレオの幅を広げる・狭める・確認するスペクトル処理とステレオ処理
リファレンスに合わせるリファレンスマッチングと解析
BPM、キー、コードを知る解析と特徴量 DSP

このページで身につくこと ​

このページを読むと、次のことを判断・説明できるようになります。

  • 解析、エフェクト、マスタリング、ミキシング、リアルタイム処理を支える共通 DSP 構成要素を特定できる。
  • 公開プロセッサ名と、それを実現する低レベル実装部品の違いを説明できる。
  • ルックアヘッド、アロケーション、FIR 再構築、スムージング、レイテンシなど、リアルタイム上注意すべき実装点を見つけられる。
  • 挙動を検証したいときに、どのソースディレクトリを見るべきか判断できる。

読み進め方 ​

知りたいこと読むページ
公開プロセッサ ID とプリセット名マスタリングプロセッサ
DSP の内部挙動、共通構成要素、リアルタイム境界このページ
標準規格、論文、互換性参照アルゴリズム根拠
テスト範囲と検証状況実装検証

共通の構成要素 ​

多くのプロセッサは、それぞれがまったく独自の仕組みで動いているわけではありません。フィルター、レベル検出、遅延、ステレオ変換、畳み込みといった小さな部品を組み合わせています。下の表は、その部品がどこで使われるかを示します。

構成要素実装上の役割主な利用箇所
バイクアッドとフィルター設計低レイテンシの IIR EQ、シェルフ、カット、プレゼンス/エア処理、検出器用フィルターEQ、ダイナミクスのサイドチェイン、スペクトル系、ステレオ系
エンベロープフォロワーレベル検出とゲイン変化のアタック/リリース平滑化。各時間は 1 時定数で、設定時間で約 63% に達するコンプレッサー、エキスパンダー、ゲート、ディエッサー、ボーカルライダー、リミッター
パラメータスムーザーブロック処理中のクリックを避けるパラメータ遷移。グライドはどのサンプルレートでも目標値にぴったり収束し、途中で中断されたグライドは適用済みの値から再開するマスタリングプロセッサ、ミキサーのストリップ制御、オートメーション
ルックアヘッドとスライディング最大値先読みを使ったピーク制御ブリックウォールリミッター、True Peak リミッター、マキシマイザー
オーバーサンプリングと True Peak フィルターサンプル間ピーク(ISP)推定とエイリアシング対策リミッター、クリッパー、サチュレーション、最終出力
ディレイライン時間合わせ、Haas 拡張、モジュレーションディレイ、ダッキングの整列ステレオ処理、ディレイ、モジュレーション、ミキシングのアラインメント
Mid/Side 変換中央成分と側成分を分けて処理Mid/Side EQ、イメージャー、モノメーカー、ステレオバランス
パーティション畳み込み長いカーネルやインパルス応答(IR)をブロック単位で効率よく処理コンボリューションリバーブ、リニアフェイズ EQ、マッチ EQ
ノイズトラッカーと LPC ヘルパー古典的なノイズプロファイル追跡と LPC 残差/再構成の補助denoise は NoiseTracker、declick/declip は LPC ヘルパーを使う
ビルディングブロックの平易な解説
  • ルックアヘッド: オーディオを少し遅らせ、ピークが鳴る数ミリ秒前に「先読み」して、急に潰すのではなく滑らかにゲインを下げます。代償はわずかなレイテンシです。
  • True Peak 補間: オーバーサンプリングした再構成フィルターで、保存されたサンプル間のピークを推定します。規定の再構成特性を近似する測定であり、個々の DAC のアナログ出力を測るものではありません。
  • 非線形処理のオーバーサンプリング: 歪みを生むプロセッサを高いレートで動かし、元のレートへ戻す前にフィルターをかけて折り返しを減らします。True Peak の測定とは別の用途です。
  • ミッド/サイド(M/S): ステレオ信号をミッド(モノラルの中央)とサイド(左−右の差分)に変換し、中央と広がりを別々に処理してから戻します。
  • パーティション畳み込み: 畳み込みはある信号の「指紋」を別の信号に適用する処理です(部屋のインパルス応答やリニアフェイズ EQ など)。長いフィルターをブロックに分割し、リアルタイムでも効率よく動かします。
  • Haas ワイドニング: 片チャンネルへの非常に短いディレイ(約 40 ms 未満)で、エコーではなくステレオの広がりとして聞こえます。
  • LPC(線形予測符号化): あるサンプルを直前のサンプル群から予測するモデル。リペアでは、クリックやクリップしたピークが本来どうだったかを再構成するのに使います。

解析と特徴量 DSP ​

解析側、すなわち MIR(music information retrieval。テンポ、キー、コードといった音楽的な情報を音声から取り出すこと)は、1 つの巨大なアナライザーではなく、再利用できる特徴量段の組み合わせで構成されています。STFT(短時間フーリエ変換)とフレーム処理は、メル/MFCC、クロマ、オンセット包絡線、テンポグラム、セクション特徴量に使われます。一方、YIN 系のピッチ追跡は波形の周期性から求めます。差分計算を FFT で高速化していても、キャッシュ済みの STFT スペクトログラムとは別の計算です。高レベル解析は、可能な範囲でこれらの表現を共有します。

初心者向けに言い換えると、解析はだいたい次の流れです。

  1. 音声を短い窓に区切る。
  2. 目的に合わせて、スペクトルや F0 用の周期性指標を求める。
  3. 目的別の要約を作る。リズムを見るならオンセット、ハーモニーを見るならクロマ、音色を見るならメルや MFCC、メロディを見るならピッチの時間変化を使います。
  4. BPM、キー、コードなどの高レベルな結果を、それらの要約から推定する。
ファミリー実装上の役割主な用途
STFT とフレーミングオーバーラップする窓への FFT と、共通の frame/hop 規約スペクトル、クロマ、オンセット、メル、MFCC の基盤
メル / MFCCメルフィルタバンクと DCT 系のケプストラム圧縮。任意でケプストラルリフタリング(lifter。既定は 0 で無効)ML 特徴量、音色サマリー、librosa 互換ワークフロー
クロマ / CQT / VQT / NNLS クロマピッチクラス表現と対数周波数表現。定Qクロマグラム(chromaCqt)を含むキー、コード、ハーモニー類似度、ピッチを考慮した特徴量
オンセット / テンポグラム / PLPオンセット包絡線と局所周期性の表現BPM、ビート、リズム、パルス解析
ピッチ追跡YIN / pYIN 系の F0 推定メロディ抽出と単音ピッチ解析
逆変換特徴量非負最小二乗(NNLS)によるメルフィルタバンク逆変換、逆 DCT による MFCC の復元、Griffin-Lim 音声合成デバッグ用プレビューと特徴量の往復確認
ルーム音響解析IR の energy decay curve 指標、通常録音向けの自由減衰フィット、等価ルーム推定、鏡像音源法による RIR 合成、ルームモーフィングRT60、EDT、C50、C80、D50、バンド別減衰、体積、寸法、吸音率、DRR、生成 RIR、信頼度

特徴量の逆変換、ブラインド音響推定、等価ルーム推定は有用ですが、いずれも推定です。逆変換ヘルパーは失われた位相やメル/MFCC の細部を復元できません。ブラインド音響モードとルーム推定は、通常録音に明確な自由減衰区間が含まれるとは限らないため、信頼度を返します。

マスタリングチェーン ​

masteringChain(...) は、構造化された設定から固定のプロセッサチェーンを組みます。同じ設定と入力からは常に同じステージ順と同じ出力が得られ、実行ごとのばらつきはありません。ここでいう「決定的」とはこの性質を指します。

ストリーミング版の StreamingMasteringChain も同じステージを同じ順で実行しますが、ブロック間で各プロセッサの状態を保持するため、ライブ処理にも使えます。

高レベルのワークフローには、オフライン前提のプロセッサも入ります。リアルタイムレンダーの可否は各プロセッサの契約に従います。バッファ再確保や FIR カーネル再構築を伴う変更は、audio thread safe ではありません。

プリセットは別の DSP アルゴリズムではありません。リペア、EQ、ダイナミクス、サチュレーション、スペクトル処理、ステレオ、マキシマイザー、ラウドネスの各スロットから処理を選び、ジャンルや配信先向けの値を設定したものです。

固定のスロット順はリペア → EQ → ダイナミクス → サチュレーション → スペクトル処理 → ステレオ(ステレオ経路のみ) → マキシマイザー → ラウドネスです。設定でスロットを省略できますが、順番は変えられません。チェーン全体の図には、全スロットとプリセットで有効になる処理を示しています。ラウドネス段には正規化後に働く True Peak リミッターがあるため、プリセットでは別のマキシマイザーリミッターを重ねていません。そのゲインは候補ゲインで信号を測り直して解くので、ゲインによって絶対ゲートをまたぐブロックがあっても、ゲート後のラウドネスターゲットに着地します。ストリーミングチェーンは同じゲインを streamingLoudnessGain から受け取ります。

すべてのインサートはレイテンシとテールを報告します。テールは入力が止まった後に出力が鳴り続けるサンプル数で、フルスケールの 1e-5 まで数えます。リバーブだけでなく、IIR EQ、フィルター、サチュレーション、ステレオ系インサート、モジュレーションディレイ、オーバーサンプリング段、マルチバンドのクロスオーバーも対象で、バウンスやフリーズの長さはここから決まります。オフにしてからオンに戻した段は、保持していた履歴を再生せず静止状態から始まります。set_config は値が変わった段だけを作り直し、設定が拒否された場合はプロセッサを元のまま残します。

ダイナミクス ​

プロセッサ実装主な用途リアルタイム上の注意
dynamics.brickwallLimiterルックアヘッドピーク検出、素早いゲインリダクション、シーリング制御サンプルピークを上限以下に抑える先読みレイテンシがある。ストリーミング前に prepare すれば扱いやすい
dynamics.compressorフィードフォワード検出、アタック/リリースエンベロープ、レシオ/ニーのゲイン計算、メイクアップゲインマスター全体のダイナミクスを整え、一体感を出すパラメータ変化は平滑化してジッパーノイズを避ける
dynamics.deesserバンドパスフィルター、しきい値、レシオ、アタック/リリース、レンジ、bandpass Q を持つ split-band de-esser高域の歯擦音エネルギーを減衰これらのパラメータはアロケーションや状態リセットなしでオートメーション可能
dynamics.expanderしきい値以下をエンベロープ検出で下向きに拡張小さい被りやノイズを下げてコントラストを出すリリース時間が聴感を大きく左右する
dynamics.gateヒステリシスを持つ開閉判定でゲート処理無音部や背景ノイズの抑制ホールド/リリースでチャタリングを避ける
dynamics.limiter高レシオで短い時定数のピーク向けコンプレッサー最終段前の短いトランジェント捕捉ブリックウォールより低レイテンシだが絶対的ではない
dynamics.parallelComp圧縮経路とドライ経路をブレンドトランジェントを残しながら密度を足す共有のコンバイナーがすべての並列経路を最長の遅延に揃えて報告するため、ブレンドは位相が揃ったまま
dynamics.sidechainRouter外部または派生した制御信号を検出器へルーティングサイドチェイン依存のコンプレッションやダッキング高度なグラフ向けの内部寄りヘルパー
dynamics.duckingProcessorキー信号のエンベロープでプログラム音を下げるナレーション時の BGM ダッキング、配信/放送系ミックスアタック/リリース形状が明瞭度を決める
dynamics.transientShaperアタックとサステインのエンベロープを分けて独立ゲインを適用打音を強調または柔らかくする高速検出経路はブロックサイズの影響を受けやすい。ゲインリダクションを報告する
dynamics.upwardCompressor大きい音を下げる代わりに、しきい値以下を持ち上げる細部と密度を増やすノイズフロアも上がりやすいので必要に応じてデノイズやゲートと併用する
dynamics.upwardExpander低めのしきい値以上の素材を強調し、静かな部分は低いまま残すハードゲートより自然にアーティキュレーションを戻すアンビエンスの多い素材に向く
dynamics.vocalRider遅めのエンベロープでボーカルレベルを目標レンジへ寄せるボーカルやスピーチの自動レベルライドピークリミッターではなく、ゆるやかなゲインオートメーションとして扱う。ゲインリダクションを報告する
ダイナミクス用語: ニー・メイクアップゲイン・サイドチェイン・ダッキング
  • ニー(knee): しきい値付近で入力と出力の関係がどう変わるかを決めます。ハードニーはそこでカーブの傾きが変わり、ソフトニーは一定の幅で圧縮後の傾きへ移ります。ゲインがそのカーブに追従する速さはアタックとリリースで決まります。
  • メイクアップゲイン: コンプが大きい部分を下げると全体が小さくなるので、メイクアップゲインで同等のレベルまで持ち上げます。結果として以前より均一になります。
  • サイドチェイン: プロセッサのレベル検出に別の信号を入れ、その信号に反応させる仕組みです。
  • ダッキング: サイドチェインの定番用途。声(キー信号)があるときに音楽ベッドが自動的に下がり、声が止むと戻ります。
  • ブリックウォールリミッター: レシオが非常に高く反応も速いリミッターで、シーリングを一切超えさせません。まるで壁にぶつかるように止めます。

EQ ​

プロセッサ実装主な用途リアルタイム上の注意
eq.bandPassバイクアッドのバンドパスフィルター周波数帯域の切り出し低レイテンシ
eq.cutFilterスロープ指定できるハイパス/ローパスランブル、ヒス、不要帯域の除去低レイテンシの IIR 経路
eq.dynamicエンベロープ検出で動く EQ バンド特定帯域だけの圧縮/拡張検出器の時定数を平滑化する
eq.equalizer検証、ルーティング、スペクトラム補助を持つマルチバンド EQ エンジン補正 EQ と音作りIIR 経路はライブ向き
eq.graphic固定バンドのグラフィック EQ予測しやすい帯域で大まかな音作り低レイテンシ
eq.linearPhaseFIR/リニアフェイズ系の EQ 経路位相を保ったマスタリング EQレイテンシがあるため、オフラインまたはレイテンシ許容のストリーミング向き
eq.midSideL/R を M/S に変換し、それぞれへ EQ をかけて戻す中央とサイドの帯域を別々に整えるステレオ入力とモノラル互換性の確認が必要
eq.minimumPhaseミニマムフェイズ EQ トポロジー低レイテンシを重視するマスタリング EQライブ経路で優先しやすい
eq.parametricピーク、シェルフ、カットのパラメトリックバンド精密な補正 EQ低レイテンシ
eq.passiveTubelow boost、low attenuation、high boost、high attenuation、component model、output drive を持つ passive-style program equalizer低域/高域のプログラム EQ多くのコントロールはオートメーション可能。component model はオートメーション対象外
eq.shelvingロー/ハイシェルフフィルター指定周波数の上下を持ち上げる/下げる低レイテンシ
eq.steppedProportionalQ4 バンドのステップ式 proportional-Q バイクアッド EQ周波数とゲインを段階的に指定する音色整形係数をインプレースで変更し、ゲインは 2 dB 刻み、ゲインの絶対値が大きいほど Q が狭くなる
eq.tiltピボット周波数を中心に低域と高域を相補的に傾ける明るい/暗いの大まかなトーン調整プリセットやアシスタント提案で使いやすい

最終段とマキシマイザー ​

プロセッサ実装主な用途リアルタイム上の注意
final.bitDepth指定ビット深度へ量子化ビット深度削減のプレビューや書き出し通常は最後または最後付近
final.dither量子化前に低レベルノイズを加える量子化歪みを目立ちにくくする書き出し段の処理
final.outputChain出力ゲイン、シーリング、ビット深度、ディザー、最終チェックをまとめる書き出し直前の整理トーンやダイナミクス処理の後に置く
maximizer.adaptiveRelease信号に応じてリミッターのリリースを変化させるパンピングを抑えながらラウドネスを上げる検出器の状態を持つ。既定で 129 サンプルのレイテンシを報告する
maximizer.loudnessOptimizeラウドネスを測定し、目標に向けたゲイン戦略を適用配信/放送向けの LUFS(フルスケール基準のラウドネス単位)目標へ合わせるファイル全体の最適化はオフライン処理
maximizer.maximizerシーリング管理付きのラウドネス向けリミッティング知覚上の音量を上げる強い設定では後段の True Peak 保護が重要
maximizer.softKneeMaxハードな上限前にソフトニーのリミッティング曲線を使う急なリミッティング感を抑える最終 True Peak 保護の前段に向く
maximizer.truePeakLimiterオーバーサンプリングによる True Peak 推定とシーリング制御。出力ガードが補正で持ち上がり得る過去の位置をすべて再確認するため、短いバーストでもシーリングを守るサンプル間ピークを避ける計算コストと先読み系レイテンシがある(既定で 129 サンプル)。実行中にシーリングを下げると、すでにキューにある出力も再評価される
METERS · LOUDNESSIDLE
ラウドネス計測 — LUFS・True Peak・レンジ

バーは再生中の瞬時ラウドネスを追い、パネルは時間ごとのラウドネスです。インテグレーテッド LUFS は全体を表す一つの数値、True Peak はサンプル間も含むピークの推定値、LRA はラウドネスの動く幅を表します。ウィンドウを切り替えると、速い瞬時メーターと滑らかな短時間メーターを比べられます。どちらもウィンドウが埋まってから値を出すため、短時間の曲線はクリップの 3 秒後から始まります。

ウィンドウ

マルチバンド ​

プロセッサ実装主な用途リアルタイム上の注意
multiband.compressorクロスオーバーで帯域分割し、各帯域を圧縮して再合成帯域別のダイナミクス制御クロスオーバー設計とレイテンシ補償が重要
multiband.dynamicEq帯域ごとにダイナミック EQ 的な挙動を適用。再び有効にした帯域は、検出器・EQ スロット・ゲインのグライドを静止状態から始め直す共鳴や刺さる帯域だけを動的に抑える検出器の平滑化が必須
multiband.expander帯域ごとにしきい値以下を拡張帯域別のノイズ除去やコントラスト調整やりすぎると音色バランスが変わる
multiband.imager帯域ごとのステレオ幅/Mid/Side 処理低域を中央に保ち、高域を広げる必ずモノラル互換性を確認する
multiband.limiter再合成前に帯域ごとのリミッティング。先読みやオーバーサンプリングが異なる帯域は時間が揃えられる帯域別ピークの捕捉クロスオーバー由来の違和感を避ける
multiband.saturation帯域ごとの非線形ドライブとブレンド周波数帯ごとに倍音の色を足すオーバーサンプリングまたは控えめなドライブでエイリアシングを抑える

リペア ​

プロセッサ実装主な用途リアルタイム上の注意
repair.declick孤立したインパルス状の不連続を検出し、補間または減衰クリックや小さなデジタル欠陥の除去検出窓に局所的な前後文脈が必要
repair.declipクリップした領域を推定してピークを再構成ハードクリップした音声のリペア文脈を使うためオフライン向き
repair.decrackle密な小インパルスを追跡して滑らかにするレコード的なクラックルの軽減単発クリック除去より重い。因果的で、リアルタイムインサートとしても使える(median モード)
repair.dehumハムの基本周波数と倍音をノッチ系で抑える電源ハムの除去周波数が分かっていれば低レイテンシ。リアルタイムインサートとしても使える
repair.denoiseClassicalノイズ追跡とスペクトル減衰定常的な背景ノイズの低減プロファイル推定は文脈依存。リアルタイムインサートとしても使え、報告されるレイテンシだけ遅れる。ストリーミング向けノイズ推定器(既定は spp)を使う
repair.dereverbClassicalt60_sec、late_delay_ms、over-subtraction、spectral floor、任意の WPE 設定を持つ STFT ドメインの残響除去設定部屋鳴りやにじみの軽減ファイル単位 API として新しい Audio オブジェクトを返す。マスクをチャンネル間で連動させるリアルタイムインサートとしても使える
repair.trimSilenceしきい値による先頭/末尾の無音除去書き出しやバッチ素材の整理ライブインサートではなくファイル単位のユーティリティ

repair.decrackle、repair.dehum、repair.denoiseClassical、repair.dereverbClassical は因果的で、リアルタイムインサートとして動作します。同じ設定ならオフライン関数と同じ結果になり、インスタンスが報告するレイテンシだけ遅れます。オフライン専用の設定(wavelet モード、WPE、クォンタイル推定器)は名前を挙げて拒否されます。repair.declick、repair.declip、repair.trimSilence は因果的ではなく、オフライン専用です。

サチュレーション ​

プロセッサ実装主な用途リアルタイム上の注意
saturation.ampSimプリアンプドライブ → トーンスタック → 任意のパワーアンプ(sag/トランス/NFB) → キャビネット特性ギター/ベースアンプ系の色付けインサートcab/cabModel/ampModel の離散トポロジー選択はオートメーションではなく構築時に指定する。パワー段の半サンプルの遅延と 2 本目のマイクの経路差は常に計上されるため、報告レイテンシはオートメーションで動かない
saturation.bitcrusherビット深度やサンプルレートを粗くする劣化処理ローファイ質感出力ゲインを管理する
saturation.exciter高域の倍音生成とブレンド明るさと細部感の追加すぐに刺さるため控えめに使う
saturation.hardClipperハードな非線形伝達曲線攻撃的なピーク削りと歪みオーバーサンプリングまたは控えめなドライブを使う。ADAA の半サンプルは報告され、ブレンドのドライ経路はそれに合わせて遅らされる
saturation.multibandExciter帯域分割したエキサイターと帯域別ブレンド低域を濁らせずにきらびやかさを足すクロスオーバーとドライブ配分が重要
saturation.overdrive720 Hz でハイパスしたクリップ経路をゲインとソフトクリップに通し、原音と合算する。クリップはホストの 2 倍のレートで、反微分アンチエイリアシングの後ろで動き、続いて 1 次のトーンローパスと出力レベルがある低域を保ったまま軽くつぶすリアルタイムのマルチチャンネルインサート。報告レイテンシにオーバーサンプラーとアンチエイリアシングの遅延を含む
saturation.distortionゲイン、ゲイン帯域幅によるローパス、間に結合ハイパスを挟んだ 2 段のハードクリップ。オーバーサンプリング、トーン、レベルの構成は同じより強く引き締まった歪みリアルタイムのマルチチャンネルインサート。レイテンシの計上はオーバードライブと同じ
saturation.softClipper滑らかな非線形曲線穏やかなピーク丸めマキシマイザー前段で使いやすい
saturation.tapeトーン変化と緩いコンプレッションを伴う非線形サチュレーション(微小信号応答は桁落ちなしで評価)テープ的な密度ドライブで音量と音色が同時に変わる
saturation.transformer低次倍音の色付けと軽いサチュレーション(微小信号応答は桁落ちなしで評価)アナログ的な厚みマスタリングでは通常さりげなく使う
saturation.tube非対称の非線形伝達で音楽的な倍音を強調温かさ、ボーカルや楽器の色付けDC と低域のふくらみに注意
saturation.waveshaper設定可能な非線形伝達曲線汎用的な歪みと色付けパラメータ平滑化でクリックを避ける

スペクトル処理とステレオ処理 ​

プロセッサ実装主な用途リアルタイム上の注意
spectral.airBand高域シェルフ/エキサイター的な強調プレゼンスより上のエア感を足す歯擦音が増える場合はディエッサーと併用する
spectral.lowEndFocus低域の形とまとまりを整えるベースを締め、濁りを減らすモノラル互換性が重要
spectral.presenceEnhancerプレゼンス帯域の整形と細部強調ボーカルやリードの前に出る感じを改善マスキングに注意し、かけすぎない
spectral.spectralShaper広いスペクトル傾向の補正音色の輪郭合わせや耳につく帯域の緩和中庸な設定ほど透明に効く
stereo.autoPanLFO によるパン移動クリエイティブな動きマスタリング用の中立な処理というより演出向け
stereo.binaural測定 HRTF による仮想スピーカー配置。スピーカー用クロストークキャンセルと方位移動にも対応ヘッドホンまたはスピーカーの仮想空間へステレオペアを配置ステレオペア用プロセッサ。レイアウト変換、部屋、ヘッドトラッキングまで必要なら完全な PlaybackRenderer を使う
stereo.haasEnhancer短い左右差ディレイで幅を作る見かけのステレオ幅を広げるモノラル互換性を下げることがある
stereo.imagerMid/Side の幅ゲインと必要に応じた帯域別の処理ステレオイメージを広げる/狭める相関値とモノラルサムを確認する
stereo.monoMakerクロスオーバー以下をモノラル化低域を中央に安定させる最終リミッター前によく使う
stereo.phaseAlignディレイ/極性系の整列補正ステレオ位相関係の改善聴感または測定で慎重に確認する
stereo.stereoBalanceL/R または M/S のバランス調整左右に寄ったイメージの補正低レイテンシ

リファレンスマッチングと解析 ​

名前実装主な用途
match.applyMatchEqソースとリファレンスのスペクトル差から得た EQ カーブを適用音色バランスをリファレンスへ近づける
match.alignReferenceToSourceソースに対するリファレンスの遅延を推定して補正A/B 比較やマッチ EQ の信頼性を上げる
match.abSwitchソースとリファレンス経路を切り替える比較試聴
match.abCrossfadeソースとリファレンスをクロスフェードするクリックなしの滑らかな比較
match.referenceLoudnessリファレンスのラウドネスメトリクスを測るレベルを揃えた比較
match.tonalBalance帯域エネルギー分布を比較大まかな音色比較
match.tonalBalanceLogBands対数帯域で音色バランスを比較聴感に寄せたリファレンス比較
match.matchEqCurve補正 EQ カーブを推定マッチ EQ 設定の生成
match.estimateReferenceDelaySamplesサンプル単位の遅延候補を推定比較前のファイル整列
stereo.monoCompatCheckモノラル互換性メトリクスを計算位相やキャンセルの問題を検出
stereo.monoCompatCheckLogBands対数帯域ごとのモノラル互換性を計算ステレオ問題のある帯域を見つける

エフェクトと編集 DSP ​

DSP実装主な用途リアルタイム上の注意
HPSS / harmonic / percussiveスペクトル表現上のメディアンフィルターで、水平成分の倍音エネルギーと垂直成分の打撃エネルギーを分離リミックス、前処理、解析の整理ファイル全体のオフライン処理向き
タイムストレッチ位相ボコーダ系の処理ピッチを保って長さを変えるストリーミングではオーバーラップと状態管理が必要
ピッチシフトリサンプリングとタイムストレッチの関係を利用長さを大きく変えずに移調ボイスチェンジ経路でない限りフォルマントは保たれない
ピッチ補正ピッチ推定とターゲット MIDI ノートへの補正ボーカルや単音素材のチューニングモノフォニック素材に向く
ノートストレッチノート区間に対するリージョンベースのストレッチノートの長さ編集オフライン編集処理
ボイスチェンジピッチとフォルマントの制御。ピッチ段は正確に 2^(semitones/12) だけシフトする声質変換単純なピッチシフトより重い。モノラル/ステレオストリップ向けのリアルタイムインサート voice.changer でもある
正規化ピークまたは目標レベルへのゲイン調整レベル合わせ事前にゲインが分かる場合を除きファイル単位
無音 trim/splitしきい値によるセグメント化バッチ整理と素材準備ファイル単位のユーティリティ
リバーブインサートPlate/Dattorro、FDN、velvet、convolution、幾何ベースのルーム、ルームモーフィングミキサー/マスタリング insert graph 内の空間、残響、ルームモーフィングビルドフラグと IR 要件が処理ごとに異なる
モジュレーション/ディレイインサートコーラス、アンサンブル、フランジャー、フェイザー、ワウ、オートワウ、ロータリー、リングモジュレーター、ピッチシフター、ステレオディレイの DSP はソースモジュールとして存在クリエイティブ FX の構成要素インサートファクトリとシーンインサート経由で公開。すべての ID が汎用の masteringProcess / mastering_process レジストリからも呼べるが、専用のトップレベル JS/Python ヘルパー関数はない

リバーブインサートの提供条件

effects.reverb.plate / effects.reverb.dattorro、effects.reverb.fdn、effects.reverb.velvet、effects.reverb.convolution、モジュレーション/ディレイインサートには SONARE_HAVE_FX が必要です。effects.reverb.room と effects.acoustic.roomMorph には BUILD_ACOUSTIC_SIM も必要です。

アルゴリズムリバーブと幾何ベースのルームリバーブはストリーミング可能です。コンボリューションは insert params の base64 float32 IR を受け取るか、省略時に decaySec と seed から減衰ノイズの IR を合成します。

モジュレーション・ディレイ・フィルター・ユーティリティのインサート ​

これらのインサートは src/effects/ と src/mastering/utility/ の小さなモジュールから作られています。いずれもリアルタイムインサートで、パラメータはインサートエフェクトにあります。

プロセッサ実装主な用途
effects.modulation.chorusステレオコーラス。低周波発振器で揺らす分数ディレイラインで、前段に任意の 1 次セクションを置ける音を厚くして広げる
effects.modulation.ensembleチャンネルごとに 3 本のディレイタップを 120 度ずつずらし、遅い発振器と速い発振器で同時に変調する。帯域制限ありストリングマシン風の揺らぎ
effects.modulation.flanger変調ディレイにループを閉じた構成。フィードバックの符号がくし形フィルターの歯の位置を決めるくし形フィルターが掃引する動き
effects.modulation.phaser1 つのコーナーを共有する 1 次オールパス段のカスケードを原音とミックスする。2 段ごとにノッチが 1 つやわらかく掃引するノッチ
effects.modulation.wah発振器で掃引する共振バンドパスリズミカルなフィルター掃引
effects.modulation.autoWah入力のエンベロープで駆動する共振バンドパス演奏の強弱に反応するフィルター掃引
effects.modulation.rotary2 つのローターによるドップラーとトレモロ。各ローターは、加速と減速で別々の時定数を持って目標速度へ滑らかに移る回転スピーカーの動き
effects.modulation.pitchShifterクロスフェードする 2 本のディレイタップによる時間領域のシフター小幅で低レイテンシなデチューン
effects.modulation.ringModulator入力に正弦波キャリアを掛ける金属的で非倍音的な音色
effects.delay.stereoゼロレイテンシのステレオフィードバックディレイ。左右のラインがループに入り、パンした 2 本のフィードフォワードタップがモノラル入力を読むエコーとピンポン
effects.filter.vowel直接経路と並べた 3 本の並列バンドパス。前段に任意のドライブを置ける。1 つのコントロールで母音の間を連続的に動かす話し声のようなフィルターの動き
effects.gsEfxタイプを選ぶ GS インサーションエフェクトユニット。20 バイトの生パラメータを持つGS 用に書かれた MIDI のエフェクトタイプ
utility.gain広帯域のレベルトリムチェーン内のレベル合わせ

mixLaw を持つカタログ項目は 9 つあり、dryWet のときにドライ経路とウェット経路をどう重み付けするかを選びます。上の表のコーラス、アンサンブル、フランジャー、ピッチシフター、リングモジュレーター、ステレオディレイの 6 つに加え、Dattorro リバーブとそのエイリアスの plate、ビットクラッシャーです。ドライ/ウェットの混合法則を参照してください。

ミキシング DSP ​

ミキサーはルーティングであると同時に DSP です。

チャンネルストリップは、入力トリム、極性、アラインメントディレイ、パンロー、ステレオ幅、インサート処理、フェーダー、ミュート/ソロ、センド、メーターを扱います。

バスはルーティングされた信号を加算し、VCA グループは制御ゲインを適用します。メーターはピーク、RMS、LUFS 系の値、True Peak、ゲインリダクション、相関値、ゴニオメーターバッファを計算します。

オートメーションレーンはサンプル位置で管理され、linear、exponential、hold、s-curve の補間に対応します。トポロジー変更時はルーティンググラフをコンパイルします。音声処理経路では、コンパイル済みのグラフと事前確保された状態を使います。

リアルタイムエンジンとの境界 ​

RealtimeEngine は、トランスポート、テンポ同期、グラフ実行、クリップ再生、メトロノーム、キャプチャ、モニター実行、オフラインバウンス、テレメトリを担当します。

これはマスタリングプロセッサレジストリの置き換えではありません。リアルタイム安全な DSP ブロックを載せる、スケジューラ兼グラフランタイムです。

ファイル全体の解析、非因果的なリペア段(declick、declip、無音トリム)、ラウドネス最適化は、オフラインまたはレイテンシを許容する処理として扱います。因果的なリペア段(decrackle、dehum、denoise、dereverb)は、インサートとしてライブで動かせます。

リアルタイム処理では「今この瞬間の音を、次の音が来る前に処理しきる」必要があります。

そのため、次のような処理は向きません。

  • ファイル全体を見てから判断する処理
  • 巨大なバッファを作り直す処理
  • 上限がなく、事前確保もできない先読みを必要とする処理

上限付きで事前確保した先読みディレイならリアルタイムで動かせますが、その分のレイテンシは生じます。制約になるのはコールバックの期限と、状態を事前準備できるかどうかです。

逆に、EQ、簡単なゲイン、短いディレイ、状態を持ったコンプレッサーのような処理は、事前準備を済ませればリアルタイムに載せやすいです。

根拠 ​

このページは、名前からの印象ではなくソースに基づいて書きます。主に次の根拠を使います。

このページが使う根拠
根拠例
レジストリ公開プロセッサ名は src/mastering/api/named_processor_registry.cpp
ヘッダーコメントcompressor.h は soft knee と makeup gain を持つ feed-forward compressor と説明している。linear_phase.h は FFT-domain response から作る linear-phase FIR equalizer と説明している
設定フィールドTruePeakLimiterConfig は lookahead_ms、release_ms、oversample_factor、apply_gain_at_input_rate を持つ。DenoiseClassicalConfig は 3つのゲイン関数(LogMMSE、MMSE-STSA、spectral subtraction)と 3つのノイズ推定器(Quantile、MCRA、IMCRA)を持つ
実行時契約複数のプロセッサが、リアルタイム安全なパラメータと、バッファ再確保や FIR カーネル再構築が必要な変更を明示している
実装で使うヘッダーリペア系では declick/declip が LPC ヘルパーを使う。denoise は NoiseTracker を使う。コンボリューションリバーブとリニアフェイズ EQ はパーティション畳み込みを使う

「主な用途」は、プロセッサ名、設定、ヘッダーコメントから読み取れる想定用途です。ソースから確認できない隠れたモデル挙動は断定しません。