ラベル max/msp の投稿を表示しています。 すべての投稿を表示
ラベル max/msp の投稿を表示しています。 すべての投稿を表示

土曜日, 9月 15, 2007

20070914

久しぶりにprocessingで作業してた。XMLを解析してグラフィックに。まだ途中なので公開しないけど、いずれ。

ちょっとjavascriptに行ってる間(やっと「初めてのJavascript」終わった)に、色々動きがあったようだ。
個人的に興味深いのが徳井さん。

Music 2.* Lab

タイミングのためにスレッドのとこきっちりやったり、processingのライブラリを使わないでjavaで実装したりできるあたり、さすが。本当に音系のプログラミング(で、ちょっと今までにないものを作ろうという志向)の話題はほとんどないので心強い。

ほとんどないっていうか、あったらあったでド変態。

Xヶ所村: オシロスコープに猫を

最高過ぎる。

で、processing本もまた出てます。開発者のben flyとcasey reasが書いたもの。

Books \ Processing 1.0 (BETA)

サンプルも落とせます。ちょっと動かしただけだけどオプアートっぽいのからゲームから物理シミュレーション(昔のsodaplayのソースコードもある!)から、グラフィック的にも洗練されてて、かなりいいんじゃないかなー。まずグラフィックとかから入って、それがどういう規則で作られてるかってのを、ちゃんと興味持って勉強できる気がする。ソースコードちょっと変えるだけでも面白そうなもの作れると思うし。こんなのとか。本当にパラメータちょっと変えてアニメーションにして適当にキャプチャしただけ。


max/msp night schoolとかもあるんだよねー。
2007 CNMAT MaxMSP Night School, taught by Ali Momeni | Ali Momeni

ここに来て宿題どっさりって感じだ。

木曜日, 8月 02, 2007

average.js


Max/MSPで受け取る値の平均をとるjavascript書きました。Maxでのjavascriptって何か慣れなくて、すぐ忘れてしまう。できたと思ったら思いっきりgainerの公式サイトにありました。今まで何回もノイズだったり急激な数値の変化に悩まされてきたもんなー。
GAINER.cc | Cookbook / 移動平均法によるスムージング

これよりかはちょっと柔軟になってて、setメッセージで配列の長さを可変にしてあります。デフォルトは100。resetを送ると配列の中身を全て0にします。

こういうインタラクティブインスタレーションなどでよく使うメソッドはもっと共有されるべきだと思う。
averagejs.zip

土曜日, 7月 07, 2007

note20070707

Max/MSP
ubumenuでQuickTimeMovieファイルだけを表示したい場合はInspectorでFiltered TypesにMooVと書く。

css
共通スタイル、各ページ毎のスタイルでファイルを分ける。
共通のとこで全称セレクタ使ってmarginとpaddingを0にしておくと便利。

html
見出し要素は順番を守る。文字の大きさではなく、構造。
定義リストが便利。会社概要とかはこれで書く。

javascript
MDC
メインページ - MDC
brazilさんに教えてもらったbookmarkletのわかりやすい解説
Bookmarklets - Browser Power

misc
Arkitip™ | Intelligence
複数の色んな肩書きの人達が記事や写真をアップしてる。サイトが綺麗。
Magazineのissue0032でexpelimental jetset特集。高かったけど良かった。

プロサッカー選手はスルーパスを受ける時、観客の目線が自分の目線のように感じられて、動くべき場所とタイミングがわかるらしい。

ふんわり何とかが食べたい。

木曜日, 6月 14, 2007

gainer digital in


gainerでdigital inからmaxに値を送るとこで一瞬はまったので書いとく。d.inからはmetroで指定した時間間隔で毎回0なり1を出力し続けてる。なのでそのままだとsfplay~がちゃんと使えない。toggleの見た目的にはずっと1になってていけてそうだが、実際は毎回頭出しされてることになる。なので、togedgeを使って0から1、もしくは1から0になった時だけメッセージを送るようにしてあげればよい。togedgeはインタラクティブ系ではすげーお世話になるので覚えておくと便利。画像はd.inからのメッセージが1の場合と0の場合で別の音源を鳴らすデモのために作ったパッチの一部。
record~オブジェクトで1の間だけ録音したい場合もこれで対応できる。これやっとかないと一瞬録音されてまた次の1が来た時にbuffer~の内容が書き換えられてしまう。append 1メッセージを送れば一応togedge使わなくても回避できるけど、挙動が違ってくるので目的に応じて変えるべき。

木曜日, 3月 29, 2007

max and applescript



赤松先生の記事を読んでもしやと思ってやってみた、mxjでapplescript。前にiTunesを制御してたので、unixからapplescriptを呼び出すosascriptが動くことはわかってた。単純にStringを引数にしたメソッドを作って、Processに渡してるだけ。スクリプトとかプログラムを日常的に使う感覚がようやくわかったきた。書き捨てってやつ。ちょっとした頭の体操。メソッドの名前とか迷うな...。max側で使う際に良さげな感じにしました。MaxとAppleSCriptでmasc。興味ある方はmxj quickieとかでコンパイルして試してみてください。

[source code]

日曜日, 12月 31, 2006

num2snd(max/msp)

数値が音になる、ということが僕は未だに興味深いのですが、わざわざmax/mspで実装してみました。peek~っていうオブジェクトにインデックスと数値を送ることでbuffer~にデータを入れています。サンプルでは1サンプルずつ数値を入力するものと、自動的にサインウェーブとランダムノイズを作るものがあります。バッファに希望の長さをミリセコンドで指定すればサンプル数に変換されます。その後またサンプル数を手動で変化させてみても面白いです。
作成されたバッファテーブルはgroove~オブジェクトで再生します。この再生位置や速度を変えることでもかなり音響が変化します。サイン波の合成から音を作るのではなく、バッファテーブルに直接データを書き込むことで音を作る手法で、またひとつ下のレイヤーに降りた、という感じ。他の言語でもやってみるつもり。

max v2;
#N vpatcher 633 107 1290 670;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P comment 27 167 65 196617 manual input;
#N vpatcher 10 59 610 459;
#P inlet 217 70 15 0;
#P outlet 161 167 15 0;
#P inlet 161 71 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 161 140 51 196617 pack 0 0.;
#P newex 161 98 29 196617 t b f;
#N counter;
#X flags 0 0;
#P newobj 161 119 66 196617 counter;
#P connect 3 0 1 0;
#P connect 1 0 0 0;
#P connect 0 0 2 0;
#P connect 2 0 4 0;
#P connect 1 1 2 1;
#P connect 5 0 0 4;
#P pop;
#P newobj 27 207 49 196617 p manual;
#P flonum 27 186 44 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 34 105 33 196617 clear;
#P comment 111 167 56 196617 make noise;
#P comment 240 167 49 196617 make sine;
#P comment 170 167 65 196617 random value;
#P comment 233 107 42 196617 samples;
#P comment 371 68 36 196617 vol;
#P button 242 185 15 0;
#P comment 516 70 47 196617 select all;
#P message 513 85 51 196617 0 -1 0 -1;
#P flonum 218 127 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 398 227 43 196617 ¥$1 100;
#P newex 363 227 32 196617 line~;
#P flonum 141 185 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#N vpatcher 20 74 620 474;
#P inlet 249 118 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 0;
#P newex 249 228 51 196617 pack 0 0.;
#P outlet 249 253 14 0;
#P newex 249 138 40 196617 uzi;
#P newex 333 139 27 196617 t f f;
#P newex 350 161 27 196617 / 2.;
#P inlet 333 117 15 0;
#P inlet 279 118 15 0;
#P window linecount 1;
#P newex 279 202 27 196617 - 1.;
#P newex 279 182 34 196617 / 50.;
#P newex 279 161 64 196617 random 100;
#P connect 10 0 7 0;
#P connect 7 2 9 0;
#P connect 9 0 8 0;
#P connect 3 0 7 1;
#P connect 7 0 0 0;
#P connect 0 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 9 1;
#P connect 5 0 1 1;
#P connect 4 0 6 0;
#P connect 6 0 0 1;
#P connect 6 1 5 0;
#P pop;
#P newobj 112 205 74 196617 p randomnoise;
#N vpatcher 84 195 684 595;
#P window setfont "Sans Serif" 9.;
#P window linecount 0;
#P newex 289 124 27 196617 t f f;
#P newex 289 80 27 196617 t f f;
#P window linecount 1;
#P newex 265 175 51 196617 pack 0 0.;
#P outlet 265 209 15 0;
#P inlet 259 60 15 0;
#P newex 259 102 40 196617 uzi;
#P newex 306 149 212 196617 expr (sin(($f1 / $f2 ) * (2. * 3.1415926)));
#P inlet 289 60 15 0;
#P connect 3 0 2 0;
#P connect 7 0 5 0;
#P connect 5 0 4 0;
#P connect 0 0 6 0;
#P connect 6 0 2 1;
#P connect 2 2 7 0;
#P connect 7 1 1 0;
#P connect 1 0 5 1;
#P connect 6 1 1 1;
#P pop;
#P newobj 242 205 60 196617 p sinewave;
#P message 111 105 42 196617 size ¥$1;
#P newex 162 105 66 196617 mstosamps~;
#P flonum 371 85 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P toggle 495 85 15 0;
#P message 495 206 43 196617 loop ¥$1;
#P message 464 85 29 196617 stop;
#P message 410 85 51 196617 startloop;
#P message 257 85 66 196617 set num2snd;
#P flonum 325 85 42 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P user waveform~ 325 106 200 74 3 9;
#W mode select;
#W mouseoutput continuous;
#W unit ms;
#W grid 1000.;
#W ticks 0;
#W labels 1;
#W vlabels 0;
#W vticks 1;
#W bpm 120. 4.;
#W frgb 33 0 0;
#W brgb 60 178 173;
#W rgb2 0 95 255;
#W rgb3 0 0 0;
#W rgb4 0 0 0;
#W rgb5 190 137 255;
#W rgb6 100 100 100;
#W rgb7 100 100 100;
#P message 71 105 35 196617 write;
#P newex 325 185 29 196617 sig~;
#P newex 325 227 35 196617 *~ 1.;
#P newex 325 206 89 196617 groove~ num2snd;
#P button 112 185 15 0;
#P flonum 112 251 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P number 74 233 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P user ezdac~ 325 249 369 282 0;
#P button 111 67 15 0;
#P newex 111 85 27 196617 i;
#P number 128 67 51 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 71 126 86 196617 buffer~ num2snd;
#P newex 112 230 78 196617 peek~ num2snd;
#P comment 325 68 35 196617 speed;
#P comment 128 50 76 196617 set length (ms);
#P connect 40 0 41 0;
#P connect 30 0 41 1;
#P connect 14 0 3 0;
#P connect 24 0 3 0;
#P connect 39 0 3 0;
#P connect 6 0 5 0;
#P connect 5 0 24 0;
#P connect 10 0 26 0;
#P connect 41 0 2 0;
#P connect 8 0 2 0;
#P connect 26 0 2 0;
#P connect 25 0 2 0;
#P connect 2 0 9 0;
#P connect 4 0 5 1;
#P connect 30 0 26 1;
#P connect 5 0 23 0;
#P connect 27 0 26 2;
#P connect 23 1 30 0;
#P connect 33 0 25 0;
#P connect 30 0 25 1;
#P connect 17 0 15 0;
#P connect 16 0 13 0;
#P connect 20 0 11 0;
#P connect 19 0 11 0;
#P connect 18 0 11 0;
#P connect 13 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 7 0;
#P connect 28 0 12 1;
#P connect 12 0 7 1;
#P connect 29 0 28 0;
#P connect 15 2 11 1;
#P connect 22 0 29 0;
#P connect 15 3 11 2;
#P connect 21 0 20 0;
#P connect 31 0 15 4;
#P pop;

金曜日, 12月 22, 2006

mtunes and ptunes

max/mspからiTunesをコントロールするためのエクスターナルと、processingで作ったiTunesのコントローラー作りました。
download mtunes
download ptunes(controlP5が必要です)

javaで書いてるのにどっちもosxのみなのが残念ですが(applescript呼び出してるしね)。しかも"再生/一時停止"と"一曲飛ばす/戻る"しかない。もともとはJAVA SWING HACKSっていう本読んでてjavaからitunes制御するプログラムを見たからなんだけど、今後再生トラック名取得だとか、そういう機能を追加してけばそれなりに面白くなるかも。なるかしら。iTunes使ってdjするとして、曲名とかをjitterに渡すとか再生回数を反映したグラフィックをprocessingで作るとか何とか。。。それなりに使いやすいインターフェースになりそうな気もする。ブラウザから動かせれば(特に理由はないけど)いいのになー。要調査。2月の展示に何かしら使えれば最高。

aka.wiiremoteのmxj版はできるのか。。。
先日このオブジェクト使ってwiiリモコンで落語やりました。

金曜日, 12月 01, 2006

whichin



javaの勉強もだいぶ落ち着いてきたところで、maxのエクスターナルオブジェクトを作ってみました。
mxj whichin 数字
で数字の数だけインレットを作り、どのインレットからbangを受け取ったかを出力します(第1インレットが0になります)。tutorial読めば一瞬でできるものですが、何となく使いどころはありそうです。maxオブジェクトもeclipseで開発すれば非常に楽。max.jarファイルを追加して、ワークスペースをCycling '74/java/classes/にしておけば、あとはコードを書いて保存するだけでclassファイルができます。すぐ試せて便利。mspオブジェクトも作ろう!

download whichin

火曜日, 11月 07, 2006

phase vocoder tutorial

cycling '74のサイトにphase vocoderのtutorialが上がってます。 4.6以降ってなってますが、僕の環境はexternalの読み込みでエラーが出るので、まだ4.5.7使ってます。(sc3も変なエラーでサーバ立ち上げるとウィンドウに文字が表示されなくなったりで困ってます...)

4.5.7で開いてみたらuziオブジェクトのエラーが出るだけだし、他に特別なこともしてそうにないのでp hanning windowの中を少し書き換えてみます。4.6からuziが引数を2つとれるようになってて、2つめの引数からindexがカウントされます。このパッチでは0になってるので、4.5環境では単純にuzi 1024として第3アウトレットからの出力に- 1をつけてあげれば同じ挙動になるはずです。

jitter recipesとか役に立つコンテンツが沢山あっていいなぁ。2061:Maxオデッセイの次は是非。

水曜日, 11月 01, 2006

chaser

max/mspのパッチでちまちま作ってたものが結構増えてきたので公開します。lcd内でマウスをドラッグすると、動きを記録して繰り返し再生します。こういうモジュールを沢山集めてつないで全体を作るようなプラットフォームを設計したいと考えています。使い方は君次第。
適当にtextファイルにコピーペーストして保存した後、max/mspで開いて下さい。コピーしてクリップボードに入ってる状態でmaxパッチャーにそのままペーストしてもいけます。

max v2;
#N vpatcher 10 59 509 569;
#P button 216 308 15 0;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 146 412 46 196617 t l clear;
#P message 250 236 29 196617 stop;
#P newex 176 360 27 196617 - 4;
#P newex 146 360 27 196617 - 4;
#P newex 146 438 94 196617 prepend frameoval;
#P newex 146 387 54 196617 pack i i i i;
#P newex 204 236 30 196617 t b b;
#P newex 182 262 35 196617 timer;
#P newex 262 214 31 196617 == 0;
#P newex 182 285 58 196617 metro 500;
#P message 182 308 29 196617 play;
#P newex 216 214 44 196617 togedge;
#P newex 146 189 40 196617 unpack;
#P message 224 262 40 196617 record;
#P newex 224 189 31 196617 == 1;
#P user lcd 146 50 128 128 1 1 0 0 0;
#P newex 131 334 40 196617 mtr 2;
#P newex 235 360 27 196617 + 4;
#P newex 205 360 27 196617 + 4;
#P window linecount 3;
#P comment 277 50 100 196617 chaser yosuke hayashi 2006.11.1;
#P connect 6 0 3 0;
#P connect 9 0 3 0;
#P connect 18 0 3 0;
#P connect 19 1 4 0;
#P connect 15 0 4 0;
#P connect 4 0 7 0;
#P connect 7 0 3 1;
#P connect 3 1 16 0;
#P connect 16 0 14 0;
#P connect 14 0 19 0;
#P connect 19 0 15 0;
#P connect 17 0 14 1;
#P connect 7 1 3 2;
#P connect 1 0 14 2;
#P connect 3 2 17 0;
#P connect 13 0 12 0;
#P connect 11 0 10 0;
#P connect 10 0 9 0;
#P connect 2 0 14 3;
#P connect 8 0 13 0;
#P connect 3 1 1 0;
#P connect 8 1 12 1;
#P connect 5 0 8 0;
#P connect 10 0 20 0;
#P connect 4 2 5 0;
#P connect 13 1 6 0;
#P connect 12 0 10 1;
#P connect 3 2 2 0;
#P connect 8 1 18 0;
#P connect 4 2 11 0;
#P pop;