ExtensionConvolve an Array of channels to an Array of channels.
| in |
The input signal, an array. |
| kernel |
The convolution kernel. |
| mul |
Output will be multiplied by this value. |
| add |
This value will be added to the output. |
An array of channels.
// hand code a mono signal to a decorrelated soundfield in B-format
// NOTE: the demonstrated kernel is not ideal for this task
// define encoding kernel
(
var kernelSize;
var scale;
kernelSize = 256;
scale = 24.neg.dbamp;
~kernel = [[
Buffer.loadCollection(s, FloatArray.fill(kernelSize, {(3/2).sqrt * scale.rand2})),
Buffer.loadCollection(s, FloatArray.fill(kernelSize, {scale.rand2})),
Buffer.loadCollection(s, FloatArray.fill(kernelSize, {scale.rand2})),
Buffer.loadCollection(s, FloatArray.fill(kernelSize, {scale.rand2}))
]]
)
// convolve
(
{
var sig;
// pink noise
sig = PinkNoise.ar;
// encode
AtkKernelConv.ar(sig, ~kernel);
}.scope
)
// free kernel when finished
~kernel.at(0).do({arg kern; kern.free})