概要
本記事では、クロスフェードで用いるフェードイン・フェードアウト関数の具体例を紹介します。
フェードイン・フェードアウト関数の設計
クロスフェードにおいて、フェードイン・フェードアウト関数は前後の楽曲をスムーズに(シームレス)に繋げる役割を担います。この関数は、以下の3条件を満たすような関数を選ぶのが一般的となっています。
ここで、0≦x≦1であり、クロスフェード区間を表しています。また、f(x)がフェードアウト関数、f(1-x)がフェードイン関数を表しています。
(1a)と(1b)は、それぞれゲイン、パワー値の和が一定(=1)となるような条件であり、2つの楽曲の音量を連続的にクロスフェードさせることを意図してます。
なお、フェードイン・フェードアウト関数 f(x) によってクロスフェードする2つの楽曲の音量は同じと仮定しています。もし片方の楽曲の音圧が明らかに大きい場合、この条件のクロスフェードでは違和感が生じる場合があります。
関数の例
フェードイン・フェードアウト関数の適用例
ある2曲に対して、Audaicityで上記3パターンのクロスフェードを適用した結果になります。順番は直線、コサイン、平方根です。
使用楽曲: 幻象アリス"Noctiflora"より、"Noctiflora", "Retrograde Amnesia"
結局、どれを使えばいいのか?
個人的にはコサイン関数をよく使いますが、自分の好みや、どんなクロスフェード音源を作りたいかによって自由に選んでよいと思います。
補足ですが、最初に挙げた条件を満たした関数を必ず選ばないと行けないわけではありません。この条件で関数を設計すれば、たいていの曲でまずまずの、音量的にシームレスな楽曲の接続ができるという認識でよいと思います。
つまり、クロスフェードしたい楽曲や区間選択によってはシームレスにつなぐ関数は最適化できる可能性があります。
また、音量的にシームレス的な接続であるかどうかという基準だけでなく、演出面を意識したクロスフェードも考えられます。具体的には、DJのようにエフェクト/フィルタをかけて次の楽曲に繋げるという方法があります。ライブやクラブの曲間を再現するようなイメージです。
より詳しい情報は、Equal power crossfade などのキーワードで検索してみてください。