u-he UHM言語 学習10 Normalize
ウェーブテーブルの音量調整だが、音が小さすぎたり、大きすぎたりするのを防ぐ。 WavにExportする場合は必須と思われる。 下記に重要なコマンドオプションを書いておく。
Metric
- RMS:デフォルト
- peak:ピーク値
- average:平均値
- ptp:peak to peak 正の最大値から負の最大値まで
dB
Metric=Peak dB=0と書けば、波形のピーク値が0dBになる。
Base
フレームに対しての設定。
- all:全体をノーマライズする。ト
- each:各フレームごとにノーマライズする。
下のスクリプトはノコギリ波にLPFを掛けた8フレーム構成のウェーブテーブルとなる。 まだノーマライズする前の状態で、ExportしたwavファイルをAudacityで読み込んだものを見ると、音量を上げることが出来るのが分かる。
NumFrames =8
Spectrum start=0 end=7 lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Export "myFile.wav"
下記はノーマライズしたスクリプトで、ピーク値を0dBとし、全フレームでノーマライズという内容になっている。 5フレームのみが0dBに届いているのが分かる。
NumFrames =8
Spectrum start=0 end=7 lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Normalize Metric=peak dB=0 Base=all
Export "myFile.wav"
下はBase=eachにしたもの、各フレームごとにノーマライズされ、各フレームごとに一番大きな振幅が0dBになっている。
NumFrames =8
Spectrum start=0 end=7 lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Normalize Metric=peak dB=0 Base=each
Export "myFile.wav"
dB=-6とし、ピーク値を下げてみる。
NumFrames =8
Spectrum start=0 end=7 lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Normalize Metric=peak dB=-6 Base=each
Export "myFile.wav"
ちゃんとピークが-6dBになっているのが確認できる。
RMSを使ってみる
では次にデフォルトのMetric=RMSでdB=0としてみる。
NumFrames =8
Spectrum start=0 end=7 lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Normalize Metric=RMS dB=0 Base=all
Export "myFile.wav"
RMSは実効値なので、dB=0だと波形が上下に突き出てしまう。結果歪む場合もある。というのは32bit floatなので、Hiveなどでは歪まずに再生できてしまう。
Audacity上で一見歪んで欠けてしまった波形でも、一番大きな部分を0dBまで音量を下げることもできる。32bit floatは便利。
上記を理解していれば、ノーマライズでは、それほど困ることもないだろう。