feat: add Gain Node

This commit is contained in:
Liam Kerr 2026-08-02 19:38:30 +01:00
parent 786966e9e0
commit 11f701ed5c
4 changed files with 43 additions and 1 deletions

17
core/Gain.cpp Normal file
View file

@ -0,0 +1,17 @@
#include "Gain.hpp"
Gain::Gain(float init_gain) : gain_(init_gain) {}
void Gain::process(const float *in, float *out, uint32_t frames) {
for (uint32_t i = 0; i < frames; ++i) {
out[i] = in[i] * gain_;
}
}
void Gain::processStereo(const float *inLeft, const float *inRight,
float *outLeft, float *outRight, uint32_t frames) {
for (uint32_t i = 0; i < frames; ++i) {
outLeft[i] = inLeft[i] * gain_;
outRight[i] = inRight[i] * gain_;
}
}

24
core/Gain.hpp Normal file
View file

@ -0,0 +1,24 @@
#ifndef GAIN_HPP_INCLUDED
#define GAIN_HPP_INCLUDED
#include <cstdint>
class Gain {
public:
Gain(float init_gain = 1.0f);
// Process mono signal
void process(const float *in, float *out, uint32_t frames);
// Process stereo (two channels)
void processStereo(const float *inLeft, const float *inRight, float *outLeft,
float *outRight, uint32_t frames);
private:
float gain_;
public:
void setGain(float g) { gain_ = g; }
float getGain() const { return gain_; }
};
#endif // GAIN_H__INCLUDED