Skip to content

Commit

Permalink
Merge pull request #1441 from diizy/master
Browse files Browse the repository at this point in the history
More fixes (Bitcrush, Linkwitz-Riley filter)
  • Loading branch information
diizy committed Dec 13, 2014
2 parents 0da847f + 4266de7 commit 7b61c54
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
20 changes: 10 additions & 10 deletions include/BasicFilters.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,42 +75,42 @@ class LinkwitzRiley
inline void setCoeffs( float freq )
{
// wc
const float wc = F_2PI * freq;
const float wc = F_2PI * freq / m_sampleRate;
const float wc2 = wc * wc;
const float wc3 = wc2 * wc;
m_wc4 = wc2 * wc2;

// k
const float k = wc / tanf( F_PI * freq / m_sampleRate );
const float k = wc / tan( wc * 0.5 );
const float k2 = k * k;
const float k3 = k2 * k;
m_k4 = k2 * k2;

// a
static const float sqrt2 = sqrtf( 2.0f );
static const double sqrt2 = sqrt( 2.0 );
const float sq_tmp1 = sqrt2 * wc3 * k;
const float sq_tmp2 = sqrt2 * wc * k3;
m_a = 4.0f * wc2 * k2 + 2.0f * sq_tmp1 + m_k4 + 2.0f * sq_tmp2 + m_wc4;
m_a = 1.0f / ( 4.0f * wc2 * k2 + 2.0f * sq_tmp1 + m_k4 + 2.0f * sq_tmp2 + m_wc4 );

// b
m_b1 = ( 4.0f * ( m_wc4 + sq_tmp1 - m_k4 - sq_tmp2 ) ) / m_a;
m_b2 = ( 6.0f * m_wc4 - 8.0f * wc2 * k2 + 6.0f * m_k4 ) / m_a;
m_b3 = ( 4.0f * ( m_wc4 - sq_tmp1 + sq_tmp2 - m_k4 ) ) / m_a;
m_b4 = ( m_k4 - 2.0f * sq_tmp1 + m_wc4 - 2.0f * sq_tmp2 + 4.0f * wc2 * k2 ) / m_a;
m_b1 = ( 4.0f * ( m_wc4 + sq_tmp1 - m_k4 - sq_tmp2 ) ) * m_a;
m_b2 = ( 6.0f * m_wc4 - 8.0f * wc2 * k2 + 6.0f * m_k4 ) * m_a;
m_b3 = ( 4.0f * ( m_wc4 - sq_tmp1 + sq_tmp2 - m_k4 ) ) * m_a;
m_b4 = ( m_k4 - 2.0f * sq_tmp1 + m_wc4 - 2.0f * sq_tmp2 + 4.0f * wc2 * k2 ) * m_a;
}

inline void setLowpass( float freq )
{
setCoeffs( freq );
m_a0 = m_wc4 / m_a;
m_a0 = m_wc4 * m_a;
m_a1 = 4.0f * m_a0;
m_a2 = 6.0f * m_a0;
}

inline void setHighpass( float freq )
{
setCoeffs( freq );
m_a0 = m_k4 / m_a;
m_a0 = m_k4 * m_a;
m_a1 = 4.0f * m_a0;
m_a2 = 6.0f * m_a0;
}
Expand Down
7 changes: 6 additions & 1 deletion plugins/Bitcrush/Bitcrush.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ void BitcrushEffect::sampleRateChanged()
{
m_sampleRate = Engine::mixer()->processingSampleRate();
m_filter.setSampleRate( m_sampleRate );
m_filter.setLowpass( m_sampleRate * CUTOFF_RATIO );
m_filter.setLowpass( m_sampleRate * ( CUTOFF_RATIO * OS_RATIO ) );
m_needsUpdate = true;
}

Expand All @@ -97,6 +97,11 @@ inline float BitcrushEffect::noise( float amt )

bool BitcrushEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames )
{
if( !isEnabled() || !isRunning () )
{
return( false );
}

// update values
if( m_needsUpdate || m_controls.m_rateEnabled.isValueChanged() )
{
Expand Down

0 comments on commit 7b61c54

Please sign in to comment.