mirror of
https://github.com/AndroidAudioMods/ViPERFX_RE.git
synced 2025-06-22 16:22:24 +08:00
C++ hackery
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
#include "ViPER.h"
|
||||
#include <ctime>
|
||||
#include <cstring>
|
||||
#include <chrono>
|
||||
#include "constants.h"
|
||||
|
||||
ViPER::ViPER() {
|
||||
@ -141,9 +141,9 @@ void ViPER::processBuffer(float *buffer, uint32_t size) {
|
||||
}
|
||||
|
||||
if (this->updateProcessTime) {
|
||||
struct timeval time{};
|
||||
gettimeofday(&time, nullptr);
|
||||
this->processTimeMs = (uint64_t) (time.tv_sec * 1000) + (uint64_t) (time.tv_usec / 1000);
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
|
||||
this->processTimeMs = now_ms.time_since_epoch().count();
|
||||
}
|
||||
|
||||
uint32_t ret;
|
||||
|
@ -8,5 +8,6 @@
|
||||
|
||||
#include "../log.h" // TODO: Remove this dependency
|
||||
|
||||
#define VIPER_DEFAULT_SAMPLING_RATE 44100
|
||||
#define VIPER_AUTHORS "viper.WYF, Martmists, Iscle"
|
||||
#define VIPER_NAME "ViPER4Android"
|
||||
#define VIPER_AUTHORS "viper.WYF, Martmists, Iscle"
|
||||
#define VIPER_DEFAULT_SAMPLING_RATE 44100
|
@ -19,6 +19,8 @@ AnalogX::AnalogX() {
|
||||
this->samplingRate = VIPER_DEFAULT_SAMPLING_RATE;
|
||||
this->processingModel = 0;
|
||||
this->enable = false;
|
||||
this->gain = 0.0;
|
||||
this->freqRange = 0;
|
||||
Reset();
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <cstdint>
|
||||
#include "../utils/Harmonic.h"
|
||||
#include "../utils/MultiBiquad.h"
|
||||
#include <array>
|
||||
|
||||
class AnalogX {
|
||||
public:
|
||||
@ -15,10 +16,10 @@ public:
|
||||
void SetSamplingRate(uint32_t samplingRate);
|
||||
|
||||
private:
|
||||
MultiBiquad highPass[2];
|
||||
Harmonic harmonic[2];
|
||||
MultiBiquad lowPass[2];
|
||||
MultiBiquad peak[2];
|
||||
std::array<MultiBiquad, 2> highPass;
|
||||
std::array<Harmonic, 2> harmonic;
|
||||
std::array<MultiBiquad, 2> lowPass;
|
||||
std::array<MultiBiquad, 2> peak;
|
||||
|
||||
float gain;
|
||||
uint32_t freqRange;
|
||||
|
@ -2,51 +2,45 @@
|
||||
#include "DiffSurround.h"
|
||||
#include "../constants.h"
|
||||
|
||||
DiffSurround::DiffSurround() {
|
||||
DiffSurround::DiffSurround() : buffers({
|
||||
WaveBuffer(1, 0x1000),
|
||||
WaveBuffer(1, 0x1000)
|
||||
}) {
|
||||
this->samplingRate = VIPER_DEFAULT_SAMPLING_RATE;
|
||||
this->delayTime = 0.0f;
|
||||
this->enable = false;
|
||||
for (auto &buffer : this->buffers) {
|
||||
buffer = new WaveBuffer(1, 0x1000);
|
||||
}
|
||||
Reset();
|
||||
}
|
||||
|
||||
DiffSurround::~DiffSurround() {
|
||||
for (auto &buffer : this->buffers) {
|
||||
delete buffer;
|
||||
}
|
||||
}
|
||||
|
||||
void DiffSurround::Process(float *samples, uint32_t size) {
|
||||
if (!this->enable) return;
|
||||
|
||||
float *bufs[2];
|
||||
float *outbufs[2];
|
||||
|
||||
bufs[0] = this->buffers[0]->PushZerosGetBuffer(size);
|
||||
bufs[1] = this->buffers[1]->PushZerosGetBuffer(size);
|
||||
bufs[0] = this->buffers[0].PushZerosGetBuffer(size);
|
||||
bufs[1] = this->buffers[1].PushZerosGetBuffer(size);
|
||||
|
||||
for (uint32_t i = 0; i < size * 2; i++) {
|
||||
bufs[i % 2][i / 2] = samples[i];
|
||||
}
|
||||
|
||||
outbufs[0] = this->buffers[0]->GetBuffer();
|
||||
outbufs[1] = this->buffers[1]->GetBuffer();
|
||||
outbufs[0] = this->buffers[0].GetBuffer();
|
||||
outbufs[1] = this->buffers[1].GetBuffer();
|
||||
|
||||
for (uint32_t i = 0; i < size * 2; i++) {
|
||||
samples[i] = outbufs[i % 2][i / 2];
|
||||
}
|
||||
|
||||
this->buffers[0]->PopSamples(size, false);
|
||||
this->buffers[1]->PopSamples(size, false);
|
||||
this->buffers[0].PopSamples(size, false);
|
||||
this->buffers[1].PopSamples(size, false);
|
||||
}
|
||||
|
||||
void DiffSurround::Reset() {
|
||||
this->buffers[0]->Reset();
|
||||
this->buffers[1]->Reset();
|
||||
this->buffers[0].Reset();
|
||||
this->buffers[1].Reset();
|
||||
|
||||
this->buffers[1]->PushZeros((uint32_t) ((double) this->delayTime / 1000.0 * (double) this->samplingRate));
|
||||
this->buffers[1].PushZeros((uint32_t) ((double) this->delayTime / 1000.0 * (double) this->samplingRate));
|
||||
}
|
||||
|
||||
void DiffSurround::SetDelayTime(float delayTime) {
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
#include <cstdint>
|
||||
#include "../utils/WaveBuffer.h"
|
||||
#include <array>
|
||||
|
||||
class DiffSurround {
|
||||
public:
|
||||
DiffSurround();
|
||||
~DiffSurround();
|
||||
|
||||
void Process(float *samples, uint32_t size);
|
||||
void Reset();
|
||||
@ -17,7 +17,7 @@ public:
|
||||
uint32_t samplingRate;
|
||||
bool enable;
|
||||
float delayTime;
|
||||
WaveBuffer *buffers[2];
|
||||
std::array<WaveBuffer, 2> buffers;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include <cstdint>
|
||||
#include "../utils/MinPhaseIIRCoeffs.h"
|
||||
#include <array>
|
||||
|
||||
// Iscle: Verified with the latest version at 13/12/2022
|
||||
|
||||
@ -24,7 +25,7 @@ private:
|
||||
uint32_t unknown2;
|
||||
uint32_t unknown3;
|
||||
uint32_t unknown4;
|
||||
float bandLevelsWithQ[31];
|
||||
std::array<float, 31> bandLevelsWithQ;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2,6 +2,10 @@
|
||||
#include <cmath>
|
||||
#include "SoftwareLimiter.h"
|
||||
|
||||
#ifndef uint
|
||||
#define uint unsigned int
|
||||
#endif
|
||||
|
||||
SoftwareLimiter::SoftwareLimiter() {
|
||||
this->ready = false;
|
||||
this->unknown4 = 0;
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <cstdint>
|
||||
#include "../utils/MultiBiquad.h"
|
||||
#include "../utils/Biquad.h"
|
||||
#include <array>
|
||||
|
||||
// Iscle: Verified with the latest version at 13/12/2022
|
||||
|
||||
@ -18,7 +19,7 @@ public:
|
||||
private:
|
||||
uint32_t samplingRate;
|
||||
bool enable;
|
||||
MultiBiquad highPass[2];
|
||||
Biquad lowPass[2];
|
||||
Biquad bandPass[2];
|
||||
std::array<MultiBiquad, 2> highPass;
|
||||
std::array<Biquad, 2> lowPass;
|
||||
std::array<Biquad, 2> bandPass;
|
||||
};
|
||||
|
@ -22,10 +22,6 @@ SpectrumExtend::SpectrumExtend() {
|
||||
Reset();
|
||||
}
|
||||
|
||||
SpectrumExtend::~SpectrumExtend() {
|
||||
// empty?
|
||||
}
|
||||
|
||||
void SpectrumExtend::Process(float *samples, uint32_t size) {
|
||||
if (!this->enabled) return;
|
||||
|
||||
|
@ -3,11 +3,11 @@
|
||||
#include <cstdint>
|
||||
#include "../utils/Harmonic.h"
|
||||
#include "../utils/MultiBiquad.h"
|
||||
#include <array>
|
||||
|
||||
class SpectrumExtend {
|
||||
public:
|
||||
SpectrumExtend();
|
||||
~SpectrumExtend();
|
||||
|
||||
void Process(float *samples, uint32_t size);
|
||||
void Reset();
|
||||
@ -17,9 +17,9 @@ public:
|
||||
void SetSamplingRate(uint32_t samplingRate);
|
||||
|
||||
private:
|
||||
MultiBiquad highpass[2];
|
||||
MultiBiquad lowpass[2];
|
||||
Harmonic harmonics[2];
|
||||
std::array<MultiBiquad, 2> highpass;
|
||||
std::array<MultiBiquad, 2> lowpass;
|
||||
std::array<Harmonic, 2> harmonics;
|
||||
bool enabled;
|
||||
uint32_t samplingRate;
|
||||
uint32_t referenceFreq;
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
// Iscle: Verified with the latest version at 13/12/2022
|
||||
|
||||
TubeSimulator::TubeSimulator() {
|
||||
this->acc[0] = 0.0;
|
||||
this->acc[1] = 0.0;
|
||||
this->enable = false;
|
||||
}
|
||||
TubeSimulator::TubeSimulator() :
|
||||
acc({
|
||||
0.0, 0.0
|
||||
}),
|
||||
enable(false) {}
|
||||
|
||||
void TubeSimulator::Reset() {
|
||||
this->acc[0] = 0.0;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <array>
|
||||
|
||||
// Iscle: Verified with the latest version at 13/12/2022
|
||||
|
||||
@ -13,7 +14,7 @@ public:
|
||||
void TubeProcess(float *buffer, uint32_t size);
|
||||
|
||||
private:
|
||||
double acc[2];
|
||||
std::array<double, 2> acc;
|
||||
bool enable;
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "TimeConstDelay.h"
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
|
||||
TimeConstDelay::TimeConstDelay() {
|
||||
this->offset = 0;
|
||||
@ -9,7 +9,7 @@ TimeConstDelay::TimeConstDelay() {
|
||||
float TimeConstDelay::ProcessSample(float sample) {
|
||||
float val = this->samples[this->offset];
|
||||
this->samples[this->offset] = sample;
|
||||
this->offset = (uint32_t) modf((float) this->offset + 1, (float *) &this->sampleCount); // TODO: check if this is correct
|
||||
this->offset = (uint32_t) modff((float) this->offset + 1, (float *) &this->sampleCount); // TODO: check if this is correct
|
||||
return val;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user