はじめに
バイトの片山です。
前回は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だったような気がします。
これで音が鳴っているはずです。
おわりに
導入だけで結構長くなってしまったので今回はこれで終わりにします。