オーディオレイヤーの音量のフェードイン・フェードアウトをエクスプレッションを仕込んで自動化してみます。「フェードイン・アウトをエクスプレッションで自動化する」の音量版。
レイヤーのインポイントからのフェードインと、アウトポイントまでのフェードアウトがキーフレームなしで動作しますので、レイヤーの長さ変更に強いというメリットがあります。
スライダーエフェクトのfIn、fOutに秒数を指定してコントロールします。(※フレーム数ではないことに注意)
※仕様としてフェードイン中でもフェードアウトが優先して始まります。
コントローラーの準備
オーディオを含むレイヤーにエフェクト「スライダー制御」を2つ準備します。
それぞれフェードイン用の秒数を指定する「VolfIn」、フェードアウト用の秒数を指定する「VolfOut」とでも名前を変更しておきます。
エクスプレッション
オーディオを含むレイヤーのプロパティ「オーディオレベル」に、下記のエクスプレッションを適用すれば完成です。
var VolfIn = effect("VolfIn")(1);
var VolfOut = effect("VolfOut")(1);
(time >= outPoint-VolfOut )?ease(time,outPoint-VolfOut ,outPoint,value,[-48,-48]):((VolfIn==0)?audio:ease(time,inPoint,inPoint+VolfIn,[-48,-48],value));
今回覚えるJavascript
今回新しく登場したのは、「if文の短縮形」です。
3行目の
(time >= outPoint-VolfOut )?ease(time,outPoint-VolfOut ,outPoint,value,[-48,-48]):((VolfIn==0)?audio:ease(time,inPoint,inPoint+VolfIn,[-48,-48],value));
この部分です。
if文の短縮形
if文の正式な記述方法は
if(条件式){
trueの場合の処理;
}else{
falseの場合の処理;
}
ですが、短縮形では
(条件式)?trueの場合の処理:falseの場合の処理;
このように記述可能です。
「if」→「?」、「else」→「:(コロン)」に置き換わるイメージです。
処理が長ければ特にエラー時に見辛くなるデメリットがありますが、コードをスッキリとさせられるので、様々なケースで使用されています。
他者のJavascriptを参考にされる際に、このような書き方はif文であると覚えておけば理解が早いでしょう。
使い方
追加したエフェクト「VolfIn」、「VolfOut」に秒数で数値を指定すると、音量がレイヤーのインポイントから「VolfIn」の秒数でフェードイン、アウトポイントへ「VolfOut」の秒数でフェードアウトしていきます。
オプション
- オーディオレベルが”0″<->”セットしている値”でフェードします。
- オーディオレベル50なら0->50にフェードイン、50->0にフェードアウトです。
- キーフレームを打っても合わせて動作します。
シーンのカット・追加・延長によってBGMの尺をキーフレームで直す必要がなくなります。
この記事へのコメントはありません。