@loopreport 1 にしておくと、再生終了時に jit.qt.movie の第2インレットから loopnotify bang が出力されるので、そのbangを使ってlooppointsを指定すれば、実現できました。looppointsは、動画をread する都度[ 0 最大値 ]が再設定されます。設定する値は QuickTime time valuesとヘルプパッチには書いてあるのですが、単位がわからず・・・
カテゴリー: Max6
Cycling74 Max ENTTEC DMX USB PRO を使って1ch LEDライト制御サンプル
ENTTEC DMX USB PROを使ってLEDライトを制御する期会があり、dmxusbproオブジェクトを用いて、まずは簡単な波のように光るサンプルから試してみました。dmxusbproはサンプル版だと2chまでしか制御できないので注意です!サンプル版で3ch以降にデータ送っても、特にエラーコードなども出ないので、気が付かないと時間が無駄になります。結局わたくしは、2ch以上制御したかったので、10ユーロ(今だと1500円くらい)で購入しました〜
光った!
参考Web
Max6 jsuiオブジェクト mgraphicsクラスを用いた描画メモ
Max6のjsuiオブジェクトで背景透過のUIをつくるときに使えるmgraphicsの使い方をメモしておきます。
クラスリファレンス
http://max-javascript-reference.tim-schenk.de/symbols/#gsc.tab=0
初期化
[javascript]
//mgraphics initialize
mgraphics.init();
mgraphics.relative_coords = 1;
mgraphics.autofill = 0;
[/javascript]
描画
[javascript]
function paint(){
mgraphics.set_source_rgba(1,0.5,0.5,1);
mgraphics.ellipse(0, 0, 10, 10); // y座標は、上向きが正の方向なので注意
mgraphics.fill();
}
[/javascript]
paint関数の中じゃないと、mgraphics: no jgraphics context というエラーが出て描画できないようです。
描画命令
[javascript]
refresh();
[/javascript]
枠線を消したい
cmd + i で出てくるインスペクタのborder を 0 に設定
Cycling’74 Max マンツーマン・個人レッスン受付中!
初級〜中級くらいまでの方向けにCycling’74 Max / Max for Live / MaxMSP / Jitter 等のマンツーマンレッスン・授業・先生・講師を行います!困っている方いらっしゃいましたら、是非!
対象
- Maxを購入し1〜数回触った後に、HDDの肥やしになっている方
- シンセサイザーやパッチのアイデアがあるが、実際にパッチングの手順が全くわからない方
- 一人でパッチングするよりも、誰かに聞ける環境で作業をしたい方
- 学校や大学の課題・研究でMaxを使う必要があり、困っている方
- Max for Liveで音と映像を連動させたライブをしてみたい方
- 授業形式や自習形式よりも、マンツーマンでMaxを勉強したい方
- openFrameworks / Processing / ActionScriptとの連携をしてみたい方
受付・詳細
レッスン詳細
※現在受け付け停止中です。
Cycling74 Maxのjsオブジェクトでツマミを回した時に、保持している値をオーバーライドした時だけ値が変化するアレ
表題の通り、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]