TouchDesignerのチャンネルをCHOPとスクリプトで自在に扱う

猫も杓子もTouchDesigner(以下TD)の昨今ですが、仕事で触ってみたのでノウハウをまとめてみる。僕のスキルとしては基本的にスクリプトでクリエイティブコーディングしてきてて、TDみたいなビジュアル言語なやつはMaxやPdをたまーに触ってたくらい。

TDのキモはチャンネル

TDはチャンネルという概念がポイントだと思う。チャンネルはチャンネル名に数値が紐付いてるもので、TD上では緑の線がチャンネルそのものを表している。チャンネルが持てる数値は1つの数値だけではなく、過去の数値群も持てる。これを分かりやすく実感する例が、Trail CHOP。下記画像のとおり、Trail CHOPがLFO CHOPで作られた数値を貯めていってグラフにして表示している。
f:id:miso_engine:20171227172541p:plain

CHOPは複数チャンネル扱える

初心者以外には当たり前な話だと思うのだが、CHOPは複数チャンネル扱える。パラメータウィンドウのChannel項目でチャンネル名を足していくと増える。簡単ですね。同じ処理をするなら単純にチャンネルを増やしていけば良い。
f:id:miso_engine:20171227172610p:plain
チャンネルを分けるならSelect CHOP、束ねるならMerge CHOP。
f:id:miso_engine:20171227172622p:plain

チャンネルを入力にPythonで処理したいならScript CHOPがおすすめ

スクリプトを書くOPは各種用意されているけど、一番のオススメはScript CHOP。スクリプトへのチャンネルの入力と出力をTD上で明示的に出来て、他のCHOPと同じように扱えるので。ここでは、オフセットをチャンネルごとに設定するためのシンプルなコードを書いてる。スクリプト以外でも出来そうだけど、書いちゃった方が早い。Pythonだし。
f:id:miso_engine:20171227172637p:plain

def onCook(scriptOp):
	scriptOp.clear()
	
	a = scriptOp.inputs[0]
	scriptOp.copy(a)
	

	for (count, chan) in enumerate(scriptOp.chans()):
		for i in range(0, scriptOp.numSamples):
			if count % 2 == 1:
				chan[i] -= 0.12
			elif count == 0:
				chan[i] += 0.25
			else:
				chan[i] -= 0.25
	
	return

Pythonのコード書くときは、OPSnippetsと下記リファレンスとにらめっこしながらって感じでやっている。
https://www.derivative.ca/wiki099/index.php?title=Category:Python

注意点

Pythonのところでエラーが出るとそこでめっちゃ時間食ってFPSがズドンと落ちるので注意。

余談

自在に出来るような気がしてきた……!ってところでTD以外に移行することになったのでエイヤッとまとめた。みなさん頑張りましょう。

Visual Thinking with TouchDesigner - プロが選ぶリアルタイムレンダリング&プロトタイピングの極意

Visual Thinking with TouchDesigner - プロが選ぶリアルタイムレンダリング&プロトタイピングの極意

  • 作者: 松山周平,松波直秀,ベン・ヴォイト,サムワンズガーデン
  • 出版社/メーカー: ビー・エヌ・エヌ新社
  • 発売日: 2017/09/15
  • メディア: 単行本
  • この商品を含むブログを見る

microbitでMicroPythonが簡単で便利、そして楽しい

先日した仕事で、無線のセンサータグ的な要件にピッタリだったので、microbitをMicroPython使って開発したんだけど、これが簡単、便利、楽しいの三拍子が揃っててよかった。
f:id:miso_engine:20171214181310j:plain

microbitのいいところ

  • 2000円程度と高くない
  • 入力と出力が標準装備
    • 入力:スイッチが2つ
    • 出力:5x5で配置された25個のLEDディスプレイ
      • 文字や画像を表示・スクロールするライブラリが標準装備
      • Pythonのエラーがディスプレイにスクロール表示される
  • BLE搭載
    • BLE機能は実際に使わなかったのだけど、microbit同士で簡単に通信できるBluetoothライブラリが添付されている
  • Webコンパイラ
  • 加速度センサ搭載
  • ドライバ不要
  • 日本語リファレンス完備
  • ワニ口クリップでIOポートを簡単に繋げる
  • 基板がかわいい

MicroPythonのいいところ

  • 書くのが楽
  • Pythonなのでコードが読みやすい
  • 対話式インタプリタで変数の情報とかを読み出せてデバッグが超楽
  • muというIDEが軽くて補完の機能も良い

microbit & MicroPythonのよくないところ

  • ポートが金属として露出しているのでちょっと気を抜くと触ってセンサの値がとんでもないことになりがち
  • MicroPythonの開発環境からは今のところ一意のIDを読み出せなさそう & プログラムを書き込むたびに記憶領域が吹っ飛ぶからID持たせるのが大変

コード例

左のボタンを押したらハート、右のボタンを押したらキリンが表示されるプログラム。たった7行で書ける。

全体的に

microbitというハードの良さとMicroPythonとその他のソフト環境の良さ、その2つが相まってArduinoより体感で4倍ぐらい快適だった。特に入出力がデフォルトであって、microbit自身がエラーを報告してくれるところ。Arduinoだと色々買って繋げてライブラリを入れてようやくこの環境になるので。とはいえ、ライブラリの導入とかをしてないので、もっと大規模な開発になってくるとまだわからないのだが、AdafruitもPython推していくみたいだし、下記記事で書かれているように、開発は簡単なPythonでやって、性能とかバッテリ寿命とかシビアな本番環境は別の言語、環境で開発する、というのはかなり現実的だと思う。
Make: Japan | AdafruitがCircuitPythonへ移行
f:id:miso_engine:20171205114453j:plain
色違いがたくさんあるのも楽しい。

micro:bit(マイクロビット)

micro:bit(マイクロビット)

*1:まぁ最近は普通か

仕事場のコンテナ収納

はじめに

収納についてずっと考えてきたけど、プラスチックのコンテナを使うのが正解だとようやく分かった。よく片付いてるなと思う研究室(橋本研や梶本研など)の様子を垣間見るたびにプラスチックのコンテナがちらちら見えてたからなんとなくそうなんだろうなと思っていた。

件の橋本研。デイリーポータルZで垣間見える。写真は、”アイデアスケッチの描き方を習ってわかった10のポイント - デイリーポータルZ:@nifty” から引用している。

f:id:miso_engine:20170721162845j:plain

左後ろにコンテナ収納がびっしり詰まっている。コンテナが入っているところは、棚の高さを目一杯生かしていて、ほとんど隙間がなくスペース効率が極めて高い。

f:id:miso_engine:20170721165136j:plain

こちらの画像では、ラベルも見える。

ということで、思い切ってプラのコンテナをたくさん買ってみたらめっちゃ片付いた。

買ったコンテナ

f:id:miso_engine:20170301173454j:plain

思い切って買い過ぎて天井まで積み上げられてしまった。すべてのコンテナは透明であるとよい。色付きは中身が見えず、場所的負債になるだけだ。

小さめのコンテナ

まずは小さいコンテナから。このコンテナたちが僕の仕事ではメインになっている。以下の要件を満たすと良い。

  • 適したサイズがある
  • フタなし
  • スタッキングが可能
  • 透明

適したサイズ、というのは結構小さめのサイズのことだ。具体的に言うと189mm x 154mm x 84mm のサイズ。また、持ち出さなかったり、仕事場でそんなに汚れが発生しないならフタなしが断然オススメだ。フタを開ける手間、無くす機会が存在しなくなるからね。そしてスタッキングが可能だと、コンテナだけで立体的に空間を有効に活用できるのだ。

以上の要件を満たすのは、

になる。どちらもサイズのバリエーションはほぼ同じで、形もほぼ同じ。どちらにするかはお好みだ。僕はアステージを買った。アステージの#1.5サイズはなんと目盛りが付いている。

アステージNFボックスの#1.5と#1.5をスタッキング可能でより大きな#7、#11を買った。以下の写真は#1.5と#7のみ。テスト的に購入したので、バックル有り無しやフタの有り無しが混在している。

f:id:miso_engine:20170210150806j:plain

f:id:miso_engine:20170210152306j:plain

机の上ではこんなふうに使っている。

f:id:miso_engine:20170712180029j:plain

#1.5

最小サイズ。細々としたものを適当に放り込んで使っている。すごく便利。作業スペースが足りないと思ったらこの人に放り込んでスタックするだけで机が広がる。

#7

#1.5よりも大きいのが欲しいなと思ったときが使い時。あと#7はケーブル収納に便利だ。USB、EthernetHDMIなんでもござれ。#1.5は小さすぎて太めのケーブルをいれるのが難しい。

#11

このサイズは#7よりも高さがある。高さがあるとものを取りにくくなるので普段使いにはあまり向かないが、外に持ち出すときにいろんなものをまとめて放り込めて便利だ。後述するが、このサイズは外用ということでバックル付きのNCボックスシリーズで買った。

Astage NCボックス #11 [W約20×D約34.9×H約18.1cm]

Astage NCボックス #11 [W約20×D約34.9×H約18.1cm]

外に持ち出すならバックル付き

外に持ち出すなら、フタはいる。バックルで留めるタイプが良い。アステージもアイリスオーヤマもフタ無しと同じサイズのものが存在している。アステージだとNCボックスだ。フタ無しのNFボックスとの違いはバックルがついてるかどうかで、実はNFボックスにもバックルをつける穴は空いている。

散らかってほしくないものもバックル付きに収納している。

f:id:miso_engine:20170712180239j:plain

大きめのコンテナ

小さめのコンテナと違い、たくさんの会社が出しているが、天馬のロックスを購入した。キャスターをつけられること + 信頼のブランドということで。棚の一番下にキャスターつけて入れ込んでいる。

細かいパーツはアイリスオーヤマのパーツキャビネット

小さかったり細かいパーツ、例えば電子部品やネジなどはアイリスオーヤマのパーツキャビネットPC-310(色違いでKC-310Rというのもある)で完璧だ。引き出しが前述のNFボックス#1.5や#7にすっぽり入る。

アイリスオーヤマ 工具箱 パーツキャビネット PC-310

アイリスオーヤマ 工具箱 パーツキャビネット PC-310

f:id:miso_engine:20170721164024j:plain

コンテナ名入れ三種の神器

  1. マステ
  2. マステカッター
  3. マジック

である。これを職場に常備して、コンテナを使い出すたびにバンバン書いていこう。

家庭向けコンテナ

仕事用コンテナは家庭向けには頑丈すぎてオーバースペックなところがあるため、家庭用では性能よりも見た目にバランスを傾けた製品が多い。その中ではサンカのinboxが便利である。

サンカ インボックス S クリア 0

サンカ インボックス S クリア 0

f:id:miso_engine:20170712180225j:plain

ほぼ真四角で使いやすいので仕事用にも使おうとしたが、仕事で使うコンテナと比べて少しヤワなところがあり、重量物(今回はACアダプタ)をいれるとたわむのを感じる。使えないことはないし、軽いもの中心ならこれでよいと思う。

まとめ

コンテナ達によって弊社のメインの棚はこんなふうになった。まだスカスカだけど、コンテナあるなしで使い勝手が段違いだ。棚板の奥行きは30cmである。

f:id:miso_engine:20170721164052j:plain

おまけ

どんなプラスチックコンテナがあるか把握したいなら、アイリスオーヤマのコンテナボックス収納 製品一覧ページが便利だ。
コンテナボックス収納 製品一覧|アイリスプラザ│アイリスオーヤマ公式通販サイト