Tidalでライブコーディング! - セットアップ編

**注意!! : TidalCyclesがver 0.8にアップデートされ、インストールが大幅に簡略化されました。新しいバージョンでのインストール方法はこちらを参照してください。**

- [TidalCycles 0.8 リリース](http://qiita.com/yoppa/items/b195d4014de63686b2e0)

## Tidalとは?

Tidalは、Alex McLean氏によって開発されたHaskellを拡張したライブコーディング(Live Coding)環境です。

- Tidal http://tidal.lurk.org/
- Alex McLean http://slab.org/

どんなことができるのか理解するには、まずはデモ映像を観てみるのが早いかもしれません。

Live-coded music twitch.tv stream 2015-03-23
[![Live-coded music twitch.tv stream 2015-03-23](http://img.youtube.com/vi/JOMslt17KvY/0.jpg)](https://www.youtube.com/watch?v=JOMslt17KvY)


そもそもライブコーディングとは何かというと、ざっくりと言うと、プログラムをリアルタイムに実行しながらコーディングする行為自体をパフォーマンスするジャンルです。主に、音楽や映像を生成することが多いですが、Webや詩などその適用範囲は拡がっています。

- Wikipedia https://en.wikipedia.org/wiki/Live_coding
- Toplap (ライブコーディングのポータルサイト) http://toplap.org/

Tidalは、こうしたライブコーディングの環境の中でも、リズムパターンの生成に特化した環境となっています。シンプルな文法で複雑なリズムパターンをリアルタイムに生成し変奏していくことが可能となっています。Mac OS X、Linux、Windowsで動きます。

## Tidalのインストール

ここでは、OS Xの環境に絞って説明します。その他のOSのインストール方法は、[オフィシャルのドキュメント](http://tidal.lurk.org/getting_started.html)を参照してください。

- 追記: WindowsでのTidalインストールについてまとめました [TidalをWindowsでセットアップする](http://qiita.com/yoppa/items/a0826e6b44c3bc701116)

OS Xのインストールでは[Homebrew](http://brew.sh/)を使用します。Homebrewが入っていない場合はまずインストールします。(既にHomebrewを使用している場合は必要ありません)。

```shell-session
% /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

Tidalは、大きく分けて2つのパートから構成されています。1つはリズムを生成するTidal本体。これはHaskellのパッケージとしてインストールします。2つ目は“Dirt”というサンプラーです。様々なリズムやシンセサイザー、効果音などがプリセットされていてHaskellから呼び出されてサウンドを生成します。ここでは触れませんが、応用として、TidalはDirtを使わずに外部のMIDI音源やソフトシンセ、さらには、Max/MSPやSuperColliderなどの言語とOSCで連携することも可能です。

Dirtをインストールしていきます。まずは必要なライブラリーをインストール。

```shell-session
% brew install liblo libsndfile libsamplerate
```

その後、TidalとDirtを連携するため、[Jack](http://www.jackaudio.org/)をインストールします。

```shell-session
% brew install jack
```

Dirtの本体をGithubからダウンロードしてインストールします。まずインストールしたいディレクトリに移動してから以下のコマンドでインストールします。

```shell-session
% git clone --recursive https://github.com/tidalcycles/Dirt.git
% cd ~/Dirt
% make clean; make
```

次にHaskellの実行環境を構築します。Tidalでは[GHC](https://www.haskell.org/ghc/)というHaskellのコンパイラとインタプリタを利用します。これもHomebrewから。

```shell-session
% brew install ghc
$ brew install cabal-install
```

次にGHCのパッケージ管理システムであるcabalを利用して、Tidalの本体をインストールします。

```shell-session
% cabal update
% cabal install cabal-install
% cabal install tidal
```

これでインストールの完了です!

## エディターのインストール

しかし、まだこれだけではTidalを使うことはできません。Tidalでは既存のテキストエディターからHaskellのインタプリタを呼び出して使用する仕組みになっています。オフィシャルに対応しているテキストエディターは、現状では、EmacsとAtomです。(Haskellを動作させることができるエディターであれば他でも使用できるものがあるかもしれません。)

ここでは、導入が簡単なAtomを使用する方法を紹介します。

Atomエディターを持っていない場合は、下記からダウンロードします。

- https://atom.io/

Atomを起動して、settings > install の検索欄で「Tidal」を検索します。おそらくトップにTidalのプラグインが表示されるので、インストールします。

<img width="1006" alt="screenshot_516.png" src="https://qiita-image-store.s3.amazonaws.com/0/115058/ea331087-e4be-edd8-a0d0-bb42256e007a.png">

## 実行してみる!

では、いよいよ実行してみましょう!

まず、Dirtをインストールしたディレクトリに移動して、Jackのデーモンを起動します。

```shell-session
% jackd -d coreaudio &
```

次にDirtを起動します。

```shell-session
% ./dirt &
```

これで、準備完了です。次にAtomで新規ファイルを開き「xxx.tidal」というファイル名で保存します。するとファイルタイプが「Tidal」になるはずです。

この状態で、メニューバーから Package > Tidal > Boot Tidal を選択します。

試しに以下のパターンを入力してみます。

```
d1 $ sound "909 ~ bass bass:2"
```

プログラムが書いてある行にカーソルがある状態で、command-enter キーを入力します。すると、リズムパターンが再生されるはず!? 

[実践編](http://qiita.com/yoppa/items/5f1f9a033f1273e33242) につづく!