43 template <
typename FloatType>
47 Bias() noexcept =
default;
55 jassert (newBias >= static_cast<FloatType> (-1) && newBias <= static_cast<FloatType> (1));
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>
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)
132 auto* biases =
static_cast<FloatType*
> (alloca (
sizeof (FloatType) * len));
134 for (
size_t i = 0; i < len; ++i)
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);
FloatType getNextValue() noexcept
FloatType getTargetValue() const noexcept
static void JUCE_CALLTYPE add(float *dest, float amountToAdd, int numValues) noexcept
void prepare(const ProcessSpec &spec) noexcept
FloatType skip(int numSamples) noexcept
FloatType getBias() const noexcept
void reset(double sampleRate, double rampLengthInSeconds) noexcept
void setBias(FloatType newBias) noexcept
SampleType processSample(SampleType inputSample) const noexcept
void process(const ProcessContext &context) noexcept
void setRampDurationSeconds(double newDurationSeconds) noexcept
void setTargetValue(FloatType newValue) noexcept