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

Package Manager で配布されているease

Max8のパッケージマネージャーからダウンロードできるCycling 74お手製のEase Packageですが、自分の目的に合わせて使うのが若干めんどくさい&毎回この作業やってる気がするので改良版置いておきます。
Ease Object 改良点
改良ポイントは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で問題が・・・

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

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

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
- Node for Max Api Reference https://docs.cycling74.com/nodeformax/api/
- 【Node.js 2021(2つ目)】 Node.js での UDP・TCP通信をシンプルに試す(2021年12月) https://qiita.com/youtoy/items/385feead64ff905e9f76
Recent entries
- jit.gl.gridshape の matrixoutput についてのメモ #max8
- jit.gl.pix で簡易モーションブラー #max8 #jitter
- jit.gl.pix で Gold Noise #max8 #jitter
- Gen で配列をつくる検討 #Max8
- Package Managerで配布されているease objectを使いやすくしてイージング #max8
- Node for Max を用いて、定形外のUDPデータを受信 #Max8 #n4m
- 平ハウス物語 – 山田尚子監督作品 非公式ファンイベント
- The Splendid Expression – GITADORA×NOSTALGIA
- ghost in my place【from DEEMO II】
- EP “Boys O’Clock”
- 7th Album “多次元宇宙論”
- LEON.jpのWEB特集「大人のいい時間」にAromが紹介されました。
- 音できらめくキャンドルライト Arom(第2世代)発売開始
- EP “Strange Story”
- 都市の呼吸【from Cytus II】