mirror of
https://github.com/AndroidAudioMods/ViPERFX_RE.git
synced 2025-06-08 02:29:40 +08:00
66 lines
1.3 KiB
C++
66 lines
1.3 KiB
C++
![]() |
//
|
||
|
// Created by mart on 7/30/21.
|
||
|
//
|
||
|
|
||
|
#include "Harmonic.h"
|
||
|
|
||
|
static float HARMONIC_DEFAULT[10] = {
|
||
|
1.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
0.f,
|
||
|
};
|
||
|
|
||
|
Harmonic::Harmonic() {
|
||
|
UpdateCoeffs(HARMONIC_DEFAULT);
|
||
|
Reset();
|
||
|
}
|
||
|
|
||
|
Harmonic::~Harmonic() {
|
||
|
|
||
|
}
|
||
|
|
||
|
float Harmonic::Process(float sample) {
|
||
|
float prevLast = this->lastProcessed;
|
||
|
this->lastProcessed = (
|
||
|
sample * this->coeffs[0] +
|
||
|
sample * this->coeffs[1] +
|
||
|
sample * this->coeffs[2] +
|
||
|
sample * this->coeffs[3] +
|
||
|
sample * this->coeffs[4] +
|
||
|
sample * this->coeffs[5] +
|
||
|
sample * this->coeffs[6] +
|
||
|
sample * this->coeffs[7] +
|
||
|
sample * this->coeffs[8] +
|
||
|
sample * this->coeffs[9] +
|
||
|
sample * this->coeffs[10]
|
||
|
);
|
||
|
this->prevOut = this->lastProcessed + this->prevOut * 0.999f - prevLast;
|
||
|
if (this->sampleCounter < this->buildup) {
|
||
|
this->sampleCounter++;
|
||
|
return 0;
|
||
|
}
|
||
|
return this->prevOut;
|
||
|
}
|
||
|
|
||
|
void Harmonic::Reset() {
|
||
|
this->lastProcessed = 0.f;
|
||
|
this->prevOut = 0.f;
|
||
|
this->sampleCounter = 0.f;
|
||
|
}
|
||
|
|
||
|
void Harmonic::SetHarmonics(float *coeffs) {
|
||
|
UpdateCoeffs(coeffs);
|
||
|
Reset();
|
||
|
}
|
||
|
|
||
|
void Harmonic::UpdateCoeffs(float *coeffs) {
|
||
|
// TODO
|
||
|
}
|