diff --git a/ChangeLog b/ChangeLog index dee3ba479..261c4b608 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,7 @@ * plugins/lb302/lb302.cpp: * plugins/lb302/lb302.h: - First version (and probably last) of new IPH-based lb302 + New version (and probably last) of new IPH-based lb302 2008-07-06 Tobias Doerffel diff --git a/plugins/lb302/lb302.cpp b/plugins/lb302/lb302.cpp index e07285db3..775a6fb28 100644 --- a/plugins/lb302/lb302.cpp +++ b/plugins/lb302/lb302.cpp @@ -361,6 +361,8 @@ lb302Synth::lb302Synth( instrumentTrack * _instrumentTrack ) : previous_freq = -1; previous_vco_inc = 0; previous_sample = 0; + previous_sample_hold = 0; + previous_sample_vca = 0; delete_freq = -1; @@ -563,6 +565,11 @@ int lb302Synth::process(sampleFrame *outbuf, const Uint32 size) } } + if( sample_cnt <= 0 ) { + previous_sample_hold = previous_sample; + previous_sample_vca = 0.01f; + } + sample_cnt++; vcf_envpos++; @@ -640,12 +647,27 @@ int lb302Synth::process(sampleFrame *outbuf, const Uint32 size) //samp = vcf->process(vco_k)*2.0*vca_a; //samp = vcf->process(vco_k)*2.0; samp = vcf->process(vco_k) * vca_a; - //printf("%f %d\n", vco_c, sample_cnt); + //printf("%f %d\n", vco_c, sample_cnt); + + //samp = vco_k * vca_a; + + if( sample_cnt <= 4 ) + { + // vca_a = 0; + } +/* + if( previous_sample_vca <= 1.0f ) + samp += (1.0f- previous_sample_vca) * previous_sample_hold; + previous_sample_vca *= 1.2f; +*/ + + + previous_sample = samp; //if( sample_cnt < 32 && previous_freq > 0.0f ) //{ - previous_sample *= 0.96406088; + //previous_sample *= 0.96406088; //float oldamt = (32.0f-(float)sample_cnt)*previous_sample/32.0f; //printf("%d old %f\n", sample_cnt, oldamt); //samp += previous_sample; @@ -708,7 +730,7 @@ void lb302Synth::initNote( lb302Note *n) sample_cnt = 0; vca_mode = 0; // LB303: - vca_a = 0; + //vca_a = 0; } else { vca_mode = 2; @@ -834,7 +856,7 @@ void lb302Synth::deleteNotePluginData( notePlayHandle * _n ) { delete_freq = current_freq; //previous_freq = current_freq; - previous_sample = vco_k * vca_a; + //previous_sample = vco_k * vca_a; } } diff --git a/plugins/lb302/lb302.h b/plugins/lb302/lb302.h index d05d088e8..ad661a2de 100644 --- a/plugins/lb302/lb302.h +++ b/plugins/lb302/lb302.h @@ -242,6 +242,8 @@ private: float previous_freq; float previous_vco_inc; float previous_sample; + float previous_sample_hold; + float previous_sample_vca; float previous_count; float delete_freq;