[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-users] Stethoscope unfriendly buffer takeover?
Had strange problems with buffers recently, I try to explain it with
the following:
(
Server.default = s = Server.internal;
~bn = s.bufferAllocator.alloc(1);
s.waitForBoot { s.sendMsg("/b_allocRead", ~bn, "sounds/
a11wlk01.wav"); };
f = { |server, bufnum|
OSCresponder(server.addr, "/b_info", { | t, rsp, msg |
msg.postln;
}).add.removeWhenDone;
server.sendMsg("/b_query", bufnum);
};
)
f.value(s, ~bn); // query buffer
// [ /b_info, 0, 26977, 1, 11025 ]
(
{
var p;
p = PlayBuf.ar(1, ~bn, BufRateScale.ir(~bn));
FreeSelfWhenDone.kr(p);
p ! 2
}.scope
)
f.value(s, ~bn);
// buffer like before, okay. But:
(
{
var p;
p = PlayBuf.ar(1, ~bn, BufRateScale.ir(~bn));
FreeSelfWhenDone.kr(p);
p ! 3
}.scope(3) // numChannels set, then..
)
// .. playback is silent.
// Now look at "my" buffer:
f.value(s, ~bn);
// [ /b_info, 0, 4096, 3, 48000 ]
// num channels from scope and playback sample rate!
s.bufferAllocator.free(~bn); s.sendMsg("/b_free", ~bn); ~bn = f = nil;