REAPERで7.1chサラウンドを2chステレオにダウンミックスする


7.1chサラウンドの音源を2chステレオにダウンミックスしたくて、DTS Neural™ Surround DownMixのサイトを見たりいろいろ調べていたところ、audiokineticのサイトに以下のようなダウンミックス表を見つけました。

Input Channels L R
FL(1ch) 1 0
FR(2ch) 0 1
C(3ch) 1/√2 1/√2
SL(5ch) 1/√2 0
SR(6ch) 0 1/√2
BL(7ch) 1/√2 0
BR(8ch) 0 1/√2

LFEチャンネル(4ch)は無視するみたいです。
なるほど、これに従って入力音声から出力音声を生成すれば良さそうだ。

REAPERにはJSという音声処理を自分で記述できる仕組みがあるので、これを使います。
REAPERにトラックを作成し、FXをインサートし、メニューバーからFX→Create new JS FX...をクリックする。

エフェクト名を入力したらテキストエディタが開くので、以下のコードをコピペします。

desc:7.1 to 2ch downmixer
//tags: mixer gain
//author: Niusounds

in_pin:L
in_pin:R
in_pin:C
in_pin:LFE
in_pin:LS
in_pin:RS
in_pin:LCS
in_pin:RCS
out_pin:L
out_pin:R

@slider
_1_sqrt2 = 1 / sqrt(2);

@sample
spl0 = spl0 + spl3 * _1_sqrt2 + spl5 * _1_sqrt2 + spl7 * _1_sqrt2;
spl1 = spl1 + spl3 * _1_sqrt2 + spl6 * _1_sqrt2 + spl8 * _1_sqrt2;

Cmd+Sで保存すればできあがりです。

5.1chの場合は上記のうち7,8chを使わなければ良いだけなので、5.1chの音源にもそのまま適用可能だと思います。

audiokineticのサイトの別ページにも記載がありますが、

The Wwise downmix performs no normalization, given the arbitrary nature of normalization coefficients. It is, therefore, common that downmixing from configurations with large numbers of channels to configurations with few channels results in loudness gains.

適当訳: ダウンミックスをすると音量が増えます。

なので、上の処理を通すと元の音源よりもピークレベルが上がります。ピークを超えないように適宜ゲインを調整する必要がありそうです。