jit.qt.movie で動画を1度最後まで再生し、その後 指定区間をループ

スクリーンショット 2014-03-16 21.20.49

@loopreport 1 にしておくと、再生終了時に jit.qt.movie の第2インレットから loopnotify bang が出力されるので、そのbangを使ってlooppointsを指定すれば、実現できました。looppointsは、動画をread する都度[ 0 最大値 ]が再設定されます。設定する値は QuickTime time valuesとヘルプパッチには書いてあるのですが、単位がわからず・・・

Cycling74 Max ENTTEC DMX USB PRO を使って1ch LEDライト制御サンプル

スクリーンショット 2014-03-10 23.36.06

ENTTEC DMX USB PROを使ってLEDライトを制御する期会があり、dmxusbproオブジェクトを用いて、まずは簡単な波のように光るサンプルから試してみました。dmxusbproはサンプル版だと2chまでしか制御できないので注意です!サンプル版で3ch以降にデータ送っても、特にエラーコードなども出ないので、気が付かないと時間が無駄になります。結局わたくしは、2ch以上制御したかったので、10ユーロ(今だと1500円くらい)で購入しました〜

光った!

参考Web

Max6 jsuiオブジェクト mgraphicsクラスを用いた描画メモ

スクリーンショット 2014-02-28 18.24.06

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 マンツーマン・個人レッスン受付中!

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]