43template <
typename FloatType>
47 Bias()
noexcept =
default;
55 jassert (newBias >=
static_cast<FloatType
> (-1) && newBias <=
static_cast<FloatType
> (1));
56 bias.setTargetValue (newBias);
63 FloatType
getBias() const noexcept {
return bias.getTargetValue(); }
68 if (rampDurationSeconds != newDurationSeconds)
70 rampDurationSeconds = newDurationSeconds;
75 double getRampDurationSeconds() const noexcept {
return rampDurationSeconds; }
81 sampleRate = spec.sampleRate;
87 bias.reset (sampleRate, rampDurationSeconds);
92 template <
typename SampleType>
95 return inputSample + bias.getNextValue();
100 template<
typename ProcessContext>
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));
148 double sampleRate = 0, rampDurationSeconds = 0;
150 void updateRamp() noexcept
153 bias.
reset (sampleRate, rampDurationSeconds);
static void JUCE_CALLTYPE add(float *dest, float amountToAdd, int numValues) noexcept
void reset(double sampleRate, double rampLengthInSeconds) noexcept
FloatType getBias() const noexcept
void prepare(const ProcessSpec &spec) noexcept
SampleType processSample(SampleType inputSample) const noexcept
void setRampDurationSeconds(double newDurationSeconds) noexcept
void setBias(FloatType newBias) noexcept
void process(const ProcessContext &context) noexcept