now with a working OSC responder to the done message

nix
Pierre Alexandre Tremblay 8 years ago
parent 9c2c5a7479
commit dee0b547a5

@ -1,7 +1,19 @@
// adds an instance method to the Buffer class // adds an instance method to the Buffer class
+ Buffer { + Buffer {
fdNMF { arg dstBuf, rank = 1, iterations = 100, fftSize = 2048, windowSize = 2048, hopSize = 512; fdNMF { arg dstBuf, rank = 1, iterations = 100, fftSize = 2048, windowSize = 2048, hopSize = 512, action;
var resp;
if(bufnum.isNil) { Error("Cannot call % on a % that has been freed".format(thisMethod.name, this.class.name)).throw }; if(bufnum.isNil) { Error("Cannot call % on a % that has been freed".format(thisMethod.name, this.class.name)).throw };
// responder idea stolen from getToFloatArray
resp = OSCFunc({ arg msg;
if(msg[1]== '/b_gen' && msg[2]== dstBuf.bufnum, {
// ("received" + msg).postln;
resp.clear;
action.value(dstBuf.bufnum);
});
}, '/done', server.addr);
server.listSendMsg([\b_gen, dstBuf.bufnum, "BufNMF", bufnum, rank, iterations, fftSize, windowSize, hopSize]) server.listSendMsg([\b_gen, dstBuf.bufnum, "BufNMF", bufnum, rank, iterations, fftSize, windowSize, hopSize])
} }
} }

@ -5,6 +5,7 @@ b = Buffer.read(s,"/Applications/Max.app/Contents/Resources/C74/media/msp/jongly
b.play; b.play;
b.plot; b.plot;
c = Buffer.alloc(s,b.numFrames,2); c = Buffer.alloc(s,b.numFrames,2);
e = Buffer.alloc(s,b.numFrames,5);
// run the code // run the code
b.fdNMF(c,2) b.fdNMF(c,2)
@ -13,13 +14,8 @@ b.fdNMF(c,2)
c.plot; c.plot;
{PlayBuf.ar(2,c.bufnum,doneAction:2)}.play {PlayBuf.ar(2,c.bufnum,doneAction:2)}.play
// play a sinewave in the background to see if the server freaks out
d = {SinOsc.ar(100,0,0.1)}.play
e = Buffer.alloc(s,b.numFrames,5);
// run the code // run the code
b.fdNMF(e,5, 150, 2048,1024,256) b.fdNMF(e,5, 150, 2048,1024,256,{|x| "itworks".postln; x.postln;})
// read to check // read to check
e.plot; e.plot;

Loading…
Cancel
Save