ミキシングの基礎
ミキシングは、録音された複数のパートのバランスを取り、意図の伝わる 1 つのステレオにまとめる技術です。すべての要素が聞こえ、互いにぶつからず、前後の奥行きと左右の広がりが感じられる状態を目指します。このページは、ミキシングエンジン ガイドを読む前に必要な言葉を定義します。終わり近くに、主なコントロールを呼び出しとして示す短い例があります。
ミキシングの位置
制作の流れは、個々のパートを編集し(タイミング、ピッチ、ノイズ)、それらをミックスし、仕上がったステレオファイルを配信向けにマスタリングする、という順です。ミキシングは、ばらばらのステムをバランスの取れた 1 曲に変える中間工程です。ここでバランスが取れていれば、マスタリングは救済ではなく仕上げになります。
トラックとチャンネルストリップ
トラックは録音された 1 パートです。リードボーカル、ベースの DI(楽器から直接受けたライン信号)、ステレオのドラムオーバーヘッドなどが、それぞれ 1 トラックになります。ミキサーでは各トラックがチャンネルストリップ、つまりそのパートだけを処理する縦 1 列のコントロール群を通ります。ミキシングの作業は、各ストリップをパート同士がうまく重なるように設定し、共通の出力へルーティングすることに尽きます。
レベル: トリム、フェーダー、ゲインステージング
ストリップには 2 つのレベルコントロールがあり、役割が異なります。
- 入力トリムは、どの処理よりも前の入口で、妥当な作業レベルを決めます。録音の音量はばらばらなので、トリムでそろえておくと、後段のプロセッサが適正なレベルの信号を受け取れます。
- フェーダーは、他のトラックと聴き比べながら動かすバランスコントロールです。ボーカルを前に、伴奏を後ろに、といった調整をここで行います。
各段でレベルを適切に保つこと、つまり小さすぎず(ノイズが目立つ)、大きすぎず(クリップする)に保つことをゲインステージングと呼びます。ミキシングで最も重要な習慣です。詳しくはゲインステージングを参照してください。
パン: 左右への配置
パンは、トラックを左端から右端までのステレオフィールド内に配置します。パートを左右に広げると、中央に積み重ねずにそれぞれの居場所ができます。細かい点が 2 つあります。
- パンモードは位置をチャンネルへどうマッピングするかを決めます。モノラルソースを動かす本来のパン、ステレオトラックの片側を下げるだけのバランス、左右独立の配置のいずれかです。
- パンローは中央をサイドに対してどれだけの音量にするかを決め、パンしてもパートの音量が跳ねないようにします。
インサートとセンド
初学者が最もよく取り違える区別ですが、名前を知れば単純です。
| インサート | センド | |
|---|---|---|
| 信号経路 | 直列。トラック全体がそこを通る。 | 並列。トラックのコピーを共有の行き先へ送る。 |
| 主な用途 | ボーカルのコンプやベースの EQ のように、そのトラック固有の処理。 | ボーカル、スネア、ギターを 1 つのリバーブへ送って同じ空間に置くように、複数トラックで共有するエフェクト。 |
| レベルの調整 | トラックのフェーダーが、処理後の信号をどれだけ先へ流すかを決める。 | センドレベル(sendDb)が、行き先へ送る量を決める。 |
プリフェーダーとポストフェーダー
センドは、フェーダーの前からでも後からでも信号を取り出せます。プリフェーダーはバランスから独立するので、ヘッドホンやキューミックス向きです。ポストフェーダーはバランスに追従するので、フェーダーを動かしてもエフェクトの比率が保たれます。どちらを選ぶかは定番のつまずき所で、各タップの正確な位置はミキシングエンジンページで信号順に説明しています。
バスとサブグループ
バスは、複数の信号を合算する共有の行き先です。最も重要なバスはマスターで、すべての信号が最後に到達するステレオ出力です。ほかによく使うロールが 2 つあります。
- AUX バスはセンドのリターンです(共有リバーブはここに置きます)。
- サブグループ(サブミックス)は、ドラム一式のような関連トラックをまとめ、1 つとして処理・調整できるようにします。ドラムのサブグループに挿したコンプはキットの音をまとめ、1 本のフェーダーでキット全体のレベルを動かせます。
VCA グループ(VCA は voltage-controlled amplifier の略)は似た考え方ですが、音声の経路は変えずに、複数トラックのレベルだけを 1 本のフェーダーでまとめて動かします。パートを別々のバスへ流したままレベルを揃えたいときに使います。
オートメーション
固定したままのミックスが最良になることは稀です。オートメーションは、コントロールを時間とともに変化させます。サビでボーカルを 0.5 dB 上げる、シンセを 4 小節かけてフェードアウトする、ライザーでフィルターを開く、といった動きです。コントロールは、設定した点の間を直線のランプ、なめらかな S カーブ、即時のジャンプといったカーブでたどります。これでミックスに時間的な動きが生まれます。
メーター: 耳とともに目も信じる
耳は疲れ、部屋の響きは正確ではないので、ミキシングではメーターも見ます。重要なものは次のとおりです。
- ピーク/True Peak: 最高レベル。True Peak は、サンプルメーターが見逃すサンプル間ピーク(ISP)の超過を捉えます。
- RMS/LUFS: 平均レベル(RMS は二乗平均平方根)と、知覚上のラウドネス(LUFS は Loudness Units relative to Full Scale の略)。リスナーが実際に感じ取るのは後者です。
- 相関値: 左右チャンネルが一致しているか。強い負の値は、ミックスがモノラルで弱まったり打ち消されたりする警告です。
libsonare で試す
mixStereo は、数本のステムを 1 回の呼び出しで 1 本のステレオマスターにレンダリングします。トリム、フェーダー、パン、幅はトラックごとの設定で、トラックごとのメーター値も返ります。
import { init, mixStereo } from '@libraz/libsonare';
await init();
const mix = mixStereo([vocalL, musicL], [vocalR, musicR], sampleRate, {
inputTrimDb: [3, 0], // どの処理よりも前の作業レベル
faderDb: [-3, -12], // バランス: ボーカルを前に、伴奏を後ろに
pan: [0, -0.2], // 伴奏をわずかに左へ
});
// mix.left、mix.right: マスター
// mix.meters[i].peakDb、.rmsDb、.correlation: トラックごとの値import libsonare as sonare
mix = sonare.mix_stereo(
[(vocal_l, vocal_r), (music_l, music_r)],
sample_rate=48000,
input_trim_db=[3, 0],
fader_db=[-3, -12],
pan=[0, -0.2],
)
# mix.left、mix.right: マスター
# mix.meters[i]: トラックごとの値# ネイティブ CLI の mix-strip は、1 つのファイルを 1 つのチャンネルストリップに通します。
sonare-cli mix-strip vocal.wav --input-trim-db 3 --fader-db -3 --pan 0.2 -o out.wavセンド、バス、サブグループ、オートメーションには、シーンベースの Mixer が必要です。ミキシングエンジンガイドを参照してください。
libsonare がこれらをどうモデル化するか
libsonare のミキシングエンジンは、これらの概念を具体的なオブジェクトへ対応づけます。
| 概念 | 実装上の対応 |
|---|---|
| ストリップ | 入力トリム・EQ・フェーダー・パン・幅・インサート・センドを固定の信号順に持つ ChannelStrip |
| バス | master/aux/submix のロールを持つルーティング先 |
| センド | プリ/ポストフェーダーでタップする送信経路 |
| オートメーション | サンプル精度の位置で linear/exponential/s-curve/hold カーブとともにスケジュール |
| メーター | 各ストリップのメータースナップショットとゴニオメーター履歴バッファ |
| シーン | ミキサー全体を保存して読み直せる JSON データ |
エンジンはリアルタイム安全です。デノーマル対策、ロックフリーなパラメータ変更、事前確保バッファ、ルーティンググラフ全体のプラグインディレイ補償を備えるため、同じモデルがオフラインでも AudioWorklet 内でも動きます。