TidalCyclesでライブコーディングに挑戦しよう⚡

とにかくこの動画を見てくれ!

たった20~30行くらいのプログラムで音楽がつくれる!
それがTidalCycles!

この記事ではTidalCyclesについてザッと紹介し、さっきの動画で演奏している内容について解説します。
僕自身もTidalCyclesに入門したばかりなので、TidalCycles仲間が増えたらいいなって思ってます😸。

対象読者

  • 音楽が好きな人
  • DAWで作曲するのに飽きた人
  • Sonic PiやSuperColliderは触ったことあるけど……という人
  • 好奇心旺盛なプログラマー

目次

TidalCyclesとは

TidalCyclesは、音楽を自動で作曲・演奏するためのシステムです。
プレイヤーは演奏内容を表すプログラムをリアルタイムに作成し、次々とシンセサイザーの演奏を変更していきます。
普通の音楽演奏に例えるなら、楽譜をリアルタイムで書いていく感じでしょうか。

このように、リアルタイムにプログラミングすることを ライブコーディング と呼びます。

他のライブコーディング用システムとの違い

ライブコーディング用システムは他にもいろいろ存在しています。
他のシステムと比較したとき、TIdalCyclesは何がどうちがうのでしょうか?

個人的にしばらく使ってみた結果、、以下のようなメリット・デメリットがあると感じました。

  • メリット
    • 非常に短いコードで音楽を作れる
    • サンプラーを簡単に使える
  • デメリット
    • インストールが難しい

メリット: 非常に短いコードで音楽を作れる

ここでいう「コード」とは和音のことではなく、プレイヤーが書くプログラムのことです。
プレイヤーは、プログラミング用のテキストエディターを利用して、コードを書くことで演奏内容を指定します。

例えば、キックの4つ打ちを Sonic Pi で表現しようとすると、以下のようなコードになります。

live_loop :kick do
  sample :bd_haus
  sleep 1
end

ところが、TidalCyclesだと、たった1行で表現できてしまいます!

d1 $ sound "bd bd bd bd"

見た目にも直感的な感じがしますね。

サンプラーを簡単に使える

TidalCyclesは、デフォルトではSuperDIrtというサンプラーを利用するようになっています。
このサンプラーには200種類以上のサンプルが含まれています。
ベーシックなTR-808/909の音色や、ガバキックなども入ってたりする。

f:id:amagitakayosi:20170629223855p:plain

TR-808のキックだけでもたくさんある。

サンプルを使うには、 d1 $ sound "808bd" とするだけ!
自作のサンプルを使うときも、サンプルのフォルダに新しいフォルダを追加して、 bd808bd の代わりにフォルダ名を書くだけで良いです。便利!

インストールが難しい

TidalCyclesはまだ歴史が浅く、日本語情報もほとんどないので、環境構築がちょっと大変かもしれないです。
ProcessingやopenFrameworksで有名なyoppa氏が、TidalCyclesのインストール方法を解説されているので、そちらをご覧ください。

第9回 Live Coding入門 – TidalCycelsのセットアップと基本 | yoppa org

動画の解説

ここでは、記事冒頭で紹介した動画のうち、僕が作ったほうについて解説していきたいと思います。

YoutubeでTidalCyclesの解説動画を見てる内に、ブレイクビーツが以外に簡単に作れる事がわかり、ランダムに音を加工したりアニソンをサンプリングするだけでBreadkcoreが作れるのでは?と思って試してみたのでした。

この動画で使ったコードは以下の通りです。
(解説の都合で一部省略しました)

-- breakcore.tidal
cps (140 / 120)

d1 $ sound (samples "amen*8" (irand 12))
    # crush 4.5
    # cut 1
    # up (rand * 10)

d2
    $ s (samples "anime" (irand 22))
    # cut 8
    # up 2
    # gain 0.9
    # crush 3

テンポを設定

まず、1行目で曲のテンポを設定しています。

普通のDAWソフトだとBPMを指定しますが、TidalCyclesでは CPS という単位で指定します。
ちょっと奇妙な感じがしますが、これはTidalCyclesが拍単位 (beat) ではなく、サイクル (cycle) 単位で実行されるからです。
このため、5拍子や7拍子の曲を作ったり、ポリリズムの曲を簡単に実現できるというメリットがあります。

アーメンブレイク

次の段落では、いわゆるブレイクビーツを演奏しています。
TidalCyclesの基本的な文法は次のようになります。

f:id:amagitakayosi:20170629231221p:plain

トラック番号を指定して、パターンを指定して、エフェクトをかける……という順番ですね。

d1 $ sound (samples "amen*8" (irand 12))  -- "amen" サンプルをランダムに8回再生
    # crush 4.5  -- ビットクラッシャー
    # cut 1 -- サンプルの長さを調整
    # up (rand * 10)  -- サンプルのピッチをランダムに変更

今回は自分で用意した音声ファイルを利用しましたが、TidalCyclesにはデフォルトでいくつかドラムループ音源が入っているので、そちらを利用するのも良いでしょう。

カーソルをこの段落に移動し、 ⌘ + return (Windowsの場合は Ctrl + Enter)を押すことでプログラムを実行しています。
動画内では段落が光るところがありますが、そのタイミングでプログラムが実行されています。

アニソンをサンプリングして再生

最後の段落でも、やってることは先程の段落とだいたい同じです。
ただ、サンプルの再生スピードがあまりに速いと困るので、サンプルの再生回数と長さを調整しています。

たったこれだけのプログラムで、ちょっとしたブレイクコアができてしまいました……!!

おわりに

この記事をみて興味を持っていただけたら、是非TidalCyclesを触ってみてください!
いい演奏ができたら、TwitterYoutubeに演奏動画を公開してみてくださいね ⚡⚡