Skip to content

DSP 実装解説

このページは、各 DSP が内部で何をしているかを説明します。公開名の一覧である マスタリングプロセッサ、標準規格と互換性参照を分けてまとめた アルゴリズム根拠、テスト根拠をまとめた 実装検証 を補完するページです。

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

正本は libsonare リポジトリの src/analysissrc/featuresrc/masteringsrc/effectssrc/mixingsrc/engine 以下の C++ 実装です。マスタリングプロセッサの公開名は src/mastering/api/named_processor_registry.cpp に登録されています。解析・特徴量ヘルパーは quick API と各バインディングラッパーから公開されます。

初めて読む場合

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

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

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

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

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

読み進め方

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

根拠

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

根拠
レジストリ公開プロセッサ名は 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 と説明している
設定フィールドTruePeakLimiterConfiglookahead_msrelease_msoversample_factorapply_gain_at_input_rate を持つ。DenoiseClassicalConfig は 3つのゲイン関数(LogMMSE、MMSE-STSA、spectral subtraction)と 3つのノイズ推定器(Quantile、MCRA、IMCRA)を持つ
実行時契約複数のプロセッサが、リアルタイムセーフなパラメータと、バッファ再確保や FIR カーネル再構築が必要な変更を明示している
実装で使うヘッダーリペア系では declick/declip が LPC ヘルパーを使う。denoise は NoiseTracker を使う。コンボリューションリバーブとリニアフェイズ EQ はパーティション畳み込みを使う

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

共通の構成要素

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

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

解析と特徴量 DSP

解析側、すなわち MIR(music information retrieval。テンポ、キー、コードといった音楽的な情報を音声から取り出すこと)は、1 つの巨大なアナライザーではなく、再利用できる特徴量段の組み合わせで構成されています。STFT とフレーム処理が、メル/MFCC、クロマ、オンセット包絡、テンポグラム、ピッチ追跡、セクション特徴量の基盤になります。高レベル解析は、可能な範囲でこれらの表現を共有します。

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

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

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

マスタリングチェーン

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

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

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

プリセットは別の DSP アルゴリズムではありません。リペア、EQ、ダイナミクス、ステレオ処理、トゥルーピークリミッター、ラウドネス最適化を、ジャンルや配信先の既定値で組み合わせた名前付き設定です。

実用上は、マスタリングチェーンを「順番に通る処理の列」と考えると理解しやすいです。不要なノイズを直し、音色を整え、音量の暴れを抑え、左右の広がりを確認し、最後にピークとラウドネスを管理します。各段は単体でも意味がありますが、最終的な音は順番と設定の組み合わせで決まります。

ダイナミクス

プロセッサ実装主な用途リアルタイム上の注意
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.apiStyle一般的なバンド定義を受ける API 向け EQ ラッパーUI から扱いやすい安定した EQ 入口実際の 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.pulteclow boost、low attenuation、high boost、high attenuation、component model、output drive を持つ passive-style program equalizer低域/高域のプログラム EQ多くのコントロールはオートメーション可能。component model はオートメーション対象外
eq.shelvingロー/ハイシェルフフィルター指定周波数の上下を持ち上げる/下げる低レイテンシ
eq.tiltピボット周波数を中心に低域と高域を相補的に傾ける明るい/暗いの大まかなトーン調整プリセットやアシスタント提案で使いやすい

最終段とマキシマイザー

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

バーは再生中の瞬時ラウドネスを追い、パネルは時間ごとのラウドネスです。インテグレーテッド LUFS は全体を表す一つの数値、トゥルーピークはサンプル間も含む本当の上限、LRA はラウドネスの動く幅を表します。ウィンドウを切り替えると、速い瞬時メーターと滑らかな短時間メーターを比べられます。

ウィンドウ

マルチバンド

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

リペア

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

サチュレーション

プロセッサ実装主な用途リアルタイム上の注意
saturation.bitcrusherビット深度やサンプルレートを粗くする劣化処理ローファイ質感出力ゲインを管理する
saturation.exciter高域の倍音生成とブレンド明るさと細部感の追加すぐに刺さるため控えめに使う
saturation.hardClipperハードな非線形伝達曲線攻撃的なピーク削りと歪みオーバーサンプリングまたは控えめなドライブを使う
saturation.multibandExciter帯域分割したエキサイターと帯域別ブレンド低域を濁らせずにきらびやかさを足すクロスオーバーとドライブ配分が重要
saturation.softClipper滑らかな非線形曲線穏やかなピーク丸めマキシマイザー前段で使いやすい
saturation.tapeトーン変化と緩いコンプレッションを伴う非線形サチュレーションテープ的な密度ドライブで音量と音色が同時に変わる
saturation.transformer低次倍音の色付けと軽いサチュレーションアナログ的な厚みマスタリングでは通常さりげなく使う
saturation.tube非対称の非線形伝達で音楽的な倍音を強調温かさ、ボーカルや楽器の色付けDC と低域のふくらみに注意
saturation.waveshaper設定可能な非線形伝達曲線汎用的な歪みと色付けパラメータ平滑化でクリックを避ける

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

プロセッサ実装主な用途リアルタイム上の注意
spectral.airBand高域シェルフ/エキサイター的な強調プレゼンスより上のエア感を足す歯擦音が増える場合はディエッサーと併用する
spectral.lowEndFocus低域の形とまとまりを整えるベースを締め、濁りを減らすモノラル互換性が重要
spectral.presenceEnhancerプレゼンス帯域の整形と細部強調ボーカルやリードの前に出る感じを改善マスキングに注意し、かけすぎない
spectral.spectralShaper広いスペクトル傾向の補正音色の輪郭合わせや耳につく帯域の緩和中庸な設定ほど透明に効く
stereo.autoPanLFO によるパン移動クリエイティブな動きマスタリング中立というより演出向け
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 ノートへの補正ボーカルや単音素材のチューニングモノフォニック素材に向く
ノートストレッチノート区間に対するリージョンベースのストレッチノートの長さ編集オフライン編集処理
ボイスチェンジピッチとフォルマントの制御声質変換単純なピッチシフトより重い
ノーマライズピークまたは目標レベルへのゲイン調整レベル合わせ事前にゲインが分かる場合を除きファイル単位
無音 trim/splitしきい値によるセグメント化バッチ整理と素材準備ファイル単位のユーティリティ
リバーブインサートPlate/Dattorro、FDN、velvet、convolution、幾何ベースのルーム、ルームモーフィングミキサー/マスタリング insert graph 内の空間、残響、ルームモーフィングビルドフラグと IR 要件が処理ごとに異なる
モジュレーション/ディレイモジュールコーラス、フランジャー、フェイザー、ステレオディレイの DSP はソースモジュールとして存在クリエイティブ FX の構成要素現行の公開バインディングではトップレベルの単独 JS/Python ヘルパーとしては公開されていません

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

effects.reverb.plate / effects.reverb.dattorroeffects.reverb.fdneffects.reverb.velveteffects.reverb.convolution には SONARE_HAVE_FX が必要です。effects.reverb.roomeffects.acoustic.roomMorph には BUILD_ACOUSTIC_SIM も必要です。

アルゴリズムリバーブと幾何ベースのルームリバーブはストリーミング可能です。コンボリューションは、ネイティブ insert 作成経路で IR を渡す必要があります。

ミキシング DSP

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

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

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

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

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

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

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

ファイル全体の解析、完全なリペア処理、ラウドネス最適化は、オフラインまたはレイテンシを許容する処理として扱います。

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

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

  • ファイル全体を見てから判断する処理
  • 巨大なバッファを作り直す処理
  • 長い先読みを必要とする処理

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