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]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です