diff --git a/release-packaging/Classes/FluidBufToKr.sc b/release-packaging/Classes/FluidBufToKr.sc new file mode 100644 index 0000000..b3d2e88 --- /dev/null +++ b/release-packaging/Classes/FluidBufToKr.sc @@ -0,0 +1,28 @@ +FluidKrToBuf { + *kr { + arg krStream, buffer; + if(buffer.numFrames == 0) {"FluidKrToBuf: UGen will have 0 outputs!".warn}; + if(buffer.numFrames > 1000) {"FluidKrToBuf: Buffer is % frames. This is probably not the buffer you intended.".format(buffer.numFrames).error}; + ^buffer.numFrames.do{ + arg i; + BufWr.kr(krStream[i], buffer, i); + } + } +} + +FluidBufToKr { + *kr { + arg buffer; + if(buffer.numFrames == 0) {"FluidKrToBuf: Buffer has 0 frames!".warn}; + if(buffer.numFrames > 1000) {"FluidKrToBuf: Buffer is % frames. This is probably not the buffer you intended.".format(buffer.numFrames).error}; + + if(buffer.numFrames > 1,{ + ^buffer.numFrames.collect{ + arg i; + BufRd.kr(1,buffer,i,0,0); + } + },{ + ^BufRd.kr(1,buffer,0,0,0); + }); + } +} diff --git a/test/FluidBufToKr test.scd b/test/FluidBufToKr test.scd new file mode 100644 index 0000000..4603c2f --- /dev/null +++ b/test/FluidBufToKr test.scd @@ -0,0 +1,153 @@ +( +// FluidKrToBuf test +s.waitForBoot{ + Routine{ + var buf = Buffer.alloc(s,5); + + s.sync; + + { + var sig = SinOsc.kr(rrand(1.0.dup(buf.numFrames),4.0)); + FluidKrToBuf.kr(sig,buf); + }.play; + + 3.wait; + + defer{buf.plot}; + }.play; +} +) + +( +// FluidBufToKr +s.waitForBoot{ + Routine{ + var buf = Buffer.loadCollection(s,[0,1,2,3,4,7]); + + s.sync; + + { + var sig = FluidBufToKr.kr(buf); + sig.poll; + }.play; + }.play; +} +) + +( +// test both +s.waitForBoot{ + Routine{ + { + var buf = LocalBuf(5); + var insig = SinOsc.kr(rrand(1.0.dup(buf.numFrames),4.0)); + var outsig; + FluidKrToBuf.kr(insig,buf); + outsig = FluidBufToKr.kr(buf); + outsig.poll; + }.play; + }.play; +} +) + +( +// FluidKrToBuf --- kr is longer than buf... +// it just doesnt write all the values of kr into the buffer +s.waitForBoot{ + Routine{ + var buf = Buffer.alloc(s,5); + + s.sync; + + { + var sig = SinOsc.kr(rrand(1.0.dup(6),4.0)); + FluidKrToBuf.kr(sig,buf); + }.play; + + 3.wait; + + defer{buf.plot}; + }.play; +} +) + +( +// FluidKrToBuf --- kr is shorter than buf... +// the last index of the buffer is just not being written into, it's still zero +s.waitForBoot{ + Routine{ + var buf = Buffer.alloc(s,5); + + s.sync; + + { + var sig = SinOsc.kr([1,2,3,4]); + FluidKrToBuf.kr(sig,buf); + }.play; + + 3.wait; + + defer{buf.plot}; + }.play; +} +) + +( +// FluidBufToKr +// 100 is fine +/// 1000 is fine +s.waitForBoot{ + Routine{ + var buf = Buffer.loadCollection(s,Array.fill(1000,{arg i; i})); + + s.sync; + + { + var sig = FluidBufToKr.kr(buf); + sig.poll; + }.play; + }.play; +} +) + +( +// FluidBufToKr +// 100 is fine +/// 1000 is fine +s.waitForBoot{ + Routine{ + var buf = Buffer.read(s,"/Users/macprocomputer/Desktop/_flucoma/code/flucoma-core-src/AudioFiles/Harker-DS-TenOboeMultiphonics-M.wav"); + + s.sync; + + { + var sig = FluidBufToKr.kr(buf); + sig.poll; + }.play; + }.play; +} +) + +( +// FluidKrToBuf test with super long buffer +// 100 is fine +// 1000 is fine +s.waitForBoot{ + Routine{ + // var buf = Buffer.alloc(s,1000); + var buf = Buffer.read(s,"/Users/macprocomputer/Desktop/_flucoma/code/flucoma-core-src/AudioFiles/Harker-DS-TenOboeMultiphonics-M.wav"); + + s.sync; + + { + var sig = SinOsc.kr(rrand(1.0.dup(buf.numFrames),4.0)); + FluidKrToBuf.kr(sig,buf); + }.play; + + 3.wait; + + defer{buf.plot}; + }.play; +} +) +