動画
コード
setcps(110/60/4)
d1 $ struct ("1 1 1 [1 0 <0 0 1 0> <0 1>]") $ s "Kick:6" # gain 1.1
d3 $ whenmod 16 15 (stut 4 1 0.065) $ n "~ 12 ~ 10" # s "Snare"
# legato (choose[0.2,1])
d4 $ swingBy (1/10) 8 $ s "HiHat*16" # gain "[1 0.8 1.3 0.8]*4"
d2 $ whenmod 24 20 (# speed "1.2") $ sometimesBy 0.2 (|+| sound "Noise")
$ every 14 (rev) $ swingBy (1/16) 8 $ whenmod 8 6 (stut' 6 0.065 (|* speed 0.95))
$ sometimesBy 0.1 (# room 0.9)
$ struct ("1(5,16,<0 1 2>)") $ s "Chord" |+ n "5!6 <14 0>"
# legato (choose[0.6,0.8]) # sz 0.9
d5 $ struct ("1 [0 1] 0 1 [0 1] 0 1 [0 1]") $ s " bass1:0"
# note 0 # legato (choose[1,1,0.9,0.6])
d6 $ s "Ambience/4" # n (range 5 10 rand) # speed "<-0.8 -2>/4"
# room 0.8 # sz 0.9 # cut 6
hush
このコードでは、サンプルにNative Instruments社のGrey Forgeを使用しているため、TidalCyclesの初期設定だと動画のようには再生できません。
struct
structは、パターンにboolean型の構造(structure)を取ることができます。
ブーリアン型(ブーリアンがた、英: Boolean datatype)は、真理値の「真 = true」と「偽 = false」という2値をとるデータ型である。
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%AA%E3%82%A2%E3%83%B3%E5%9E%8B
ざっくりいうと、パターンを、”bd bd ~ bd”という書き方ではなく、”1 1 0 1″や”t t f t”というように、2進数で書けるようになる、というのがstructです。
具体例を以下に記載しました。以下の3行は、同じ音が再生されます。
d1 $ s "808bd 808bd ~ 808bd"
d1 $ struct ("t t f t") $ s "808bd"
d1 $ struct ("1 1 0 1") $ s "808bd"
上記のように、パターンを作るのに、毎回808bdと書くのではなく、tとf、または1と0でパターンを作ることができます。
ちなみに、tはtrue、fはfalseという意味ですが、1と0で書いたほうが簡単です。
今回の動画では、structを使って、以下のように記述して4つ打ちのパターンを作成しました。
d1 $ struct ("1 1 1 [1 0 <0 0 1 0> <0 1>]") $ s "bd"
ちなみに、似た形ですが以下のようにgainを使用しても近いことはできます。
ただしこの場合は、sの前は#であることと、()があってもなくてもよいことに注意してください。
d1 $ gain "1 1 1 [1 0 <0 0 1 0> <0 1>]" # s "bd"
legato
legatoは、サンプルの音の長さを決めることができます。
legato x とすると、再生したサンプルはx秒まで再生されます。
例えば以下のようにすると、サンプル”bev”は0.5秒間だけ再生されます。
d1 $ s "bev" # legato 0.5
今回の動画では、ベース音の長さを調整するため、legato(choose[1,1,0.9,0.6])として、legatoの長さを1秒か0.9秒か0.6秒のいずれかが選ばれるように設定しました。
d5 $ struct ("1 [0 1] 0 1 [0 1] 0 1 [0 1]") $ s " bass1:0" # legato (choose[1,1,0.9,0.6])