mirror of
https://github.com/AndroidAudioMods/ViPERFX_RE.git
synced 2025-06-08 18:49:07 +08:00
41 lines
1.0 KiB
C++
41 lines
1.0 KiB
C++
![]() |
//
|
||
|
// Created by mart on 7/26/21.
|
||
|
//
|
||
|
|
||
|
#include <cstdlib>
|
||
|
#include <cstring>
|
||
|
#include "TimeConstDelay.h"
|
||
|
|
||
|
TimeConstDelay::TimeConstDelay() {
|
||
|
this->samples = nullptr;
|
||
|
this->offset = 0;
|
||
|
this->sampleCount = 0;
|
||
|
}
|
||
|
|
||
|
TimeConstDelay::~TimeConstDelay() {
|
||
|
if (this->samples != nullptr) {
|
||
|
free(this->samples);
|
||
|
this->samples = nullptr;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
float TimeConstDelay::ProcessSample(float sample) {
|
||
|
if (this->samples != nullptr) {
|
||
|
float val = this->samples[this->offset];
|
||
|
this->samples[this->offset] = sample;
|
||
|
this->offset = (int)modf((float)this->offset + 1, (float*)&this->sampleCount);
|
||
|
return val;
|
||
|
}
|
||
|
return 0.f;
|
||
|
}
|
||
|
|
||
|
void TimeConstDelay::SetParameters(uint32_t samplerate, float delay) {
|
||
|
this->sampleCount = (int)((float)samplerate * delay * 0.5f);
|
||
|
if (this->samples != nullptr) {
|
||
|
free(this->samples);
|
||
|
}
|
||
|
this->samples = new float[this->sampleCount * sizeof(float)];
|
||
|
this->offset = 0;
|
||
|
memset(this->samples, 0, this->sampleCount * sizeof(float));
|
||
|
}
|