ダンスミュージックで多用されるテクニックをtidalcyclesで実現できる方法を考えました。
これを使えばカオスになりがちなtidalcyclesでも、ある程度メリハリをつけることができると思います。
Contents
動画
コード
setcps(128/60/4)
let
x = every 5 ((sometimesBy 0.2 (# crush "1")).sometimesBy 0.1 (# n 5))
y = every 6 ((|*| speed "0.7 0.8 1.5 0.5"). (#lpf (rangex 500 10000 $ rand)).(#lpq 0.2))
z = every 7 (stut' (irand 4) (choose[1/16,1/8]) (|> coarse (irand 16)). sometimesBy 0.3 (# n (irand 3)))
dj = (# hpf (slow 8 $ rangex 200 3000 saw)). (# hpq 0.4)
pat = "{0 4 2 3 [5,0,1] 4 2 3*5 [<3 5*5>,0] ~ 2 5 [0,1] ~ 2 <3 0 2 0>}%16"
d1
$ swingBy (1/12) 8
$ whenmod 32 24 dj
$ someCyclesBy 0.05 ((# room 0.8) . (# sz 0.8))
$ x
$ y
$ z
$ s (fit 0 ["Kick:7","Snare:25","Hihat:6","808lt:1","can","Chord:5"] pat)
# cut (wchoose[(1,0.97),(0,0.03)]) # gain 1.2 # shape 0.8 # speed 0.8
d2
$ s "Cymbal/32" # room 0.9 # sz 0.9 # gain 1 # speed 0.5
d3
$ swingBy (1/16) 8
$ whenmod 32 28 (# gain (slow 4 $ range 0 1.3 saw))
$ s "sn:3*16" # gain 0 # shape 0.5
hush
上記コードはtidalcyclesのデフォルト音源にないサンプルを使用しているので、そのままコピペしても再生できませんのでご注意ください。
fitを使った4つ打ちドラム
fitとletを使って4つ打ちドラムを作りました。
以下のようにすると、4つ打ち、2拍目4拍目スネア、裏拍のハイハットのパターンが作れますね。
[ ] を使えばKickとSnareを同時に鳴らせます。
let pat = "{0 ~ 2 ~ [0,1] ~ 2 ~ 0 ~ 2 ~ [0,1] ~ 2 <~ 0>}%16"
$ s (fit 0 ["bd","sn:1","hh"] pat)
上記例の~の箇所は自由に設定できますので、fitで別の音をリストに加えて遊べますね。
動画では以下のようにしていました。
let pat = "{0 4 2 3 [5,0,1] 4 2 3*5 [<3 5*5>,0] ~ 2 5 [0,1] ~ 2 <3 0 2 0>}%16"
$ s (fit 0 ["Kick:7","Snare:25","Hihat:6","808lt:1","can","Chord:5"] pat)
DJ系のハイパスフィルター
DJが盛り上げでよく使うハイパスフィルターを再現しました。
let dj = (# hpf (slow 4 $ rangex 200 3000 saw)). (# hpq 0.4)
d1
$ whenmod 16 12 dj
$ s "[bd hh [bd,sn:1] hh]*2"
djという変数を定義します。
rangex 200 3000 saw で、200Hzから3000Hzまで、saw tooth waveの波形でcutoff周波数を上昇させます。
slow 4によって、4サイクルかけて周波数を上昇させます。
hpq 0.4でQ値をほどよく設定しています。
whenmod 16 12 dj で12サイクル目から16サイクル目という区切りの良いタイミングを指定しています。
盛り上げるスネア連打とシンバル
ハイパスフィルターとは別に、d2でクラッシュシンバル、d3で盛り上げるためのスネア連打を作りました。
d2
$ s "hh:1/16" # room 0.9 # sz 0.9
d3
$ whenmod 32 28 (# gain (slow 4 $ range 0 1.3 saw))
$ s "sn:3*16" # gain 0
d2のクラッシュシンバルは、1サイクルごとに再生されるとうるさいので、/16 にして、16サイクルごとに再生されるようにしています。
また余韻を増やしたかったので# room 0.9と# sz 0.9 でリバーブをかけました。
d3では、sn:3*16 で16分音符でスネアを常時連打するパターンを作り、# gain 0 として、普段は音量を0にしておきます。
そして$ whenmod 32 28 (# gain (slow 4 $ range 0 1.3 saw)) で、gainを徐々に上げていけるようにして盛り上げを作りました。