replaced LB_HZ with engine::getMixer()->sampleRate()-calls in order to have a correct pitch in HQ-mode

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@915 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-04-12 21:25:06 +00:00
parent 56fd8a3eb2
commit 910daa9755
2 changed files with 22 additions and 15 deletions

View File

@@ -1,5 +1,9 @@
2008-04-12 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* plugins/lb302/lb302.cpp:
replaced LB_HZ with engine::getMixer()->sampleRate()-calls in order to
have a correct pitch in HQ-mode
* plugins/ladspa_effect/ladspa_effect.cpp:
* plugins/ladspa_effect/ladspa_control_dialog.cpp:
* plugins/ladspa_effect/ladspa_effect.h:

View File

@@ -72,7 +72,7 @@
//
#define LB_HZ 44100.0f
//#define engine::getMixer()->sampleRate() 44100.0f
extern "C"
@@ -110,8 +110,8 @@ void lb302Filter::recalc()
{
vcf_e1 = exp(6.109 + 1.5876*(fs->envmod) + 2.1553*(fs->cutoff) - 1.2*(1.0-(fs->reso)));
vcf_e0 = exp(5.613 - 0.8*(fs->envmod) + 2.1553*(fs->cutoff) - 0.7696*(1.0-(fs->reso)));
vcf_e0*=M_PI/44100.0;
vcf_e1*=M_PI/44100.0;
vcf_e0*=M_PI/engine::getMixer()->sampleRate();
vcf_e1*=M_PI/engine::getMixer()->sampleRate();
vcf_e1 -= vcf_e0;
vcf_rescoeff = exp(-1.20 + 3.455*(fs->reso));
@@ -249,14 +249,14 @@ void lb302Filter3Pole::envRecalc()
w = vcf_e0 + vcf_c0;
k = (fs->cutoff > 0.975)?0.975:fs->cutoff;
kfco = 50.f + (k)*((2300.f-1600.f*(fs->envmod))+(w) *
(700.f+1500.f*(k)+(1500.f+(k)*(44100.f/2.f-6000.f)) *
(700.f+1500.f*(k)+(1500.f+(k)*(engine::getMixer()->sampleRate()/2.f-6000.f)) *
(fs->envmod)) );
//+iacc*(.3+.7*kfco*kenvmod)*kaccent*kaccurve*2000
#ifdef LB_24_IGNORE_ENVELOPE
// kfcn = fs->cutoff;
kfcn = 2.0 * kfco / LB_HZ;
kfcn = 2.0 * kfco / engine::getMixer()->sampleRate();
#else
kfcn = w;
#endif
@@ -336,6 +336,9 @@ lb302Synth::lb302Synth( instrumentTrack * _instrumentTrack ) :
{
connect( engine::getMixer(), SIGNAL( sampleRateChanged( ) ),
this, SLOT ( filterChanged( ) ) );
connect( &vcf_cut_knob, SIGNAL( dataChanged( ) ),
this, SLOT ( filterChanged( ) ) );
@@ -487,7 +490,7 @@ void lb302Synth::filterChanged( void )
float d = 0.2 + (2.3*vcf_dec_knob.value());
d *= LB_HZ; // d *= smpl rate
d *= engine::getMixer()->sampleRate(); // d *= smpl rate
fs.envdecay = pow(0.1, 1.0/d * ENVINC); // decay is 0.1 to the 1/d * ENVINC
// vcf_envdecay is now adjusted for both
// sampling rate and ENVINC
@@ -510,15 +513,15 @@ void lb302Synth::db24Toggled( void )
void lb302Synth::detuneChanged( void )
{
float freq = vco_inc*LB_HZ/vco_detune;
float freq = vco_inc*engine::getMixer()->sampleRate()/vco_detune;
float slidebase_freq=0;
if(vco_slide) {
slidebase_freq = vco_slidebase*LB_HZ/vco_detune;
slidebase_freq = vco_slidebase*engine::getMixer()->sampleRate()/vco_detune;
}
vco_detune = powf(2.0f, (float)vco_fine_detune_knob.value()/1200.0f);
vco_inc = freq*vco_detune/LB_HZ;
vco_inc = freq*vco_detune/engine::getMixer()->sampleRate();
// If a slide note is pending,
if(vco_slideinc)
@@ -527,7 +530,7 @@ void lb302Synth::detuneChanged( void )
// If currently sliding,
// May need to rescale vco_slide as well
if(vco_slide)
vco_slidebase = slidebase_freq*vco_detune/LB_HZ;
vco_slidebase = slidebase_freq*vco_detune/engine::getMixer()->sampleRate();
}
@@ -562,7 +565,7 @@ void lb302Synth::recalcFilter()
// THIS IS OLD 3pole/24dB code, I may reintegrate it. Don't need it
// right now. Should be toggled by LB_24_RES_TRICK at the moment.
/*kfcn = 2.0 * (((vcf_cutoff*3000))) / LB_HZ;
/*kfcn = 2.0 * (((vcf_cutoff*3000))) / engine::getMixer()->sampleRate();
kp = ((-2.7528*kfcn + 3.0429)*kfcn + 1.718)*kfcn - 0.9984;
kp1 = kp+1.0;
kp1h = 0.5*kp1;
@@ -705,7 +708,7 @@ int lb302Synth::process(sampleFrame *outbuf, const Uint32 size)
// Handle Envelope
if(vca_mode==0) {
vca_a+=(vca_a0-vca_a)*vca_attack;
if(sample_cnt>=0.5*44100)
if(sample_cnt>=0.5*engine::getMixer()->sampleRate())
vca_mode = 2;
}
else if(vca_mode == 1) {
@@ -922,14 +925,14 @@ void lb302Synth::playNote( notePlayHandle * _n, bool,
// END NOT SURE OF
// Reserve this note for retrigger in process()
hold_note.vco_inc = _n->frequency()*vco_detune/LB_HZ; // TODO: Use actual sampling rate.
hold_note.vco_inc = _n->frequency()*vco_detune/engine::getMixer()->sampleRate(); // TODO: Use actual sampling rate.
hold_note.dead = deadToggle->value();
use_hold_note = true;
catch_decay = 1;
}
#else
lb302Note note;
note.vco_inc = _n->frequency()*vco_detune/LB_HZ; // TODO: Use actual sampling rate.
note.vco_inc = _n->frequency()*vco_detune/engine::getMixer()->sampleRate(); // TODO: Use actual sampling rate.
note.dead = deadToggle.value();
initNote(&note);
vca_mode=0;
@@ -940,7 +943,7 @@ void lb302Synth::playNote( notePlayHandle * _n, bool,
/// Start a new note.
else {
lb302Note note;
note.vco_inc = _n->frequency()*vco_detune/LB_HZ; // TODO: Use actual sampling rate.
note.vco_inc = _n->frequency()*vco_detune/engine::getMixer()->sampleRate(); // TODO: Use actual sampling rate.
note.dead = deadToggle.value();
initNote(&note);
use_hold_note = false;