36 m_speed(1.0), m_frequency(0.5), m_dbuffer(),
37 m_lfopos(0), m_b1pos(0), m_b2pos(0), m_b1inc(0), m_b2inc(0),
38 m_b1reset(false), m_b2reset(false), m_dbpos(0)
84 const float pi2 = 2 * float(M_PI);
85 const float lfoposinc =
static_cast<float>(
m_frequency);
87 for (
unsigned int pos = 0; pos <
m_buffer.
size(); pos++) {
136 int position, position1;
137 float error, int_pos;
142 error = modff(
m_b1pos, &int_pos);
147 position1 = position - 1;
151 const float b1value =
m_dbuffer[position] * (1 - error) +
157 error = modff(
m_b2pos,&int_pos);
162 position1 = position-1;
166 const float b2value =
m_dbuffer[position] * (1 - error) +
173 const float lfo = (sinf(pi2 *
m_lfopos) + 1.0f) / 2.0f;
196 float new_speed = QVariant(speed).toFloat();
197 if (qFuzzyCompare(new_speed,
m_speed))
return;
206 float new_freq = QVariant(freq).toFloat();
QVector< float > m_dbuffer
static float sample2float(const sample_t s)
virtual ~PitchShiftFilter() Q_DECL_OVERRIDE
Kwave::SampleArray m_buffer
virtual void goOn() Q_DECL_OVERRIDE
void output(Kwave::SampleArray data)
unsigned int size() const
void input(Kwave::SampleArray data)
static sample_t float2sample(const float f)
void setFrequency(const QVariant freq)
void setSpeed(const QVariant speed)
bool resize(unsigned int size) Q_REQUIRED_RESULT