ライブコーディング入門:TidalCycles篇パート1

はじめに

バイトの片山です。

前回はSonic Piを使ってライブコーディングをやってみようということでしたが、今回は最近にわかに流行りつつある?TidalCyclesに手を出してみたいと思います。

Sonic Piはディスクイメージを落としてくるだけで導入出来ましたが、TidalCyclesはちょっとだけ面倒くさいです。(Extemporeに比べればマシなので我慢しましょう)

ライブコーディングといいますと、一般的には勉強会とかプレゼンで見かけるアレですけれども、ここではコーディングによってリアルタイムに音楽を構築していくという意味のものになります。

界隈としてはコンピューターミュージックとかメディアアートの辺りで、雰囲気はTOPLAPとかを見てもらえればなんとなく分かっていただけるかと思います。結構ニッチな分野なのですが面白いので紹介も兼ねて入門していきたいと思います。

TidalCycles入門

TidalCycles導入

TidalCyclesはAlex McLean氏によって開発されたHaskellベースのライブコーディング(音楽)環境です。

一般的な意味での「ライブコーディング」に比べて、ライブコーディング(音楽)というだけでかなりニッチなのですが、そこからHaskellベースなんてことになったらかなりマイナーな存在です。

去年とかまでは日本語のドキュメントが滅茶苦茶少なかったのですが、最近はちょっとずつ増えてきたので案外とっつきやすいかもしれません。
一昨年くらいのバージョンまではSuperColliderを使わない仕組みだったのでもっと面倒くさかったです。

導入については公式サイト(英語)のInstallationのページを見てもらえれば大丈夫だと思いますが一応軽く説明します。

必要なものは

  • Haskell:cabalとかghcとか
  • Atom:エディター(筆者はAtom入れてないのでEmacsでやってるけどAtomの方が導入楽です)
  • SuperCollider:バージョン3.7以降のもの
  • Git:色々インストールするのに必要

です。

TidalCyclesはcabalでインストールするのでcabal installできるようにしましょう。

SuperColliderは音を出すために必要なアプリケーションです。公式サイトから落としてきましょう。バージョン3.7以降でないと対応していないみたいなので気をつけましょう。

エディタについてですが、AtomはTidalCycles用のプラグインを入れて起動してあげればいいみたいです。

EmacsのTidalCyclesモード導入については公式のInstallationにLinux、OS X、Windowsそれぞれでの説明が書いてありますので参考にしてください。大凡の流れとしては、tidal.elを引っ張ってきて、marmalade(Emacsのパッケージ管理してくれるやつ)でhaskell-modeを取ってきてという感じです。
細かい手順は公式サイトを見ればわかると思います。

vi派の人は自分で調べて下さい。


$ cabal install tidal

とか、エディタの設定とかの準備が終わったらSuperColliderを開きます。

最新バージョンは0.9.4ですが、私は諸般の事情により0.8.2というバージョンを使います。

バージョンを指定してインストールしたい場合は、

cabal install tidal-0.8.2

のようにやってあげればインストール出来ると思います。

以下バージョン等の参考までに。

$ cabal info tidal                                                        
* tidal            (library)
    Synopsis:      Pattern language for improvised music
    Versions available: 0.7, 0.7.1, 0.8, 0.8.1, 0.8.2, 0.9.1, 0.9.2, 0.9.3,
                        0.9.4 (and 67 others)
    Versions installed: 0.8.2
    Homepage:      http://tidalcycles.org/
    Bug reports:   [ Not specified ]
    Description:   Tidal is a domain specific language for live coding pattern.
    Category:      Sound
    License:       GPL-3
    Author:        Alex McLean
    Maintainer:    Alex McLean <alex@slab.org>, Mike Hodnick <mike.hodnick@gmail.com>
    Source repo:   https://github.com/tidalcycles/Tidal
    Dependencies:  base <5, containers -any, hashable -any, colour -any,
                   hosc >0.13, text -any, mersenne-random-pure64 -any,
                   time -any, parsec -any, safe -any, websockets >0.8,
                   mtl >=2.1, tidal -any, tasty-hunit -any, tasty >=0.11,
                   base ==4.*
    Documentation: [ Not installed ]
    Cached:        Yes
    Modules:
        Sound.Tidal.Context
        Sound.Tidal.Dirt
        Sound.Tidal.OscStream
        Sound.Tidal.Params
        Sound.Tidal.Parse
        Sound.Tidal.Pattern
        Sound.Tidal.Strategies
        Sound.Tidal.Stream
        Sound.Tidal.SuperCollider
        Sound.Tidal.Tempo
        Sound.Tidal.Time
        Sound.Tidal.Transition
        Sound.Tidal.Utils

……脱線してしまいましたが、SuperColliderの話に戻ります。

SuperColliderを開いたらinclude("SuperDirt")と入力してCommand + Returnとかで実行してあげます。

するとSuperDirtというライブラリ(TidalCyclesと連携してくれる)が入ります。
しばらくしてthe class library may have to be recompiledみたいなログがコンソールに表示されたら無事成功しているので、SuperColliderを再起動しましょう。

TidalCyclesを動かしてみる

まずはSuperColliderを起動して、SuperDirt.start;と入力してCommand + Returnとかで実行します。

エラーが出ているときはサンプリングレートが揃っていない時が大半なので、コンソールのメッセージをよく見て、Macの場合はAudio MIDI設定とかで合わせてあげましょう。ほかのOSの方は自分で調べて下さい。

SuperDirtの起動が成功すると、SuperDirt: listening to Tidal on port 57120みたいなメッセージが出てきます。

これでSuperCollider側の準備は完了です。

あとはエディタを開いて、ファイル名.tidalとかを作ってあげて、Tidalモードを起動して(EmacsならC-c C-s)

d1 $ s "bd sn"

とか書いて、カーソルをコードに合わせてEvaluate(EmacsならC-c C-cとかC-c C-e)してあげましょう。AtomはCommand + ReturnとかCtrl + Returnだったような気がします。

これで音が鳴っているはずです。

おわりに

導入だけで結構長くなってしまったので今回はこれで終わりにします。

関連記事(サウンドとコンピュータ)

ライブコーディング入門:Sonic Pi篇パート1

python-oscを使ってみる:前編

python-oscを使ってみる:後編

応用編1: pythonとopenFrameworksをOSCで接続する

応用編2: PythonとopenFrameworksとPuredataをOSCで接続する

iPhoneとopenFrameworksをOSCで接続する

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

Yuki.K

1995年生まれ。慶應大学SFCに在学中。 夢も希望もなくキャンパスを彷徨っていたところ、夢と希望いっぱいのBPS村に引きずり込まれてしまった大学生アルバイト。 雑用担当

Yuki.Kの書いた記事

開発
python-oscを使ってみる:後編

2017年07月19日

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ