66 |
SYNTHESIS_MODE_SET_IMPLEMENTATION(SynthesisMode, false); |
SYNTHESIS_MODE_SET_IMPLEMENTATION(SynthesisMode, false); |
67 |
#endif |
#endif |
68 |
SYNTHESIS_MODE_SET_PROFILING(SynthesisMode, true); |
SYNTHESIS_MODE_SET_PROFILING(SynthesisMode, true); |
69 |
|
|
70 |
|
FilterLeft.Reset(); |
71 |
|
FilterRight.Reset(); |
72 |
} |
} |
73 |
|
|
74 |
Voice::~Voice() { |
Voice::~Voice() { |
326 |
|
|
327 |
Volume = pDimRgn->GetVelocityAttenuation(itNoteOnEvent->Param.Note.Velocity) / 32768.0f; // we downscale by 32768 to convert from int16 value range to DSP value range (which is -1.0..1.0) |
Volume = pDimRgn->GetVelocityAttenuation(itNoteOnEvent->Param.Note.Velocity) / 32768.0f; // we downscale by 32768 to convert from int16 value range to DSP value range (which is -1.0..1.0) |
328 |
|
|
329 |
|
Volume *= pDimRgn->SampleAttenuation; |
330 |
|
|
331 |
// setup EG 1 (VCA EG) |
// setup EG 1 (VCA EG) |
332 |
{ |
{ |
333 |
// get current value of EG1 controller |
// get current value of EG1 controller |
526 |
|
|
527 |
|
|
528 |
#if FORCE_FILTER_USAGE |
#if FORCE_FILTER_USAGE |
529 |
SYNTHESIS_MODE_SET_FILTER(SynthesisMode, true); |
const bool bUseFilter = true; |
530 |
#else // use filter only if instrument file told so |
#else // use filter only if instrument file told so |
531 |
SYNTHESIS_MODE_SET_FILTER(SynthesisMode, pDimRgn->VCFEnabled); |
const bool bUseFilter = pDimRgn->VCFEnabled; |
532 |
#endif // FORCE_FILTER_USAGE |
#endif // FORCE_FILTER_USAGE |
533 |
if (pDimRgn->VCFEnabled) { |
SYNTHESIS_MODE_SET_FILTER(SynthesisMode, bUseFilter); |
534 |
|
if (bUseFilter) { |
535 |
#ifdef OVERRIDE_FILTER_CUTOFF_CTRL |
#ifdef OVERRIDE_FILTER_CUTOFF_CTRL |
536 |
VCFCutoffCtrl.controller = OVERRIDE_FILTER_CUTOFF_CTRL; |
VCFCutoffCtrl.controller = OVERRIDE_FILTER_CUTOFF_CTRL; |
537 |
#else // use the one defined in the instrument file |
#else // use the one defined in the instrument file |
953 |
biquad_param_t bqmain; |
biquad_param_t bqmain; |
954 |
float prev_cutoff = pEngine->pSynthesisParameters[Event::destination_vcfc][0]; |
float prev_cutoff = pEngine->pSynthesisParameters[Event::destination_vcfc][0]; |
955 |
float prev_res = pEngine->pSynthesisParameters[Event::destination_vcfr][0]; |
float prev_res = pEngine->pSynthesisParameters[Event::destination_vcfr][0]; |
956 |
FilterLeft.SetParameters(&bqbase, &bqmain, prev_cutoff, prev_res, pEngine->SampleRate); |
FilterLeft.SetParameters( &bqbase, &bqmain, prev_cutoff + FILTER_CUTOFF_MIN, prev_res, pEngine->SampleRate); |
957 |
FilterRight.SetParameters(&bqbase, &bqmain, prev_cutoff, prev_res, pEngine->SampleRate); |
FilterRight.SetParameters(&bqbase, &bqmain, prev_cutoff + FILTER_CUTOFF_MIN, prev_res, pEngine->SampleRate); |
958 |
pEngine->pBasicFilterParameters[0] = bqbase; |
pEngine->pBasicFilterParameters[0] = bqbase; |
959 |
pEngine->pMainFilterParameters[0] = bqmain; |
pEngine->pMainFilterParameters[0] = bqmain; |
960 |
|
|
967 |
{ |
{ |
968 |
prev_cutoff = pEngine->pSynthesisParameters[Event::destination_vcfc][i]; |
prev_cutoff = pEngine->pSynthesisParameters[Event::destination_vcfc][i]; |
969 |
prev_res = pEngine->pSynthesisParameters[Event::destination_vcfr][i]; |
prev_res = pEngine->pSynthesisParameters[Event::destination_vcfr][i]; |
970 |
FilterLeft.SetParameters(&bqbase, &bqmain, prev_cutoff, prev_res, pEngine->SampleRate); |
FilterLeft.SetParameters( &bqbase, &bqmain, prev_cutoff + FILTER_CUTOFF_MIN, prev_res, pEngine->SampleRate); |
971 |
FilterRight.SetParameters(&bqbase, &bqmain, prev_cutoff, prev_res, pEngine->SampleRate); |
FilterRight.SetParameters(&bqbase, &bqmain, prev_cutoff + FILTER_CUTOFF_MIN, prev_res, pEngine->SampleRate); |
972 |
} |
} |
973 |
} |
} |
974 |
|
|