FX INTRODUCTION / 08 / 下書き

Envelope Follower:音の強さを追う

GateとCompressorへ進む前に、入力の振幅を滑らかな制御値へ変換します。

作成中の記事です。サンプルは試聴しながら調整していきます。Runで再生、Stopで停止。値を編集したらApplyします。別のiframeを試す前に、再生中のものをStopしてください。

Envelope Follower単独の組み込みFXはありません。ここでは次のGate・Compressorを理解するため、liveFxで音量を追い、その値で音量を変える実験をします。

PCMをどう加工するか

波形の正負を絶対値で折り返し、平滑化します。大きくなるときはAttack、小さくなるときはReleaseの時定数を使います。これは短時間RMSとは違う検出方法です。左右の最大値を使うと、左右で別々のゲインになって定位が揺れることを避けられます。

input[ch][i]は入力の1サンプルです。chは左右の音声チャンネルで、FMの物理CHではありません。前のブロックから持ち越す値はstateに保存します。processから外側の変数は参照できないため、設定値はcontextへ入れます。

liveFxで試す

context.sampleRateの48000は仮の値です。FX Monitorに表示される実際の出力レートに合わせてください。時間や周波数の計算に使い、ブラウザーの出力レート自体を変更する設定ではありません。

別タブのPlaygroundで開く ↗

FX Monitorでenvelope-follower-labを選ぶと、この処理の入力・出力を比較できます。

  1. mixを0にして原音を聴き、1にすると減衰の小さい部分がさらに小さくなるか確認します。
  2. attackMsを100にして、立ち上がりへの追従を遅くします。
  3. releaseMsを30と500で比較し、音が減衰する途中の変化を聴きます。

この例の範囲

組み込みの独立したEnvelope Follower APIはありません。ここでは検出値をゲインとして使うデモです。FX Monitorはstate.envelope自体を表示せず、加工された音声を表示します。制御値をそのまま音声出力へ書く例ではありません。

波形は時間方向の変化、Spectrumは周波数成分の強さを見る道具です。短い表示窓や表示の平滑化で見えにくい変化もあります。音を聞きながら、設定を1項目ずつ変えてください。