Cycling’74 Max7 勉強会 β #max7 #maxmsp #jitter

image06

先日 Cycling’74 Max7 勉強会(のβテスト開催)をDMM.make AKIBAの一角を間借りして開催しました。ちなみに急遽開催だったため、お呼び出来なかった方すみません。参加者は左から→@CO_CO_ / @ishicca / TY0004 / @raykunimoto / @nanagagatata + @mirrorboy

勉強会の内容

image04

半日かけてMax7の新機能を中心に、各々が気になる機能を好き勝手触るという無謀なやり方でしたが、結果的には皆で新機能に関する知見が共有できました。

image03

参加者の中ではBEAPとVIZZIEの扱いやすさが特に人気でした。サウンド・アートなどをされている神谷氏(@ishicca)。最近はデジタルを使わない作品が多いため、Maxを弄るのは久しぶりだったとのこと。

image00

チュートリアルをやるMaxレッスンの生徒さん。右側で実演される動画に合わせて、左側で実際にパッチを組んでいけるので、分かりやすい!

image01

チームラボでMaxを使ったサウンドデザインを担当されている國本氏(@raykunimoto) BEAP & Gen & Jiter を組み合わせようとしている強者。最近はGPU処理に興味があるようです。

image07

BeapやGroove~のTime Stretchをチェックするコバルト爆弾αΩのΣ氏(@nanagagatata)。写真には写ってないですが、monomeコントローラーがBEAPのモジュールで動くことも確認していました。

image02

自作コントローラー等を発表しているTanzvolk(@tanzvolk)の塩沢氏(@CO_CO_)。本日Max初挑戦との事でしたが、やはりBEAPの簡単さに驚いていた様子。Javaを使えるそうで、mxjにも興味があったようです。

新機能を触ってみて

 

  • BEAP / VIZZIE

    • BEAPはMSPの煩わしさが無しに簡単にシンセ組める
    • VIZZIEはBEAPとGUIが共通化されててお洒落度アップ
    • BEAP/VIZZIEの組み合わせで容易にオーディオビジュアルが可能
    • BEAPにMonome等のコントローラー連携パッチがビルトイン
    • 参加者には、とにかくBEAP大人気
  • Patch 復帰機能 / Clash Recovery

    • Max7がまだ不安定だったので、大活躍(笑)
  • Reference

    • サンプルがコピーできるように
    • 新機能は、Max7からと書いてあり親切
  • Tutorial

    • 動画をその場で見ながら1ステップごとにつくれるので初心者も安心
    • BEAPとVIZZIEに偏っており、3時間くらいやると終わってしまうので、今後拡充されるのを期待
  • Snipet

    • 便利貼り付け機能
  • grove~

    • 待望のTimeStretch / Pitch によりAbleton Live的な事がしやすく
  • jit.world

    • jit.gl は事前準備(jit.gl.render / jit.window / qmetro 等々)が結構面倒臭かったが、スグにGL環境を用意出来るようになった。
  • playlist

    • 動画や音声ファイルをパッチにドラッグドロップするだけで再生・ループ・ジャンプ・繰り返しなどが簡単にできてよい。
  • GUI

    • 音や映像の長さでデータを探せるのが便利。
    • フラットデザイン・プルプルコードになって、今までより気持よく操作できるとのご意見も。

Gen

image05

GenはMax6から入った機能なので、Max7の新機能という訳ではないのですが、参加者のリクエストに答えて少し解説しました。

  • jit.gen / jit.pix / jit.gl.pix の役割の違い

    • jit.gen と jit.pix は CPU処理 / jit.gl.pix はGPU処理
    • jit.gen は N次元 / jit.pix と jit.gl.pix は 2次元画像処理
  • jit.gl.pix は裏でGLSL(OpenGL Shader Language)として動作

    • jit.gl.pix は GLSL でいうpixcel shader / fragment shaderに相当
    • jit.genを使えば、vertex shaderっぽい事も可能
    • jit.gl.shaderを使えば、生GLSLも使える
    • jit.gl.pixで書いたシェーダは、exportcodeするとopenFrameworksやWebGLで使える
  • MSP処理をGPU上で行いたい(参加者の要望)

    • gen~ はCPUのコードとしてコンパイルされるので☓
    • オーディオ信号をjit.matrixへ書き込みjit.gl.pixでGPU処理してから、再びjit.matrixへ戻してMSP化する方法は出来るかも。今後試したい。
    • jit.gl.shaderのサンプルの中に音処理系もあったような・・・

勉強会をやってみて

Max7は、GUIの大幅な変化に目を奪われますが、特に初心者/久しぶりな方々でも取っ付き易く学んだり遊んだりできる機能が増えているという印象でした。とにかくBEAPがヤバイ楽しい。あとは、みんなで好きに弄るスタイルの勉強会であれば、余力で開催できそうなので、今後も機会があれば続けたいです。

text by @mirrorboy

 

jit.leapmotion リープモーションのステレオ赤外線カメラ画像取得できるExternalオブジェクト #maxmsp #jitter

スクリーンショット 2014-11-04 21.43.12
Jitter Externalの勉強がてらLeap Motionのステレオ赤外線カメラ画像を取得できるExternalオブジェクトを書いてみました。Mac OSX Yosemite環境にて開発してるので、それ以外で動くかは謎です。

ダウンロード

Cycling74 Max Tool。パッケージにまとめてあるので、Application/Max6.1/packages 以下に落としたファイルを置けば使えると思います。

注意点

スクリーンショット 2014-10-31 19.49.15

  • Leap Motionをインストールするとメニューバーに出てくるLeap Motionコントロールパネルにて、イメージを許可するにチェックをしないと動かないです。
  • 解像度は640×240で固定。Leap Motion SDKの仕様で、動作が重くなると自動的に640×120に変更されてしまう事があるのですが、その場合は縦に引き伸ばしています。

Gen codebox内でfor文を使った平滑化フィルター #maxmsp #jitter

スクリーンショット 2014-10-24 19.37.12
genでfor文の使い方メモ。genで配列使いたい。

Codebox / genexpr

size = 10;
offset = floor(size/2);
scale = 1/(dim+1);
pix = 0;

for(x = 0 ; x < size ; x = x + 1){
	
	for(y = 0 ; y < size ; y = y+1){
	
		delta = (vec(x,y) - offset) * scale;
		pix = pix + sample(in1,norm + delta,boundmode="clamp")/(size*size);
	}
}

out1 = pix;

続きを読む Gen codebox内でfor文を使った平滑化フィルター #maxmsp #jitter

SVGの背景を透過するサンプル jit.mgraphics × jit.gl.pix #maxmsp #jitter #gen

スクリーンショット 2014-10-17 11.57.59jit.mgraphicsで描画したSVGに透過色を持たせたい場合には、jit.gl.pixで特定の色を透過させる処理を書くと良さそうです。上の画像は、カメラのキャプチャにSVGの描画を載せたサンプル。棚がとっ散らかってますが、お気にせず・・・

jit.mgraphicsで背景黒にして描画

スクリーンショット 2014-10-17 11.56.39svgでピンクの丸を描画してます。ちなみにillustratorでSVGをつくりました。(左側に、ちょっと、余分なコードも入ってますがお気にせず。)

jit.gl.pix 黒を透過

スクリーンショット 2014-10-17 12.06.54厳密に言うと、黒に近いほど透過されるコードに成ってますが、とりあえず目的に適うのでオッケーです。

Code(シェーダ部分)


----------begin_max5_patcher----------
757.3oc0WssahCCD84juBK+LKxNAnj8s86.UgLItgoqwNxwbYaU+2WamKjvF
pnkVDqPJANy3wGe73gwuFFfWoNvKwnehVfBBdMLHvC4.Bp+c.dC6PpfU5cCK
46UqdFOpxjgev3geFLiyEiKfCn8fLSsuwimTRSI7B24EMZLoFVs0H3FyeJ3U
StK.KyEKcAbqliGgvXzi0NK2tAjV28LfdDrJHdznZzBlIcMHyWp4olpPGSlZ
mVTzL+qjI9ePFSZCuihR1FOSv+RCLQC4gLOlcA+C5Lb2ofqq0nZQxFEPv2w0
kfR1glAXVQQG3fNCworOq7AZ1nVHPVAQagz7cPy3SZQYZ6B0XWkN4xwxCymg
qL9VXyjeTEhnIN0GQmG6E.5CtWwSiNJD1s97TknZ5WfHiSF04AsuiBU5u4d4
gz.pJ3RPVn4kbogYpYbq4L9SrsByxgyH5a+IVJ+rCdv8p.btFxTRGI5MRGby
zs.Q8IAtmGWLdOjrhAFboccrsbES61AVI3cR0rI+Jknuo1Mc6YHlD1vLbCTQ
1HRaPgMEZPZ5MQbIyFi0koZkPzKTUV1MfkLadQJeOjYV6iUWoz5NTzrEfa0n
LHmWZ5iYX4k8Q5UTnaBa2hC8veuhD8KTTtGdAoyW003YxHFrNQaUgyVYXfpC
csLPEBJweXHwexX5zSKP79EINsPQTDtA+svvluL5qWI2.G9FDw3OqHNm30sI
d4axrqTDo2HQTvk41iO2eIizod8bR7UJjjajPtimhHUe9FTyIeV0Lt5zL0Kl
O7v0IlzjajXBRD8aPEIeVUzVYbpsYApukAxUJh2HMzt5tXQ7BO4RtjJfwj49
WWYt1jgjoi8rH.449KZOyb1GV+JUa0oMIK0+gksEudrz1+fAjssvsnsVxoNt
Fxx52xTUWFktdVp5N7h1s+nbldoTN5+OJ6bjdWP4nKkySteT4jOhLeev4ANW
8NbN5KfynGCOh3eVWa4zaq5n8I2R8jan9u2N8b2L0NOuE9W.Vv2VrA
-----------end_max5_patcher-----------

こういう微妙なコードをBlogに書いとくと、後で再利用しやすいのが良いですね。Max7だと、コードスニペット機能が充実するそうなので、楽しみですな〜。

jit.phys を2次元物理エンジンBox2d的に利用 #maxmsp #jitter

スクリーンショット 2014-09-04 17.15.30

2次元物理エンジン

Max6から導入されたjit.phys、デモなどをみると大抵3次元で利用されていますが、設定をすれば2次元でも利用できます。2次元物理エンジンで有名なBox2dみたいな使い方も可能というわけです。AZUMA HITOMIさんのVJでタイコマシーンの上に積み上がるボールは、これを使っています。

設定方法

スクリーンショット 2014-09-04 17.20.21
jit.phys.world のアトリビュート @remove_plane 3 と書くだけでZ軸を無視できます。

大量のオブジェクトを配置

スクリーンショット 2014-09-04 17.20.32
たくさんのオブジェクトを出したい場合は、jit.phys.multipleとjit.gl.multipleを使います。jit.phys.multipleが物理モデルの計算を担当し、表示をjit.gl.multipeが担当します。詳しくは、後述のコードで確認ください。

パフォーマンスは500個くらいまでなら60fpsで動いておりました。またオブジェクトのスケールを小さくしすぎると、物理計算が正しく行われなくなってしまうようでした。この辺りは注意して利用したいです。

デバッグ表示

スクリーンショット 2014-09-04 17.21.53

続きを読む jit.phys を2次元物理エンジンBox2d的に利用 #maxmsp #jitter