オートメーションとメーター
静的なミックスが最良であることは稀で、耳だけでミックスを信用するのも十分ではありません。オートメーションはコントロールを時間とともに動かし、メーターは耳に加えて目でも結果を確認させます。本ページでは、両者を libsonare のオートメーション・メータープロセッサと対応づけて説明します。基礎は ミキシングの基礎 を参照してください。
オートメーション: 呼吸するミックス
オートメーションはコントロールの時間変化を記録します。サビでボーカルを 0.5 dB 上げる、シンセを 4 小節かけてフェードアウトする、ライザーでフィルターを開く、といった動きです。各コントロールは設定した点の間をカーブでたどり、カーブの形が雰囲気を変えます。
| カーブ | 動き |
|---|---|
| linear | 点と点を結ぶ直線ランプ |
| exponential | 対数軸上で補間するため、周波数やリニアゲインのスイープが均等に聞こえる。フェーダーレーンはもともと dB なので、自然なフェードには linear を使う(ミキシングエンジン 参照) |
| s-curve | 両端がなめらか。音楽的な遷移 |
| hold | 即座に跳び、次の点まで保持 |
オートメーションはフェーダー・パン・センド・インサートパラメータを対象にできるので、レベルだけでなくストリップ全体を動かせます。
エンジンレーンとプロジェクトレーン
ここまでのオートメーションはエンジンレベルのもので、リアルタイムに再生されます。保存されるプロジェクトレベルのレーン(Project.addAutomationLane)は、トラックのフェーダーやパンを直接対象にでき、オフラインバウンスが生のパラメータ id なしで適用します。詳しくは オートメーションレーン を参照してください。
メーター: 目も信じる
部屋の音響は聞こえ方を偏らせ、耳は疲れるので、ミックスはメーターでも判断します。
- ピーク/True Peak:最高レベル。通常のサンプルメーターは保存されたサンプルしか読みませんが、サンプル間で復元される波形はそれより高く跳ね上がることがあります。True Peakは、通常のメーターが見逃すこのサンプル間のオーバーを捉えます。
- RMS/LUFS:平均レベルと知覚ラウドネス。LUFS(Loudness Units relative to Full Scale)は、リスナーが実際に判断する聞こえの大きさに沿った単位です。
- 相関:左右が一致しているか。強い負の値は、ミックスがモノラルで弱まる警告です。
- ゴニオメーター:ステレオフィールドをドットで描く表示です。読み方は、横軸に L−R、縦軸に L+R を取る一般的な回転表示を前提とします(L と R をそのまま軸に取る表示では、以下の形がすべて 45 度回転します)。縦一本の線はモノラルの信号で、点が横へ広がって丸い雲になるほどステレオ像は広くなります。雲が横軸へ潰れる形は位相や極性の問題を警告します。雲が片側へ傾いているのは単なる左右のレベル差で、音像が中央からずれていることを示します。これはバランスの問題であって、位相の問題ではありません。下の図は、この 4 つの形をテスト信号から描き、それぞれの相関値を添えたものです。
libsonare のピーク、RMS、相関値は、処理した 1 ブロック(一括ミックスではレンダリング全体)を対象にし、なめらかにする処理は入りません。VU メーターの落ち着いた針の動き(約 300 ms の積分)や、プログラムメーターのゆっくりした戻りとピークホールドは、表示側が上乗せするバリスティクスです。LUFS には 400 ms と 3 s の固定の窓がすでにあります。詳しくは メーター を参照してください。
メーターは状態を示すだけで、判断はしません。耳が見逃す問題を捉えるために使い、数値を追いかけるためには使いません。
libsonare がオートメーションとメーターをどうモデル化するか
オートメーションは AutomationLane 上に、サンプル精度の AutomationEvent としてスケジュールされます。カーブは AutomationCurve(linear/exponential/s-curve/hold)で指定します。
AutomationTarget はフェーダー・パン・センド・インサートパラメータを指し、InsertAutomationLane はインサート内部を自動化します。
メーターは MeterProcessor(MeterConfig)でピーク/True Peak/RMS/LUFS と相関を計測し、ベクトルスコープ用に GoniometerPoint の GoniometerBuffer を持ちます。これらはすべてリアルタイム安全なので、オフラインでも AudioWorklet 内でもオートメーションが再生されメーターが更新され、UI 表示用にエンジン側のテレメトリも利用できます。
True Peak メーターは数サンプル先を見て判定するため(再構成フィルターの群遅延)、表示がわずかに遅れます。これによりメーターの値はブロックサイズに依存しません。そのため最後のブロックが終わった時点では、信号の末尾の数サンプルがまだ保留されています。オフラインレンダリングの最後のブロックの後に Mixer.flushMeters()(Python では flush_meters())を呼ぶと、保留分を無音に対して読み取ってスナップショットに反映します。オフラインのエンジンレンダリングとワンショットのミックスは、すべてのメーターを自動的にフラッシュします。