AfterEffects

【After Effects】音量をフェードイン・アウトさせるエクスプレッション

aftereffects-expression-audiolevel-fade-In-out

音のフェードイン・アウトは結構機械的につけてしまうので、音量をフェードイン・アウトさせるエクスプレッションを書きました。


特徴

エクスプレッションを使うとサウンドのレイヤーの長さに合わせて、

オーディオレベルのフェードインやフェードアウトが指定できるので、

いちいちレイヤーの長さを変えるたびにオーディオレベルのキーを調整しなくても済みます。

エクスプレッション

fadeTime →フレーム数

audio.audioLevelsMax →最大音量

フェードイン

fadeTime = 30;
audio.audioLevelsMin = -48;
audio.audioLevelsMax = 0;
layerDuration = outPoint - inPoint;
singleFrame = thisComp.frameDuration;
animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);
animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);
if(time < (layerDuration/2+inPoint)){
[animateIn,animateIn];
}else{
[animateIn,animateIn];
}

フェードアウト

fadeTime = 30;
audio.audioLevelsMin = -48;
audio.audioLevelsMax = 0;
layerDuration = outPoint - inPoint;
singleFrame = thisComp.frameDuration;
animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);
animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);
if(time < (layerDuration/2+inPoint)){
[animateOut,animateOut];
}else{
[animateOut,animateOut];
}

フェードイン・アウト

fadeTime = 30;
audio.audioLevelsMin = -48;
audio.audioLevelsMax = 0;
layerDuration = outPoint - inPoint;
singleFrame = thisComp.frameDuration;
animateIn = linear(time, inPoint, (inPoint + framesToTime(fadeTime)), audio.audioLevelsMin, audio.audioLevelsMax);
animateOut = linear(time, (outPoint - framesToTime(fadeTime+1)), (outPoint-singleFrame), audio.audioLevelsMax, audio.audioLevelsMin);
if(time < (layerDuration/2+inPoint)){
[animateIn,animateIn];
}else{
[animateOut,animateOut];
}

参考

https://forums.adobe.com/thread/2048099

その他

たまにフェードアウト後(オーディオレベルが-48)なので音がブツッと音切れを起こす場合があるのですが、その時は更に親コンポを作成して、そこでフェードアウトかけると良いです。

 

 

ABOUT ME
すいみん
テクニカルなことが好きなCGデザイナー