[Series] はじめてのTidal Cycles : Part.9

ファンクション/関数(Function)を利用すると、リズムパターンをよりプログラム的に生成することができます。Tidal Cyclesには様々なファンクションがありますので、そこからピックアップした数種類を元に使い方を学んでいきます。

ーーーーー
Index/目次
ファンクション/関数(Function)の使い方
stack
everywhenmod
fast
revjux
randirand
あとがき

ーーーー

ファンクション/関数(Function)の使い方

ファンクションの使い方は、利用したいリズムパターンに、関数名と引数(必要な場合)を入れ、リズムに変化を加えます。コード記載方法は奏者それぞれですが、基本的に$の後に関数名、引数とコードを記載します。$は( )括弧の省略形なので、$の代わりに( )括弧で囲んでも同様に利用できます。$の利点は、( )括弧のように関数を閉じる必要がなく、ライブコーディングの際に、括弧の閉じ忘れなどのミスがなくなるので便利です。

ーーーーー

stack

< Description >
stack は、複数のパターンをリスト化し、それらを重ねることによって新しいパターンを生成します。分かりやすく言えば、複数のsound” “を重ねて一つのパターンにできます。ひとまとまりになることで、それらの複数のパターンに一括でエフェクトやその他ファンクションを適用する事がきます。
使用には[ ]で囲み、サウンドを重ねる際、, カンマを忘れないようにしてください。また 最後のsoundの後 , カンマは必要なく、入れるとエラーになるので注意してください。

< Examples >

d1
  $ whenmod 4 3 (rev)
  $ stack [ 
  sound "kick:2*4", 
  sound "~ [cp hc] ~ hh", 
  sound "bass" +| n "{2 [2 2] [4 5 7] 2 [4 5 7]}%4"
  ]
  # room "0.3" # size "0.7"
  # speed "2 1 [2 3]"

stack3つのsoundをひとまとまりにし、whenmod(ファンクション)やroom、speed(エフェクト)などのを一括で適用させています。

ーーーーー

every

< Description >
every は、他の関数を条件付きで適用することができる関数です。everyの後に「関数を適用する頻度」「適用する関数」「適用するパターン」3つを入力します。「適用する関数」はエフェクトも含みます、その場合エフェクト前に # をつけ括弧で囲みます。

< Examples >

d1 $ every 3 rev $ n "0 1 [~ 2] 3" # sound "arpy"

3回に1回 “0 1 [~ 2] 3” が反転します。

d1 $ every 3 (fast 2) $ n "0 1 [~ 2] 3" # sound "arpy"

(fast 2) のように「適用する関数」に引数がある場合は ( ) 括弧をつける必要があります。括弧の代わりに$は利用できません。$を利用してしまうと続く パターンの $ n が続くので every関数は多くのパラメータを渡されたとエラーを返してしまいます。

ーーーーー

whenmod

< Description >
whenmodは、everyと同様、条件付き適用する関数ですが、二つのパラメータを利用します。
これは,現在のループ回数を第1パラメータで割った余りが第2パラメータより大きいか等しい場合に,そのパターンに関数を適用するという条件です。「適用する関数」はエフェクトも含みます。

< Examples >

d1 $ whenmod 5 2 (fast 2) $ sound "kick sd [kick hc] sd"

この例では、初めの2回は通常後の3回に fast 2 が適応されます。

ーーーーー

fast

< Description >
fast は音の速さを変えるファンクションです。引数に応じた速度で変化します。
下記コードの場合、2は2倍速、0.5は半分の速さ(遅くなる)ます。引数の値が2つ以上の場合は、 ” ” で囲みます。

< Examples >

d1 $ fast 2 $ n "0 2 0 3" # sound "kick"

fast 2 は2倍の速さになり、 “0 2 0 3” が1サイクルに2回流れることになります。

d1 $ fast 0.5 $ n "0 2 [3 5] [4 7]" # sound "cpu"

fast 0.5 は半分の速さになり、 “0 2 0 3” が 1回流れるのに2サイクル必要になります。

d1 $ fast "2 4" $ n "0 2 0 3" # sound "kick"

引数を二つ使用の場合、” ” で引数を囲みます。サイクル前半は2倍速、後半は4倍速となります。下記内容と同様になります。※上記は1サイクルの構造は2、下記は1サイクル構造は4。

d1 $ n "[0 2] [0 3] [0 2 0 3] [0 2 0 3]" # sound "kick"

ーーーーー

rev

< Description >
rev は、与えられたパターンを反転して返します。

< Examples >

d1 $ rev $ n "0 1 2 3 4 5 6 7" # sound "arpy"

rev がない場合は、 “0 1 2 3 4 5 6 7” ですが、revを適応すると “7 6 5 4 3 2 1 0” と反転します。
よく下記の jux と合わせて jux (rev) のように使われたりします。

ーーーーー

jux

< Description >
jux は右側のチャンネルだけにファンクションを適応させます。面白いステレオ効果が生成できます。
先ほどのrevを使用すると右側だけパターンが反転します。(下記例より)

< Examples >

d1 $ jux (rev) $ n "0 1 2 3 4 5 6 7" # sound "arpy"

右側のチャンネルだけ反転します。

d1 $ jux (fast 2) $ n "0 1 2 3 4 5 6 7" # sound "arpy"

右側のチャンネルだけ fast 2 にて2倍の速さになります。

ーーーーー

rand

< Description >
rand0.0 から 1.0 まで浮動小数点数の(擬似)ランダムパターンを生成するオシレータです。また、1.0以上でも利用でき、例えば、rand + 1 としプラスすると 1.0 から 2.0 までの小数点をランダムで返します。

< Examples >

d1 $ sound "kick*8" # pan (rand)

panの引数が0.0〜1.0にてランダムに返って、kick音が左右のチャンネルの間でランダムに演奏されます。

d1 $ sound "arpy*4" # speed (rand + 0.5)

0.5から1.5の間の数字をランダムで返します。

ーーーーー

irand

< Description >
irand は rand と似ていますが、0 から n-1 の間の(擬似)ランダムな整数(integer)を生成するオシレータです。特に、フォルダからランダムにサンプルを選ぶのに使われます。irand の i は integer(整数)の意味です。

< Examples >

d1 $ sound "amencutup*8" # n (irand 8)

あとがき

ファンクションを利用するとさまざまな音やパターンの構造を変化し楽しむ事ができます。ライブコーディングでは、関数の組み合わせによる予期せぬ展開が楽しめます。
その他にも、さまざまなファンクションがあります。別記事にて少しづつまとめていきますのでご覧ください。

[保存版] Tidal Cycles ファンクションまとめ (Functions)/随時更新

ーーーーー

[Series] はじめてのTidal Cycles
Tidal Cyclesを始めたばかりのビギナーの方へ、また自身の復習のためにシリーズにまとめ更新していきます。コメント等ありましたら、ヘッダーメニューからInstagramまたはTwitterアカウントへメッセージください。下記メニューは随時追加されます。

Part.1 / Tidal Cyclesのサンプルを使って音を鳴らす(基礎編)
Part.2 /Tidal Cyclesの仕様、リズム構成とテンポの設定方法(CPSとBPM)
Part.3 /リズムを作る表記方法(Mini Notation)
Part.4 /オシレーター(Oscillators)
Part.5 /ユークリッドシーケンス(Euclidian Sequences)
Part.6 /オーディオエフェクト(Audio effects)
Part.7 /シンセサイザー(Synthesizers)
Part.8 /パターン構造と値(Pattern structure and values)
Part.9 /ファンクションを利用したパターン生成(Functions)

ーーーーー

barbe_generative_library

TidalCycles 参考書籍
[Book] 演奏するプログラミング、ライブコーディングの思想と実践

programing_play_bnn-book-image

初版/ 2018.12.21
ページ数/176ページ
出版社/ビー・エヌ・エヌ新社
言語/日本語

【Amazon.co.jp で購入】

ーーーーー

“Books”では、“barbe_generative_Library”として、
barbe_generative_diary の創作において実際に購入し、読んだ本を紹介します。

ーーーーー