HYUDORO

勉強したことや日記など

TidalCyclesの音色と実行パターンに関するメモ

音のパターンを数字や処理で見るのは直感的でないため、ある程度思い通りのリズムにするには実践しながらクセのようなものを体験し、習得しなければいけない。なので、いろいろ試していった所感をメモっていきたいと思う。

今回検証するのはnに関して、音色の操作/*を使う場合に、どのようなサイクルで数値が適用されるのかを公式のサンプルを使って確認した。

n - TidalCycles userbase

d1 $ s "drum [cp hh] odx*2 arpy*2" # n "[1 3 5 0 2]/2"

コードからまずパッとわかるのは、7つの要素で構成され、「drum」「cp」「hh」「odx」「arpy」5つの音色がある。♩ ♫ ♫ ♫というリズムでそれらの音が鳴る。

これにnを使って数値パターンをコントロールパターンに入れ込み、音色を変化させている。別の言い方をすると、コントロールパターンを見ると特に番号の指定がないので、すべての要素の音色が0 0 0 0 0 0 0になっており、この0の並びに対してnを使って数値を代入していく。

数値パターンは/2されることによって、コントロールパターンが2回再生されるまでに入れ込みが終わりきるようになっている。ここが理解しづらい。そもそも7つの要素に対し、5つの数値をどのように入れ込むのか、その数値がさらに/2されるとどう入れ込まれるのか。

検証するために、各音の要素をnumbersに置き換え、数値を読み上げてもらった。結果は以下の通りだった。

# n "[1 3 5 0 2]" の場合

1 3 3 5 0 0 2

# n "[1 3 5 0 2]/2" の場合

1 1 1 3 3 3 5 5 0 0 0 2 2 2

# n "[1 3 5 0 2]*2" の場合

1 5 0 1 3 5 0

先述のように、/2が付いていることでひとつの数値パターンが最後まで入れ込まれるまでにパターンを2回再生することを必要としている。

また数値の重複にも着目したい。/2が付いていない方は、5つの数値を7つの要素に当てはめるため、3と0がひとつ増えている。次に/2の方は、5を中心として左右が3つずつになった。何回再生してもこの通りになったため、ユークリッドシーケンスのように何かしらのルールで不足分を補っているようだった。

上記のパターンをアナログに書き起こすと以下のようになる

d1 $ slow 2 $ s "drum:1 [cp:1 hh:1] [odx:3 odx:3] [arpy:3 arpy:5] drum:5 [cp:0 hh:0] [odx:0 odx:2] [arpy:2 arpy:2]"

*2についても調べてみた。1パターンの間に2回数値が入れ込まれるわけはないので、あまってしまう数値を自動で取り除くようだった。

補填と除去のどちらにせよ、アルゴリズムに則ると利用者がコントロールできるパターンではなくなってくることが今回わかった。これは悪い意味ではなく、ライブコーディングにはこのようなランダム性を表現に取り入れてこその楽しみがあると再認識できた。