26template <
size_t MaximumChannels,
size_t MaximumDelayInSamples>
32 readPos.changeLength (MaximumChannels * MaximumDelayInSamples);
33 writePos.changeLength (MaximumChannels * MaximumDelayInSamples);
43 assert (delayInSamples <= MaximumDelayInSamples);
44 assert (0 <= delayInSamples);
46 fractional = delayInSamples -
static_cast<uint_fast32_t
> (delayInSamples);
47 readPos.set (writePos.get (-delayInSamples));
51 template <
typename SampleType,
size_t N>
61 const float input = block.view[i];
62 delayLine[ch][writePos.get()] = input;
63 block.view[i] = std::lerp (delayLine[ch][readPos.get()], delayLine[ch][readPos.get (-1)], fractional);
72 std::array<std::array<float, MaximumDelayInSamples + 1>, MaximumChannels> delayLine {};
74 Wrap<int32_t> writePos {};
75 float fractional = 0.0f;
Some utilities functions.
A lightweight data structure that stores a pointer to an audio buffer.
Definition: ame_AudioBuffer.hpp:32
uint_fast32_t getNumChannels() const noexcept
Returns the number of channels.
Definition: ame_AudioBuffer.hpp:49
uint_fast32_t getNumSamplesPerChannel() const noexcept
Returns the number of samples per channel.
Definition: ame_AudioBuffer.hpp:55
A number to wrap between 0~length.
Definition: ame_Util.hpp:254
Fractional delay.
Definition: ame_Delay.hpp:28
void process(AudioBlockView< SampleType, N > &block)
Process audio effect.
Definition: ame_Delay.hpp:52
void setDelay(const float delayInSamples)
Set delay time.
Definition: ame_Delay.hpp:41