mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 15:25:35 +08:00
AFV initial commit
This commit is contained in:
committed by
Mat Sutcliffe
parent
7030302e73
commit
b5a2f2ad13
51
src/blacksound/sampleprovider/equalizersampleprovider.cpp
Normal file
51
src/blacksound/sampleprovider/equalizersampleprovider.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include "equalizersampleprovider.h"
|
||||
|
||||
EqualizerSampleProvider::EqualizerSampleProvider(ISampleProvider *sourceProvider, EqualizerPresets preset, QObject *parent) :
|
||||
ISampleProvider(parent)
|
||||
{
|
||||
m_sourceProvider = sourceProvider;
|
||||
setupPreset(preset);
|
||||
}
|
||||
|
||||
int EqualizerSampleProvider::readSamples(QVector<qint16> &samples, qint64 count)
|
||||
{
|
||||
int samplesRead = m_sourceProvider->readSamples(samples, count);
|
||||
if (m_bypass) return samplesRead;
|
||||
|
||||
for (int n = 0; n < samplesRead; n++)
|
||||
{
|
||||
// TODO stereo implementation
|
||||
|
||||
for (int band = 0; band < m_filters.size(); band++)
|
||||
{
|
||||
float s = samples[n] / 32768.0f;
|
||||
s = m_filters[band].process(s);
|
||||
samples[n] = s * 32768;
|
||||
}
|
||||
|
||||
samples[n] *= m_outputGain;
|
||||
}
|
||||
return samplesRead;
|
||||
}
|
||||
|
||||
void EqualizerSampleProvider::setupPreset(EqualizerPresets preset)
|
||||
{
|
||||
switch (preset)
|
||||
{
|
||||
case VHFEmulation:
|
||||
m_filters.push_back(BiQuadFilter(BiQuadFilterType::HighPass, 44100, 450, 1.0f));
|
||||
m_filters.push_back(BiQuadFilter(BiQuadFilterType::Peak, 44100, 2200, 0.25, 13.0f));
|
||||
m_filters.push_back(BiQuadFilter(BiQuadFilterType::LowPass, 44100, 3000, 1.0f));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
double EqualizerSampleProvider::outputGain() const
|
||||
{
|
||||
return m_outputGain;
|
||||
}
|
||||
|
||||
void EqualizerSampleProvider::setOutputGain(double outputGain)
|
||||
{
|
||||
m_outputGain = outputGain;
|
||||
}
|
||||
Reference in New Issue
Block a user