Package Managerで配布されているease objectを使いやすくしてイージング #max8

Demo

今回作成したpatch

Package Manager で配布されているease

Max8のパッケージマネージャーからダウンロードできるCycling 74お手製のEase Packageですが、自分の目的に合わせて使うのが若干めんどくさい&毎回この作業やってる気がするので改良版置いておきます。

Ease Object 改良点

スクリーンショット 2022-08-31 22.22.16
自分用 改良版
改良ポイントは1つ前の最終的な値を記憶しておいて、次の開始値として利用するようにしています。A,B,Cとポイントを次々に指定して移動させるみたいなときに使いやすいです。

Code

———-begin_max5_patcher———-
1042.3ocyYsriaaCEcs8WAgVkB3ZvWhTJqRBR61tnEcSQw.ZYNS0DYJCIpzo
MHe.ce+YJP9d519KT9PxiyXaIFa5AwKrsjI4gmy8bIuT9Cymkrp9AYaB3kfe
ALa1GlOal6V1aLq+5YIaDOTTIZcMKondyFoRmrv+aZ4CZ28+NQqD7CqtWVnA
u3e+6+4+9zeMzlsBcwuUpt6lFyO5whjuDt.Pf12SYT6G12A+ZeWTcaJUURsC
ST+MusVoUhMRGdudk4mqUfeTnZAuotZcxicstSOzWX+cKW65U8p6+VDMYuAr
s7OcCHMaIzd2ONet8sEwPN99NUwKJU5uYmRzHaMsVnKqU2TUpjE0cJWGvmVq
vnzkLyKJCxHDLmmku.fPYVQKmuLcA.CmR5lVTvIwk8FN.9oRSv5RnNBmZYYO
YyPwhrnXR12Ja0feVT0IGwvSo6QDt6hXPD34PDGPIeoFNJ7wTVxIm5viN0QG
N0yFl.9lo+isRO5II6F4AE21mglWpVKcjibFLWI+cC1GDA2JJdG.tzPK3xwh
gLWXCQ1KFhOkPfCUHniIDWgn6PNUjim3KMdhiW7rpVrdirsE.GQGxcQSBK2t
nBGNdzDEpLjF4n4IXXmZvyNpiEwHGlISP7PLvGmx3ijIyOImu0DILdwguDSE
HL9icaYP8kavPQJkMiE4nr0rJtSd.IMtRHMeZBRLlYyGovXQP5yiMVCp.q.U
iQPjOnwbE5POqzTxQH3HKWYrqqDp6reddj0X1MSfIKFH0mAlBiTdHYuU6ZLk
IqkM2HUBScx6uP9o46N3ustYivMUYwKTKsED+paMUDaq.Df24vJpqpa7yE3R
NEg3rEluQRYYLh8aPJGlZq.YOE5zhJws6LBlGoEzI3HmJDn6neion4N37ulc
G1CDL9R48pxvB5iqJjPUETVR.L+L3oPqa5JGFb6U9feu++Ks5aheuKTFIR1Z
d94YGhoXTp11ouownwx.1COyKK7Ln+EkazizXU2V1WA5gYzCQPvYzCMHWY4I
G9LJO9gYx0BXHVHmfI3CSSRB4XJnqvQx5e3.Q9DYnK8DY6SUWObKS+jmVniN
16+47ustqoX.u9y6CdjQqks5Rk6gAsWarKJYazQk3PABE.PzHfCNPbPWHNz.
vICGABYywmDIRLPJK+YCIdHpGKBgI2fLEROQhqaVKcK8Cu9P+DMeGznKCZZn
56EGIs1A7THwiERnoPhFKjlR8PYQ.I9yVFGOnLN5mIwQJOHHnI3qQdPZH6tE
CyIIDKCAFCjBZ6fXrgc14Id9RRDa29dYSaeqcfXJ95d+iTHag6xRk+R2wBSZ
juubn8txlRDMlJxzlxw5Z7+4hOv7OdhjM0F6gxTqt2gXnmARWgc1+Hx1sBOS
b0+M+iy+eTl6qZB
———–end_max5_patcher———–

これをコピーしてMax8にペーストするとそのまま使えると思います。ease packageに依存しているので、Menu -> File -> Show Package Manager からeaseをインストールしてご利用ください。

Node for Max を用いて、定形外のUDPデータを受信 #Max8 #n4m

Maxの生命線UDPで問題が・・・

他のアプリを繋いでくれる updreceive

センシングや3D(Unity / UE / Arduino) 等とのコミュニケーション時に重宝するudprecieve ですが、udpを受信する場合に、メッセージが4bytesに揃っていなかったり長すぎた場合にアトリビュートなどの設定やOSC-routeを利用しても上手く受信できない事があります。

OSC Bad message name string: DataAfterAlignedString: Unreasonably long string Dropping entire message. / OSC packet size not a multiple of 4 byte dropping.

Max内にどうにかする方法としてNode for Maxが利用できます。

Node for Max で UDP receive

node object は、とりあえずHelpからコピペでOK

node.script objectjs をHelpからコピペし、ダブルクリックするとテキストエディターが開くので書き換えます。Maxのテキストエディタはクソなので、VS Code使ってます。

udpreceive.js

const dgram = require('dgram');
const IP = '192.168.1.1';
const PORT = 8888;
const socket = dgram.createSocket('udp4');
socket.on('listening', () => {
    const address = socket.address();
    console.log('UDP socket listening on ' + address.address + ":" + address.port);
});
socket.on('message', (message, remote) => {
    console.log(remote.address + ':' + remote.port +' - ' + message);
	/*
		処理
	*/
});
socket.bind(PORT, IP);

とくに外部ライブラリを入れる事なくできました!JS的に正しい書き方なのかは謎。外部ライブラリのOSC-routeなどを使わなくても、テキスト処理はスクリプト言語の十八番でしょうから楽ちんです。

感想

昔、VJソフトのあのタグをつくるためにMaxのjs objectを触っていた頃は、jsの文法を読んで型なしでプロトタイプ継承とか難しいなと思い、深入りしませんでした。時は経ち最近のjsは今どきな文法が色々あって使いやすくなってそうです。

Node.jsやnpmエコシステムなどでは当たり前の事が、Maxおじさんからすると凄いみたいな事は非常に沢山ありそうです。(Blogを適当に放置してる事から分かるように)今までネットワーク / スクリプト言語は触れないように生きてきましたが、そろそろNode.jsから色々触ってみようかなと思いました。

Reference

平ハウス物語 – 山田尚子監督作品 非公式ファンイベント

平ハウス物語 フライヤー

山田尚子監督作品ファン有志による TVアニメ 「平家物語」の完結を「踊り」と「語り」で(勝手に)お祝いするDJ&トークイベント「平ハウス物語」

続きを読む 平ハウス物語 – 山田尚子監督作品 非公式ファンイベント

note に記事をかいてみました

こちらのWordpressサイトはテンプレートを上手くいじれなくなって、トップページ以外は割と放置してるので、記事を書きたいときはnoteにしようかと思います。

昔サイトをつくるときに何をしてるかを表現する副題を検討して、秋葉系インタラクティブなどと銘打って見たんですが、eスポーツ向けのゲームコントローラーの開発なんかも含まれるのかもしれませんね。

Gen Subpatcher & Subparam 使い方

jit.pix内部のfaderという変数をイジれるようになってる。

jit.pixの中身

gen subpatcherはgen @gen *** で指定。またパラメーターをイジる場合は、setparamを使用する。ちなみにparamは外部公開する変数。

gen subpatcherの中身

外部からイジるパラメーターはparamで指定。