[#TouchDesigner] Tap TempoのWikiページを和訳してわからないところを補足してみた

# はじめに
TouchDesignerを使ってVJをしている皆様ごきげんよう。
現場でテンポに合わせた展開を作りたいとき皆様どうしてますでしょうか？
テンポを即座に変更/調整できることは、多くのライブ指向のプロジェクトにとって超重要ですよね。
いろいろな方法があると思いますが、「タップをしてBPMを計測できる機能があるよ」と教わったので、それと思しきwikiの項目「Tap Tempo」を和訳してみました。
概要は、『TouchDesignerの「Beat Dialog」というパネルについている[Tap]ボタンや[Listen]ボタンを「CHOP Execute DAT」を使ってボタンや外部機器からでも制御できるようにしましょう。』ってな感じです。
もし、誤訳している場合は、バシバシ修正を入れてくださいませ。
宜しくお願い致します
参考ページ : [Tap Tempo - Derivative TouchDesigner099 Wiki](https://docs.derivative.ca/index.php?title=Tap_Tempo)

# 説明
## Beat Dialogというパネルがある
メニューバーの「Dialogs」から表示できる「[Beat Dialog](https://docs.derivative.ca/index.php?title=Beat_Dialog)」には、[TAP Tempo]ボタンや[Listen]ボタンというのがあります。

<img width="399" alt="スクリーンショット 2018-08-09 19.50.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/5343/bba7a784-9dc8-65d6-beb4-ddd0343a1d5c.png">

Beat DialogのBeat Inputを「Listen/Tap」に設定して、[Listen]ボタンがオフの状態で[Tap]ボタンを1タップすると4ビートサイクルのフェーズをリセットします。

BPMを計測するには、まず[Listen]ボタンをオンにします。 次に、各小節の1拍目で[Tap]ボタンを押して、BPMを計測します。 ビートパネルは、あなたのタップを最も近いBPMに平均化します。

 TouchDesignerでは、[Tap]ボタンや[Listen]ボタンを複製するスクリプトを使って、任意のハードウェアまたは外部ソフトウェアから希望の「Time COMP」を調整することができます。

## DAT(1)を作成
まずDAT「CHOP Execute DAT」を作成します。
<img width="357" alt="スクリーンショット 2018-08-09 20.00.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/5343/873ea549-fc77-fb56-d137-192eb7561387.png">

## DAT(1)にコマンドを入力
<img width="516" alt="スクリーンショット 2018-08-09 20.06.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/5343/b691ed08-4dbe-2710-28ef-d1deb2ae2b62.png">
次のコマンドを入力します。

```
opparm /path/to/time tempo `execute("beat -t")`
```

1）「/path/to/time」は、変更したいTime COMPへのパスです
2）「\`」はバックティックです。一重引用符ではありません（ALTキーを使って入力してください）

このスクリプトは、Beat Dialogの[Tap Tempo]ボタンと同じように機能します。ハードウェアやプロジェクトの周りの複数のTime COMPにすばやくマッピングできます。

## DAT(2)を作成しコマンドを入力
<img width="523" alt="スクリーンショット 2018-08-09 20.07.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/5343/36935b68-25f1-7a8b-0325-10e620f13cd4.png">
別のDATを作成し、次のコマンドを入力します。

```
beat -b $BPM
```

このスクリプトは、テンポ平均計算をリセットします。たとえば、最初のスクリプトを使用してテンポをタップし、1分後に別のタブでタップすると、テンポが大幅に下がります。この、2つ目のスクリプトは、新しくテンポをタップして計測する前に（もしくは、テンポをタップした後に、）Beat Dialogボタンをリフレッシュする機能です。

# 例えば
[Media:TapTempoExample.toe](https://docs.derivative.ca/images/f/ff/TapTempoExample.toe)
<img width="833" alt="スクリーンショット 2018-08-09 19.42.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/5343/b9b1a36c-a942-f57a-9ee9-5eb5b7ec01f3.png">

TapTempoExample.toe（上のリンク）を開き、Beat Dialogを開きます。

このプロジェクトのスクリプトは、CHOP Execute DATの内部で実行されており、メインのTime COMP（/local にあります）を制御しています。[Tap Tempo momentary]ボタンをクリックすると、Beat Dialogのテンポが変わります。

[TUIKボタン](https://docs.derivative.ca/index.php?title=TUIK)は、Null CHOPに接続されています。 CHOP Execute DATによって読み取られ、ボタン押下時のみONで実行されます。

特定のハードウェアやソフトウェアをスクリプトにマッピングしたい場合は、OSC In CHOPまたはMIDI In CHOPを追加し、その出力をサンプルプロジェクトファイルのNull CHOPまたはTUIKボタンに接続するだけです。

下のスクリーンショット（別のプロジェクトから）には、CHOP内のOSCがあり、CHOP Execute DATからその中のTap Tempoスクリプトで直接読み込まれています（強調表示されたDAT、chopexec1を参照）。
![TapTempoTutorialPic.png](https://qiita-image-store.s3.amazonaws.com/0/5343/1caf7a82-72b8-4411-f78f-b418f43afce6.png)

# 訳してみての感想
使っている2018.25バージョンでは「TapTempoExample.toe」読み込み時にいくつかエラー出てて、正しく動作してない予感あり。
そもそも、「Beat Dialog」の挙動がよくわからなかったので、追記。
具体的にどうしたらいいのかがファイル見てもよくわからなかったので、また今度調べて書く。
16小節で1ループとか、ビートをハーフにするSwitchとか、ビートごとに視点が切り替わるカメラとか色々やると面白いかもですね。オラ、ワクワクすっぞ。
wikiが結構省略して書かれてるので、補完するの大変だった....

## 宣伝
![20180825#OMTXX(Vertical).jpg](https://qiita-image-store.s3.amazonaws.com/0/5343/6e9322e5-e820-2263-b057-d56250cc3770.jpeg)
2018/8/25(土)18:00 高円寺4thで[#OMTXX](http://omantic.me/?p=754)というイベントをやります。
TouchDesignerを使ったVJで参戦してます。
もし、ご興味ありましたら来てちょ。