xfadeInの使い方
この記事では、TidalCyclesのxfadeとxfadeInの使い方をまとめました。
xfadeは、特定のトラックのパターンを別のパターンにクロスフェードさせるTransition(遷移)です。
例えば、以下2つのトラックがあるとします。
d1 $ s "pattern A"
d2 $ s "pattern B"
これらをそれぞれ再生すると、Track1 (d1)のpattern AとTrack2 (d2)のpattern Bが同時に再生されますね。
今回、pattern Aからpattern Bへクロスフェードさせることを考えてみます。
クロスフェードさせるには、以下のように記載します。
d1 $ s "pattern A"
xfade 1 $ s "pattern B"
xfadeの直後の数字は、トラック番号です。
そのため上記例では、Track1 (d1)のpattern Aをフェードアウトし、同時にpattern Bをフェードインする(結果クロスフェードになる)、という意味になります。
なお、トラックに名前をつけている場合は、数字の代わりにトラック名を記載します。
具体的な例を見てみます。
まず以下のd1 $ s “bd bd sn:1 ~” を実行してから、xfade 1 $ s “arpy*8” # n (run 8)を実行してみてください。
d1 $ s "bd bd sn:1 ~"
xfade 1 $ s "arpy*8" # n (run 8)
サイクルが4回繰り返される間に、”bd bd sn:1 ~” というパターンの音量が下がっていき、”arpy*8″パターンのの音量が上がっていくのがわかります。
この「4回のサイクル」でクロスフェードが完了するというのが、xfadeの仕様です。
このクロスフェードが完了するまでの回数を変更したい場合は、xfadeInを使用します。
xfadeIn x y $ s “pattern A”とすると、xはTrack番号、yはクロスフェード完了するまでのサイクル数です。
xfadeIn 1 8 とすると、Track1を8サイクルかけてクロスフェードする、という意味になります。
xfadeInの”I”が大文字なことに気をつけてください。
xfadeの注意点
xfadeを使うときの注意点があるので、先程の例で考えてみます。
d1 $ s "pattern A" //1行目
xfade 1 $ s "pattern B" //2行目
1行目を実行してpattern Aを再生中に、2行目を実行すると、クロスフェードによってpattern Aの音量は下がり、pattern Bの音量が上がります。
その後、pattern Bをちょっと変更して再度2行目を実行すると、再度クロスフェードがかかってしまうため、意図通りにpattern Bが再生されない、という現象が起きます。
それを防ぐには、xfade 1 → d1 に書き換えてあげてから、2行目を実行する必要があります。
xfade 1 $ s "arpy*8" //2行目
↓
xfade 1 $ s "arpy*16" //2行目のパターンを書き換え
↓
d1 $ s "arpy*16" //2行目のxfadeをd1に書き換えてから実行すればOK
ちょっとひと手間ですが、これをしないと何度もxfadeがかかってしまい、変な音になるので、注意してください。
他のTransitions
xfade以外にもTransitionsの種類があり、それはuserbaseのこのページにまとまっています。
この動画の解説もわかりやすいです。
練習方法
以下の動画のように、Track d1だけを使い、ドラムパターンを2つ用意して、2つのパターンをひたすらxfadeでつなぎながら、パターンをちょっと変更する、というのを繰り返すことで、LiveCodingの練習になります。
メロディーやコードを使ってももちろん良いのですが、まずはドラムだけでやることで不協和音などを気にせずに行えて楽しいです。
コード
setcps(128/60/4)
d1
$ whenmod 10 2 (|* speed 0.8)
$whenmod 16 8 (rev)
$ s"[bd(9,16),808sd:1(10,16),hh*16]"
#shape 0.5 # room 0.5
xfadeIn 1 16
$ whenmod 16 1 (stut' 4 0.065(|*speed 1.1))
$ splice 16 ("0*8 1/2 2*2? 3 4*4 5 6*8 7*2")$ s "breaks125"
# room 0.3 # cut 1
hush