Cycling’74 Max マンツーマン・個人レッスン受付中!

Max6 logo

初級〜中級くらいまでの方向けにCycling’74 Max / Max for Live / MaxMSP / Jitter 等のマンツーマンレッスン・授業・先生・講師を行います!困っている方いらっしゃいましたら、是非!

対象

  • Maxを購入し1〜数回触った後に、HDDの肥やしになっている方
  • シンセサイザーやパッチのアイデアがあるが、実際にパッチングの手順が全くわからない方
  • 一人でパッチングするよりも、誰かに聞ける環境で作業をしたい方
  • 学校や大学の課題・研究でMaxを使う必要があり、困っている方
  • Max for Liveで音と映像を連動させたライブをしてみたい方
  • 授業形式や自習形式よりも、マンツーマンでMaxを勉強したい方
  • openFrameworks / Processing / ActionScriptとの連携をしてみたい方

受付・詳細

レッスン詳細  

※現在受け付け停止中です。

Cycling74 Maxのjsオブジェクトでツマミを回した時に、保持している値をオーバーライドした時だけ値が変化するアレ

Override

表題の通り、Abletonとかで出来るアレです。アーギュメントの1番目で初期値、2番めでどれだけ近づいたら変化するかを設定可能です。

値を変化させる条件は、現在の値とノブで入って来た値の距離が小さい場合と、値が変化し始めてから、ノブを回している間です。Taskオブジェクトを用いて、タイミングによる制御を実現しています。

GIFアニ作ってみたけど、開始地点と終了地点がわからないから、分かりづらいな・・・

[javascript]

"use strict"

this.autowatch = 1;
this.inlets = 1;
this.outlets = 1;

//init with argument
var currentValue = jsarguments[1] || 0;
var maxDistance = jsarguments[2] || 3;
outlet(0,currentValue);

var task = new Task(onTimerHandler,this);
var taskCount = 0;
task.interval = 500; //ms

function onTimerHandler(e){

switch(taskCount){

case 0 :
taskCount++;
break;
case 1 :
taskCount = 0;
task.cancel();
break;
}
}
onTimerHandler.local = 1;

function msg_float(value){

var delta = Math.abs(currentValue – value);

if( task.running || delta < maxDistance) {

currentValue = value;
taskCount = 0;
task.cancel();
task.repeat(2);

}

outlet(0,currentValue);
}

[/javascript]

Cycling74 Max を Standalone App 化する時に、Max Windowをポップアップさせない方法

スクリーンショット 2014-02-20 16.37.59

Standalone App 化した場合に、初期設定だとMax Window(標準出力)がポップアップしてでてきてしまいます。standalone アトリビュート statusvisible を 0 に設定してあげる事で防ぐ事が可能です。

Cycling74 Maxで3Dモデルをキャプチャし連番PNGデータを生成

スクリーンショット 2014-02-19 14.16.38

3Dモデルを読み込み、回転させて、連番シーケンスPNGを生成したかったので、Max6のJitterのパッチを作ってみました。鮫

Photoshop等で加工すれば、生成したPNGをアニメーションGIFにしてみたり出来ます

Cycling74 Maxでアプリケーションを構築するために、私的コーディング規約を考えてみた

スクリーンショット 2014-02-13 22.41.05

Maxでつくった秋葉系VJソフトウェア「あのタグで待ってる」by コバルト爆弾αΩ をオープンソースとしてGithubで公開しました。Maxのお勉強や何かのお役に立つことがあれば幸いです。bpatcherを使いまくっているのは、お恥ずかしい話なんですが、subpatch化の方法をマジで知らなかったためです(^_^;)

ところんで、ルールを決めていかないと途中で完全にスパゲティコードになりそうだったため、私的なコーディング規約を考えて実装していました。ルールを書き出しておこうと思います。あのタグをつくっていたのは昨年の秋頃でしたので、今となっては古いと思う部分は、アップデートした事を書いておきます。

私的コーディング規約

  • サブパッチに値を入力・出力場合、prepend等を用いてメッセージ名を頭につける。
  • サブパッチのinletにはroute / routepassを接続して、受けられるメッセージを明確にする。
  • サブパッチからの出力を受けるメインパッチ側でもroutepass / routeを接続し、何のメッセージを利用するかを明確にする。
  • メッセージを利用する直前で、メッセージ名をrouteして値を取りだす。routepassはサブパッチの中で受けとった値をさらに下層のサブパッチへ受け流す場合等、どんなメッセージが流れているか説明する場合に利用。
  • アプリケーションの構成は、MVC構造を意識してつくる。
  • Viewは入力インターフェイス+出力インターフェイスが合体したものと考える。入力した値は一旦Modelへ送って、ModelからのフィードバックをViewにsetする。
  • Modelで値を保持したり、アルゴリズムを動作させる。
  • ControllerがViewとModelのコミュニケーションを仲介する。
  • 人間 → View(Input) → Controller → Model → Controller → View(Output)  のフローを基本とする。
  • send オブジェクト・receive オブジェクトは異なるパッチ間では使わない。画面の下方の出力から、上方のパッチに値を戻したい場合に、画面が煩雑に成らないために利用。
  • Maxの命名規則はオブジェクトもメッセージも小文字始まり。オブジェクトの命名をするときに階層は.(ドット)でつける。
  • Maxのメッセージは全部小文字がルールのようだが、例外的にlowerCamelCaseにした。(趣味)

上図は、適応してみた例です。Maxって素早くプロトタイピングできる所が良いのに、相当めんどくさいパッチになります。ViewとかModelとか知ったように書いてますけど、MVCモデル聞きかじりなので、プログラム設計を勉強するのに良い本あったら教えて欲しいです!