パターンをスタック/ 連結する
stack
“stack”によって、リストに含まれるパターンを全て同時に再生することができます。文字通り、「スタック」する。「レイヤー」させると考えても良いと思います。
d1 $ stack [
sound "bd bd*2",
sound "hh*2 [sn cp] cp future*4",
sound (samples "arpy*8" (run 16))
]
スタックしたパターン全体に「関数」 や「エフェクト」を適用してみます。
d1
$ every 4 (slow 2)
$ whenmod 5 3 (# speed "0.75 1.5")
$ stack [
sound "bd bd*2",
sound "hh*2 [sn cp] cp future*4",
sound (samples "arpy*8" (run 16)) ]
# speed "[[1 0.8], [1.5 2]*2]/3"
fastcat
fastcat は、パターンを次から次へ連結させていきます。
d1 $ fastcat [
sound "bd sn:2" # vowel "[a o]/2",
sound "casio casio:1 casio:2*2"
]
fastcat は、全体のパターンを一つのサイクルにネジ込むため、連結するパターンが増えるほど、テンポ感が早くなります。
d1 $ fastcat [
sound "bd sn:2" # vowel "[a o]/2",
sound "casio casio:1 casio:2*2",
sound "drum drum:2 drum:3 drum:4*2"
]
cat
cat ( もしくはslowcat ) は、連結してもテンポ感は変わらずに、1サイクルの時間がどんどん 伸びていきます。
d1 $ cat [
sound "bd sn:2" # vowel "[a o]/2",
sound "casio casio:1 casio:2*2",
sound "drum drum:2 drum:3 drum:4*2"
]
cat は 複数のシーケンスを組み合わせて、1つのパターンを作る際に、非常に便利な方法です。
さらに、randcat 関数というものがあります。
これは、[ ] に含まれる複数のパターンから、毎度ランダムに1つのパターンが選ばれて、再生されるというものです。
微妙に異なるパターンを複数スタックしておき、「どれが再生されるかわからない」という使い方も面白いと思います。
cut
キック、スネアなどの短いサンプルを使用してきましたが、長いサンプルを使って作業をすることもあるでしょう。
しかし、長すぎるサンプルでは音が鳴りっぱなしになり、思うようにコントロールできません。下の例では、arpy のスピードを遅くしているために、歯切れの悪いパターンになります。
d1 $ sound (samples "arpy*8" (run 8)) # speed "0.2"
cut エフェクトを使ってこれを解消します。
詳細には下の例の引数 “1” は、グループ ( cut group ) の割り当てを意味します。同じグループ内で次の発音があった際に、自動的にサンプルの再生が止まります。→Battery の Voice Group と同じ考えです。
d1 $ sound (samples "arpy*8" (run 8)) # speed "0.25" # cut "1"
内部処理で cut group は グローバルのため、複数のコネクションで同じグループを使用することはできません。
d1 $ sound (samples "arpy*8" (run 8)) # speed "0.25" # cut "1"
d2 $ sound (samples "bass2*6" (run 6)) # speed "0.5" # cut "2"
スタックとの併用
d1 $ stack [
sound (samples "arpy*8" (run 8)) # speed "0.25" # cut "1",
sound (samples "bass2*6" (run 6)) # speed "0.5" # cut "2" ]
( Composing Multi-Part Patterns )