TDAbletonを使ったTouchDesignerとAbleton Liveの連携方法

結構ハマったので忘備録的に書いておきます。

# 用意するもの
* Ableton Live 10 （無料体験版でも良いです）
* TouchDesigner 099 2018.26450

# 初期設定

## 1. Ableton用ファイル一式の取得
Ableton LiveにTouchDesignerと連携するためのスクリプトとツールを設定します。
TouchDesignerのPaletteにあるTDAbletonを右クリックして『Browse Folder』を選択していけるフォルダの2階層上にあるTDAbletonフォルダにAbleton Liveに入れ込む『TouchDesginer』というフォルダ名のファイル一式があります。
普通にインストールしてればディレクトリは下記の感じだと思います。

* Windows >> C:\Program Files\Derivative\TouchDesigner099\Samples\TDAbleton
* MacOS >> /Applications/TouchDesigner099.app/Contents/Resources/tfs/Samples/TDAbleton (マウス操作だと『パッケージの内容を表示』で中に入る必要があります)

## 2. ファイルのコピーと読み込み
次にAbleton LiveにこのTouchDesignerフォルダ以下一式を読み込ませます。
TouchDesignerフォルダをコピーし、ペーストします。
通常であれば下記のディレクトリです。

* Windows >> C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts
* MacOS >> /Applications/Ableton Live 10 Suite.app/Contents/App-Resources/MIDI Remote Scripts (マウス操作だと『パッケージの内容を表示』で中に入る必要があります)

## 3. TouchDesigner連携用Audio Effectファイルの読み込み
Ableton LiveのGUIからTouchDesigner連携用のAudio Effectファイル一式を利用可能にするため、さきほどのTouchDesignerフォルダをコレクション（Ableton Liveのサウンドとかインストゥルメントとか並んでるところ）に追加します。

* 1. 『フォルダを追加』ボタンを押す
* 2. ブラウザが開くので、先ほどAbleton Live用にコピーしたTouchDesignerフォルダを指定(macだと指定が難しいかもしれません。私は直接ディレクトリのアドレスを指定しました。)

<img width="1447" alt="スクリーンショット 2018-10-08 10.25.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/152718/b589f5fa-0be9-7833-c3b9-da22cfd3204c.png">

## 4. Midiの設定
最後にMIDIの設定を行います。
Ableton Liveの環境設定を開いてControl SurfaceにTouchDesignerを追加します。
<img width="612" alt="スクリーンショット 2018-10-08 10.46.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/152718/36ffeecc-5578-12d4-83a6-6d5a8864a75f.png">

#Abletonの使い方
上記の設定が済んでいればあとは普通にAbletonのプロジェクトを利用可能です。
基本的にはそれぞれのトラックにオーディオエフェクトとしてTDAほげほげを追加すると通信可能になります。
森岡が触ったやつを適当に書いておきます。

* TDA_Master >> Masterにとりつける。ポート番号の設定とTouchDesignerとの接続ステータスが確認できる。Song IDが設定できる。
* TDA_Level >> Levelを送ることができる。好きなところに取り付けられる。
* TDA_MIDI >> MIDIトラックに取り付ける。MIDI信号を送ることができる。
* TDA_Audio_Analyzer >> Ableton側でHigh、Mid、Lowを区切ってLevelを送れる。
* TDA_Audio_Effect_Rack >> 通常のRackの代わりに利用することでMacroを送れるようになる。
* TDA_Instrument_Rack >> 通常のRackの代わりに利用することでMacroを送れるようになる。
* TDA_MIDI_Effect_Rack >> 通常のRackの代わりに利用することでMacroを送れるようになる。

# TouchDesignerの使い方
TouchDesigner起動後、PalleteからTDAbletonを選択し、中のtdAbletonPackageをプロジェクトにドラッグ＆ドロップします。
同一PCでの動作の場合、これだけでコネクションして値が取得できます。
tdAbletonPackageの中にはたくさんのCOMPが入ってるのですが、森岡が触って理解できたやつだけ書いておきます。
これだけでもかなりのことができるはず。基本すべてリアルタイムで更新されていきます。

* abletonSong1 >> 接続しているAbleton Liveの曲（プロジェクトファイル）の情報を受け取ります。
* abletonTrack1 >> Trackを選択することでTrackの情報を取得できます（Levelなども含まれます）。
* abletonDeviceParameters1 >>Deviceを選択することでDeviceの情報を取得できます。
* abletonMIDI1 >> TDA_MIDIの値を取得できます。
* abletonLevel1 >> TDA_LevelおよびTDA_Audio_Analyzerの値を取得できます。
* abletonRack1 >> TDA_Audio_Effect_Rack, TDA_Instrument_Rack, TDA_MIDI_Effect_Rackの値を取得できます。 

# Ableton LiveのPCとTouchDesignerのPCが異なる場合
Ableton Liveが起動しているPCとTouchDesignerが起動しているPCが異なる場合、ネットワークを組む必要があります。
[公式ドキュメント](https://docs.derivative.ca/TDAbleton)には"tdAbletonのAbleton AddressにAbletonが立ち上がっているPCのIPアドレスを入力してください" と書いてありますが、**それだけでは動きませんでした**。
森岡のほうでうまく行った手順は以下。

* 1. TouchDesignerを起動させ、TDAbletonも起動（この時点では接続できてないのでエラー）
* 2. Ableton Liveを利用したいPC上で起動
* 3. Ableton Liveを起動したPCのIPアドレスをTDAbletonのAbleton Addressに設定（この時点でも接続エラー）
* 4. TDAbletonの入ったプロジェクトを保存し、TouchDesignerごと終了する。
* 5. TDAbletonの入ったプロジェクトを再起動する。

これでうまく動きました。ちなみにTDAbletonのバージョンは**1.15.0**でした(TDAbletonは頻繁に更新をしている＋クラウドで管理しているようで、TouchDesignerとは異なるバージョン管理をおこなっているようです)。
恐らくバグなのでは・・・と思ってますが、どうなんでしょうか。とりあえず一回つながれば非常に安定動作するようです。