101 void process (
const ProcessContext& context)
noexcept
103 auto&& inBlock = context.getInputBlock();
104 auto&& outBlock = context.getOutputBlock();
106 jassert (inBlock.getNumChannels() == outBlock.getNumChannels());
107 jassert (inBlock.getNumSamples() == outBlock.getNumSamples());
109 auto len = inBlock.getNumSamples();
110 auto numChannels = inBlock.getNumChannels();
112 if (context.isBypassed)
114 bias.skip (
static_cast<int> (len));
116 if (context.usesSeparateInputAndOutputBlocks())
117 outBlock.copyFrom (inBlock);
122 if (numChannels == 1)
124 auto* src = inBlock.getChannelPointer (0);
125 auto* dst = outBlock.getChannelPointer (0);
127 for (
size_t i = 0; i < len; ++i)
128 dst[i] = src[i] + bias.getNextValue();
132 auto* biases =
static_cast<FloatType*
> (alloca (
sizeof (FloatType) * len));
134 for (
size_t i = 0; i < len; ++i)
135 biases[i] = bias.getNextValue();
137 for (
size_t chan = 0; chan < numChannels; ++chan)
139 inBlock.getChannelPointer (chan),
140 biases,
static_cast<int> (len));