Skip to content

リファレンストラック ​

リファレンストラックは、比較基準として使う完成済みの曲やマスターです。仕上がりがどんな感触であるべきかを確かめるために使います。

聴いた音の記憶は当てになりません。しばらく同じ曲を触っていると、今の音が普通に感じられてきます。リファレンスは、ラウドネス、明るさ、低域バランス、ステレオ幅、ボーカルの存在感、密度を判断するための外部基準になります。

リファレンスの役割 ​

良いリファレンスは、コピーする対象ではなく較正済みの比較対象です。

次のような大まかな差を見つけるために使います。

領域確認したい問い
ラウドネス実用的な範囲に収まっているか、作業環境で大きく聞こえているだけではないか。
低域低域が制御されているか、グルーヴを濁していないか。
中域ボーカルや主役の要素が安定しているか。
高域高域が開いているか、刺さるか、鈍いか。
ステレオ広がりが楽曲を助けているか、モノラルの芯を弱めていないか。
密度動きを潰さずに、求められる仕上げ密度に達しているか。

リファレンスは、目指すスタイル、アレンジ密度、リリース文脈が近いものを選びます。余白の多いアコースティック曲を、密度の高いダンス系のマスターに寄せる必要はありません。

よくある失敗 ​

一番多い失敗は、ラウドネスを揃えずにリファレンスと比べることです。商用リファレンスは自分のミックスより大きく、密度も高いことが多く、それだけで良く聞こえてしまいます。

もう 1 つの失敗は、アレンジが違いすぎる曲を選ぶことです。楽器数、ボーカルの明るさ、ベースの役割が違うリファレンスのスペクトル形状をコピーしても、自分の曲には合いません。

リファレンスは判断の助けであって、元の音源の個性を消す道具ではありません。

リファレンスマッチ EQ ​

リファレンスマッチ EQ は、元音源とリファレンスのスペクトルを比較し、元音源を近づけるための制限付き EQ カーブを適用します。学習や穏やかなトーン合わせには有効です。

ただし、強くはかけません。大きなリファレンスマッチ EQ のカーブが必要になるなら、元音源とリファレンスの性質が根本的に違っています。その場合は完全なマッチングより、広めの手動 EQ やミックスの修正のほうが安全です。

PARAM SWEEP · TILT EQIDLE
チルト EQ — スペクトル全体を一度に整える

チルト EQ は、固定したミッドレンジのピボット(橙色の線)を軸に、おおまかな音色バランスを傾けます。プラス方向は高域を持ち上げ低域を削って明るく、マイナス方向はその逆で温かくします。レンダーごとにピークを同じ高さへ揃えているためプラス方向でもクリップしませんが、揃えているのはピークであってラウドネスではないので、知覚上の音量は設定によって変わります。ドラッグすると、平均スペクトルがピボットを軸にシーソーのように傾くのが見えます。用途は広い範囲の補正です。特定の共鳴を抑えたいときは、チルトではなく狭いバンドを使ってください。

試聴対象
再生中に切り替えると、選んだ音を先頭から再生します。処理後
チルト
6 dB

libsonare で測る ​

比較は、LUFS とクレストファクターの読み値から始め、次にスペクトルへ進みます。match.tonalBalance は両トラックの帯域別レベルを返し、match.matchEqCurve は元音源をリファレンスへ近づけるゲインカーブを返します。どちらも、ペア解析の呼び出しから JSON で返ります。

typescript
import { init, lufs, meteringCrestFactorDb, masteringPairAnalyze } from '@libraz/libsonare';

await init();

const sourceLufs = lufs(source, sampleRate).integratedLufs;
const referenceLufs = lufs(reference, referenceSampleRate).integratedLufs;
const lufsGap = referenceLufs - sourceLufs;
const crestGap = meteringCrestFactorDb(reference, referenceSampleRate)
  - meteringCrestFactorDb(source, sampleRate);

const curve = JSON.parse(masteringPairAnalyze({
  analysisName: 'match.matchEqCurve',
  source,
  reference,
  sampleRate,
  referenceSampleRate,   // sampleRate と異なる場合は sampleRate にリサンプルされます
}));
// curve.frequencies と curve.gainDb
python
import json
import libsonare as sonare

source_lufs = sonare.lufs(source, sample_rate).integrated_lufs
reference_lufs = sonare.lufs(reference, reference_sample_rate).integrated_lufs
lufs_gap = reference_lufs - source_lufs

curve = json.loads(sonare.mastering_pair_analyze(
    "match.matchEqCurve", source, reference, sample_rate,
    reference_sample_rate=reference_sample_rate,
))
bash
sonare mastering-pair-analyze source.wav --analysis match.matchEqCurve --reference reference.wav
sonare mastering-pair-analyze source.wav --analysis match.tonalBalance --reference reference.wav

libsonare デモでの扱い ​

デモでは、比較用のリファレンストラックを読み込めます。基本的なリファレンス指標を表示し、ローカルの WebAssembly ワーカー上でリファレンスマッチ EQ を実行できます。

マッチ処理には意図的に制限を入れています。返ってきたカーブを約 1/6 オクターブで平滑化し、最大 ±6 dB のピークバンド 4 本で近似するので、リファレンスのスペクトルをそのままコピーするのではなく、マスタリングとして扱える穏やかな範囲に収まります。

実装メモ

リファレンスファイルもソースと同じようにブラウザ内でデコードされます。リファレンスのサンプルレートがソースと異なる場合は、ワーカーが読み込み時にエンジンの resample でソースのレートへリサンプルします。マッチ関数を直接呼ぶ場合は、referenceSampleRate を渡せば関数側でリサンプルします。

リファレンスマッチ EQ の経路では、ソースとリファレンスをモノラルにミックスしてスペクトルを比較し、その差を平滑化したうえで、最大ゲイン変化量を制限します。生のスペクトル差分には、マスタリング処理としては不要な狭いスパイクやノッチが入りやすいため、この制限を入れています。

関連: ラウドネスマッチング、ダイナミックレンジ、モノラル互換性、LUFS