Skip to content

チャンネル形式 ​

libsonare はシステム全体で mono・stereo・5.1・7.1 の 4 つのチャンネルレイアウトを認識しますが、各モジュールは異なる用途で作られているため、2ch を超えるチャンネル数の扱いはどこでも同じではありません。このページではその違いを整理します — どのモジュールが何チャンネルまで受け付けるか、標準のチャンネル順と LFE の扱いが何を意味するか、そしてどのモジュールのアップミックスとダウンミックスも従っている 1 つの規則です。

レイアウトとスピーカーの役割 ​

レイアウトチャンネル数役割(標準順)
Mono1(役割なし。単一チャンネル)
Stereo2L, R
5.16L, R, C, LFE, Ls, Rs
7.18L, R, C, LFE, Ls, Rs, Lss, Rss

標準順は WAVE_FORMAT_EXTENSIBLE と一致します。7.1 では Ls/Rs(index 4/5)と Lss/Rss(index 6/7)は別名の同じペアではなく、別個の 2 組の役割です — それぞれがどこに位置するかは 広げる方向 を参照してください。

LFE(低域効果音)は、デコーダーがサブウーファーへ渡す途中で約 10 dB 持ち上げる前提で、レベルを落として混ぜられた低域成分だけを運びます。自前の再生手段を持たない出力先で LFE をどう扱うかは、次の 2 つの規則で決まります。

  • 折り込み(出力先に LFE チャンネルが無い、または低音管理にサブウーファーが無い場合): LFE 信号を 120 Hz でローパスし、レベルを落として L/R ペアに加算します。
  • サブウーファー供給(低音管理が有効でサブウーファーがある場合): LFE 信号を持ち上げ、"small" に指定したスピーカーからクロスオーバーした低域成分と合わせて LFE チャンネルへ送ります。
  • 低音管理が無効で、出力先が LFE チャンネルを持つ場合、LFE の平面はそのまま素通しします — 後段のアンプが自前で +10 dB を掛ける前提です。

モジュール別のチャンネル対応 ​

ライブラリの大半は mono か stereo だけを処理し、それより広い入力は拒否します。サラウンドのチャンネル数を受け付けるのは以下のモジュールだけで、それぞれ自分が出力する幅より広い素材をどう扱うかが異なります。

モジュール受け付ける幅stereo より広い場合の扱い
音声ファイルの読み込みmono に畳むか、interleaved のバッファをそのまま通す1/2/6/8 チャンネルのファイルは下記の BS.775 ダウンミックスで mono に畳み、それ以外の数は平均します
解析・ストリーミング解析mono のみ呼び出し側が先に畳みます
ラウドネスメーター(lufsInterleaved)任意のチャンネル数チャンネル数に応じて BS.1770 のチャンネル重みを選びます
True Peak・相関・フェーズスコープmono / stereo拒否
ワンショットエフェクトとマスタリングプロセッサ1–2拒否
リアルタイムプロセッサ(ダイナミクス、EQ など)最大 64 平面平面ごとに動作。stereo ペア専用のエフェクトは、幅広のバスでも前方ペアにしか作用しません
ミキシングのバス・ストリップ・メーター1 / 2 / 6 / 8バスが宣言したレイアウトに従います
ミキサーグラフ宣言どおりのバス幅より狭い宛先(小さいバス、stereo のサイドチェーンキー)には BS.775 ダウンミックスが掛かり、より広い宛先には入力側の平面がそのまま渡ります
リアルタイムエンジン / プロジェクトのバウンスバスのレイアウト。出力は 1 / 2 / 6 / 8ミキサーグラフと同じ規則。マスターバスより広い要求は拒否されます
リアルタイムボイスチェンジャー1–2拒否
再生レンダラー1 / 2 / 6 / 8、および channel map下記の変換表に双方向で従います

channel map による入力レイアウトの宣言 ​

デコーダーごとにチャンネル順は異なります — AAC は C L R Ls Rs LFE の順で、フレームワークによっては "5.1" と "5.1(side)" を区別し、プラットフォーム API もそれぞれ独自の並びを持ちます。再生レンダラーの input.channel_map は各入力チャンネルの役割を明示的に指定します(このとき input.layout は "auto" ではなく固定レイアウトである必要があります)。呼び出し側がそれぞれ自前でバッファを並べ替える必要はなく、誤った map はチャンネルが黙って入れ替わったり欠けたりするのではなく、検証エラーとしてはっきり失敗します。5.1(side) の SL/SR チャンネルは Ls/Rs の役割に対応付けられます — 役割名は「左右のサラウンド」を意味し、それが実際にどの角度に置かれるかは入力側のラベルではなく出力側が決めます。

狭める方向(ダウンミックス) ​

上記のうちサラウンドバスをより狭いレイアウトへ出力するすべてのモジュール — ファイル読み込み、ミキサーグラフ、プロジェクトのバウンス、再生レンダラー — は、同じ ITU-R BS.775 係数(ミキシングモジュールの downmix)を使います。5.1 から stereo へ、7.1 から 5.1/stereo へは、サラウンドペアをレベルを落として折り込み、LFE チャンネルは計算から外して上記の LFE 規則に任せます。ミキサーグラフ自身の狭める規則は サラウンドグループバスとワイドメーター を参照してください。

再生レンダラー自身の変換表を、入力と出力先ごとに示します。

入力 \ 出力先stereo スピーカー5.1 スピーカー7.1 スピーカーヘッドホン
MonoL/R、-3 dBセンターのみセンターのみ仮想化したセンター
Stereo素通しアップミックス(upmix.enabled: false なら L/R のみ)アップミックス(または L/R のみ)アップミックス後に仮想化(または ±30° の仮想 L/R)
5.1BS.775 ダウンミックス + LFE 折り込み素通しL/R/C/LFE はそのまま。Ls/Rs は Lss/Rss へ移動し、7.1 自身の Ls/Rs は無音仮想化した 5.1
7.1BS.775 ダウンミックス + LFE 折り込みBS.775 ダウンミックス(LFE はそのまま)素通し仮想化した 7.1

広げる方向(アップミックス) ​

チャンネル構成を広げるすべてのモジュール — より狭いバスの平面をより広いバスに置くミキサーグラフと、再生レンダラーの stereo アップミックス — は、共通の 1 つの原則に従います。入力側の各平面を、そのモジュール自身の角度表の上で入力側の平面の角度に最も近い出力先の役割に置く、というものです。角度表はモジュールごとに用途が違うため異なり、同じ役割名でもどのモジュールの表を見るかで異なる角度になり得ます。

モジュールL / R5.1 の Ls/Rs7.1 の Ls/Rs7.1 の Lss/Rss
ミキサーグラフのパンナー±30°±110°±110°(同じ表を使い、7.1 専用の行は無い)±90°
再生レンダラー±30°±110°±135°(後方)±90°(側方)

ミキサーグラフは出力する幅によらず役割ごとに 1 つの角度を保つため、バスが 7.1 に広がっても 5.1 のサラウンドペアは同じチャンネルインデックスに収まります。一方、再生レンダラーは ITU-R BS.2051 の名目スピーカー角度に従っており、5.1 の Ls/Rs(±110°)は、7.1 自身の Ls/Rs(±135°、より後方)よりも 7.1 の側方ペア Lss/Rss(±90°)に近い位置になります。同じ「最も近い角度へ」という規則を異なる表に適用した結果、stereo アップミックスの無相関化したアンビエンス成分は Ls/Rs ではなく Lss/Rss へ送られます — 2 つの表は同じ役割名に異なる角度を与えており、規則が従うのは角度であって名前ではありません。

再生レンダラーは 5.1 の入力から後方ペアを合成することはせず(後方チャンネルの人工的な生成は行いません)、高さを加えた広いフォーマットへのアップミックスも行いません — 詳しくは 再生レンダラー § 非対象 を参照してください。

関連ページ ​