TidalCyclesはいろいろすごいわけですが、とりわけわたくしめが気に入っているのは、ユークリッド・シーケンスです。3つの数字を入力するだけで、かっちょいいリズムパターンを生成してくれるというもので、これもTidalのコードがコンパクトになる理由の1つかなーと思いますねー。
なにはともあれ試してみましょー。
d1 $ s "[bd bd bd [bd ~ ~ bd]]" d2 $ sound "rm(5,8)"
d1はキックを鳴らしておりますが、アタマがわかるように4拍めの最後の16分も鳴らしております。d2の方がユークリッド・シーケンスで、リムショットを鳴らしています。(5,8)の2番めの「8」は、Tidalの1サイクルを「8」に分割するということで(要するに8分音符です)、1番めの「5」はそのうち5つ音を出すよということで、そのパターンは下記のように決定しているようです。
11111000
↓
一番後ろの「0」を一番前の「1」の次に配置して2ケタの数値つくる。後ろから2番めの「0」は前から2番目の「1」の次に、後ろから3番めの「0」を前から3番めの「1」の次とそれぞれ移動すると下記のようになります。
[10][10][10][1][1]
↓
同様にこんどは最後の[1]を一番前の[10]の末尾に、後ろから2番めの[1]を2番目の[10]の末尾にそれぞれ移動すると下記のようになります。一桁の数値がなくなったら、そこで終わってパターンにします。
[101][101][10]
↓
10110110
「タンタタンタタン」というリズムになります。d2のリムショットがそのリズムになってることを確認してみてください。
次にd2の「rm(5,8)」を下記のように「rm(5,8,1)」に修正して鳴らしてみてください。
d2 $ sound "rm(5,8,1)"
「ンタタンタタンタ」というリズムに変わったと思います。
これはさっきの「10110110」の最初の「1」を最後に持って行った「01101101」です。
同じように「rm(5,8,2)」は最初の「10」を最後に持って行った「11011010」(タタンタタンタン)になります。要は3つめの引数分ずらすというイメージですね。(5,8)は(5,8,0)ということです。
2番めの引数を「16」にすれば16分音符のパターンになって、ダンスミュージックにもかっちょよくハマるパターン、「12」にすると4拍子のキックと合わせてハチロクのパターンができますね。奇数で変拍子とかももちろんいけます。
ただ、単純なパターンの繰り返しじゃつまらねえじゃねぇか、というみなさん。いやいや、甘く見てはいけませぬ。下記パターンを鳴らしてみてくださいませ。
d2 $ sound "rm(5,8,<1 5>)"
これは、3番めの引数を1サイクルごとに「1」「5」に変更しています。< >でくくると1サイクルごとに数値が変更されるようになります。この数値をさらにいろいろ増やしたり、1番めや2番めの引数にも適用していけば、かなり複雑なリズムパターンを作れるんですよー。
というわけで、このアルゴリズムについては詳しくは、“The Euclidean Algorithm Generates Traditional Musical Rhythms”を参考にされるとよいかと存じまする〜。