Forums > Jitter

multiple ops in jitter javascript

January 25, 2009 | 5:56 pm

yet another question about how to articulate something in javascript…
how do I put multiple operations in an op.?
I would expect the equivalent of
jit.op @op !pass pass pass pass
would be
input.op(["!pass","pass","pass","pass"],outmatrix);
(where input and outmatrix are properly defined, and both the same dim/planecount etc.)
This doesn’t provide me with the expected results. Is there another trick I’m missing?

P


January 27, 2009 | 1:28 am


January 27, 2009 | 6:45 pm

Hmmm…thanks for the reply. I wouldn’t expect it to…"jit.op" isn’t initialized like that. To use jit.op in the context of js, you use op as a method on a matrix. For example, the js equivalent of [jit.op @op *] is below.
I need a way of expressing per-plane operations in the op method, and putting it operations in an array (e.g. "in1matrix.op(["pass","*","pass","pass"],in2matrix);") doesn’t work.

inlets = 2;
var in1matrix = new JitterMatrix(1,"char",320,240);
in1matrix.adapt=1;
var in2matrix = new JitterMatrix(1,"char",320,240);
in1matrix.adapt=1;

function jit_matrix(inname){
if(inlet==1){
var input2 = new JitterMatrix(inname);
in2matrix.frommatrix(input2);
//outlet(0,"jit_matrix",input2.name);
}

if(inlet==0){
var input1 = new JitterMatrix(inname);
in1matrix.frommatrix(input1);
in1matrix.op("*",in2matrix);
//oper.matrixcalc(in1matrix,in2matrix);
outlet(0,"jit_matrix",in1matrix.name);
//outlet(0,"jit_matrix",oper.name);
}
}


January 27, 2009 | 7:05 pm

On Jan 27, 2009, at 10:45 AM, pnyboer wrote:

> I wouldn’t expect it to…"jit.op" isn’t initialized like that. To
> use jit.op in the context of js, you use op as a method on a matrix.
> For example, the js equivalent of [jit.op @op *] is below.

Wrong. Joshua is correct.

JitterMatrix.op() is a convenience method for single operators, but
for more general use of jit.op you will want to use new
JitterObject("jit.op") as Joshua suggested:

var myOpper = new JitterMatrix("jit.op");
myOpper.op = ["!pass", "pass", "pass", "pass"];
myOpper.matrixcalc([input1,input2],output);

To do in place processing like your JitterMatrix.op() with a single
argument, input1 and output would be the same matrix.

Hope this helps

-Joshua


January 27, 2009 | 7:25 pm

Thanks all Joshes for clearing that up. In case there’s any confusion when this thread is dug up in a search, it is, of course,
new JitterObject("jit.op")
not new JitterMatrix("jit.op").
Here’s a functioning script:

/* the javascript equivalent of [jit.op @op !pass pass pass pass] */

autowatch = 1;
inlets = 2;

var in2matrix = new JitterMatrix(1,"char",320,240);
in1matrix.adapt=1;
var outmatrix = new JitterMatrix(4,"char",320,240);
outmatrix.adapt=1;
var opera = new JitterObject("jit.op");
opera.op = ["!pass", "pass", "pass", "pass"];

function jit_matrix(inname){
if(inlet==1){
var input2 = new JitterMatrix(inname);
in2matrix.frommatrix(input2);
}

if(inlet==0){
var input1 = new JitterMatrix(inname);
opera.matrixcalc([input1,in2matrix],input1);
outlet(0,"jit_matrix",input1.name);
}
}


Viewing 5 posts - 1 through 5 (of 5 total)