osci-render/Source/audio/StereoEffect.cpp

36 wiersze
901 B
C++

#include "StereoEffect.h"
StereoEffect::StereoEffect() {}
StereoEffect::~StereoEffect() {}
OsciPoint StereoEffect::apply(int index, OsciPoint input, const std::vector<std::atomic<double>>& values, double sampleRate) {
if (this->sampleRate != sampleRate) {
this->sampleRate = sampleRate;
initialiseBuffer(sampleRate);
}
double sampleOffset = values[0].load() / 10;
sampleOffset = juce::jlimit(0.0, 1.0, sampleOffset);
sampleOffset *= buffer.size();
head++;
if (head >= buffer.size()) {
head = 0;
}
buffer[head] = input;
int readHead = head - sampleOffset;
if (readHead < 0) {
readHead += buffer.size();
}
return OsciPoint(input.x, buffer[readHead].y, input.z);
}
void StereoEffect::initialiseBuffer(double sampleRate) {
buffer.clear();
buffer.resize(bufferLength * sampleRate);
head = 0;
}