Merge pull request #1307 from diizy/model
Add a method to AutomatableModel that allows tracking changes without using signals/slots
This commit is contained in:
@@ -52,6 +52,9 @@ BassBoosterEffect::BassBoosterEffect( Model* parent, const Descriptor::SubPlugin
|
||||
m_bbFX( DspEffectLibrary::FastBassBoost( 70.0f, 1.0f, 2.8f ) ),
|
||||
m_bbControls( this )
|
||||
{
|
||||
changeFrequency();
|
||||
changeGain();
|
||||
changeRatio();
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +73,10 @@ bool BassBoosterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames
|
||||
{
|
||||
return( false );
|
||||
}
|
||||
// check out changed controls
|
||||
if( m_bbControls.m_freqModel.isValueChanged() ) { changeFrequency(); }
|
||||
if( m_bbControls.m_gainModel.isValueChanged() ) { changeGain(); }
|
||||
if( m_bbControls.m_ratioModel.isValueChanged() ) { changeRatio(); }
|
||||
|
||||
double outSum = 0.0;
|
||||
const float d = dryLevel();
|
||||
@@ -91,6 +98,32 @@ bool BassBoosterEffect::processAudioBuffer( sampleFrame* buf, const fpp_t frames
|
||||
}
|
||||
|
||||
|
||||
inline void BassBoosterEffect::changeFrequency()
|
||||
{
|
||||
const sample_t fac = engine::mixer()->processingSampleRate() / 44100.0f;
|
||||
|
||||
m_bbFX.leftFX().setFrequency( m_bbControls.m_freqModel.value() * fac );
|
||||
m_bbFX.rightFX().setFrequency( m_bbControls.m_freqModel.value() * fac );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline void BassBoosterEffect::changeGain()
|
||||
{
|
||||
m_bbFX.leftFX().setGain( m_bbControls.m_gainModel.value() );
|
||||
m_bbFX.rightFX().setGain( m_bbControls.m_gainModel.value() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline void BassBoosterEffect::changeRatio()
|
||||
{
|
||||
m_bbFX.leftFX().setRatio( m_bbControls.m_ratioModel.value() );
|
||||
m_bbFX.rightFX().setRatio( m_bbControls.m_ratioModel.value() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _BASS_BOOSTER_H
|
||||
#define _BASS_BOOSTER_H
|
||||
#ifndef BASS_BOOSTER_H
|
||||
#define BASS_BOOSTER_H
|
||||
|
||||
#include "Effect.h"
|
||||
#include "DspEffectLibrary.h"
|
||||
@@ -45,6 +45,10 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
void changeFrequency();
|
||||
void changeGain();
|
||||
void changeRatio();
|
||||
|
||||
DspEffectLibrary::MonoToStereoAdaptor<DspEffectLibrary::FastBassBoost> m_bbFX;
|
||||
|
||||
BassBoosterControls m_bbControls;
|
||||
|
||||
@@ -37,48 +37,17 @@ BassBoosterControls::BassBoosterControls( BassBoosterEffect* effect ) :
|
||||
m_gainModel( 1.0f, 0.1f, 5.0f, 0.05f, this, tr( "Gain" ) ),
|
||||
m_ratioModel( 2.0f, 0.1f, 10.0f, 0.1f, this, tr( "Ratio" ) )
|
||||
{
|
||||
connect( &m_freqModel, SIGNAL( dataChanged() ), this, SLOT( changeFrequency() ) );
|
||||
connect( &m_gainModel, SIGNAL( dataChanged() ), this, SLOT( changeGain() ) );
|
||||
connect( &m_ratioModel, SIGNAL( dataChanged() ), this, SLOT( changeRatio() ) );
|
||||
connect( engine::mixer(), SIGNAL( sampleRateChanged() ), this, SLOT( changeFrequency() ) );
|
||||
|
||||
changeFrequency();
|
||||
changeGain();
|
||||
changeRatio();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void BassBoosterControls::changeFrequency()
|
||||
{
|
||||
const sample_t fac = engine::mixer()->processingSampleRate() / 44100.0f;
|
||||
|
||||
m_effect->m_bbFX.leftFX().setFrequency( m_freqModel.value() * fac );
|
||||
m_effect->m_bbFX.rightFX().setFrequency( m_freqModel.value() * fac );
|
||||
m_effect->changeFrequency();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void BassBoosterControls::changeGain()
|
||||
{
|
||||
m_effect->m_bbFX.leftFX().setGain( m_gainModel.value() );
|
||||
m_effect->m_bbFX.rightFX().setGain( m_gainModel.value() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void BassBoosterControls::changeRatio()
|
||||
{
|
||||
m_effect->m_bbFX.leftFX().setRatio( m_ratioModel.value() );
|
||||
m_effect->m_bbFX.rightFX().setRatio( m_ratioModel.value() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void BassBoosterControls::loadSettings( const QDomElement& _this )
|
||||
{
|
||||
m_freqModel.loadSettings( _this, "freq" );
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _BASSBOOSTER_CONTROLS_H
|
||||
#define _BASSBOOSTER_CONTROLS_H
|
||||
#ifndef BASSBOOSTER_CONTROLS_H
|
||||
#define BASSBOOSTER_CONTROLS_H
|
||||
|
||||
#include "EffectControls.h"
|
||||
#include "BassBoosterControlDialog.h"
|
||||
@@ -62,9 +62,6 @@ public:
|
||||
|
||||
private slots:
|
||||
void changeFrequency();
|
||||
void changeGain();
|
||||
void changeRatio();
|
||||
|
||||
|
||||
private:
|
||||
BassBoosterEffect* m_effect;
|
||||
@@ -73,7 +70,7 @@ private:
|
||||
FloatModel m_ratioModel;
|
||||
|
||||
friend class BassBoosterControlDialog;
|
||||
|
||||
friend class BassBoosterEffect;
|
||||
} ;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user