Пример #1
0
void Harmonizer2::run(LV2_Handle instance, uint32_t n_samples)
{
    Harmonizer2 *plugin;
    plugin = (Harmonizer2 *) instance;

    float *in         = plugin->ports[IN];
    float *out_clean  = plugin->ports[OUT_CLEAN];
    float *out_1      = plugin->ports[OUT_1];
    float *out_2      = plugin->ports[OUT_2];
    int Tone          = (int)(*(plugin->ports[TONE]));
    int Scale         = (int)(*(plugin->ports[SCALE]));
    int Interval_1    = (int)(*(plugin->ports[INTERVAL_1]));
    int Interval_2    = (int)(*(plugin->ports[INTERVAL_2]));
    int Mode          = (int)(*(plugin->ports[MODE]));
    int LowNote       = (int)(*(plugin->ports[LOWNOTE]));
    double gain_clean = (double)(*(plugin->ports[GAIN_CLEAN]));
    double gain_1     = (double)(*(plugin->ports[GAIN_1]));
    double gain_2     = (double)(*(plugin->ports[GAIN_2]));
    
    if ( (plugin->obja)->hopa != (int)n_samples )
    {
        plugin->Realloc(n_samples, nBuffersSW(n_samples,32,16,8,4), nBuffersSW(n_samples,16,8,4,2));
        return;
	}
	
	if (InputAbsSum(in, n_samples) == 0)
	{
        fill_n(out_clean,n_samples,0);
        fill_n(out_1,n_samples,0);
        fill_n(out_2,n_samples,0);
        return;
	}

    (plugin->objgc)->SetGaindB(gain_clean);
    (plugin->objg1)->SetGaindB(gain_1);
    (plugin->objg2)->SetGaindB(gain_2);
    
    (plugin->obja)->PreAnalysis(plugin->nBuffers, in);
    (plugin->objs_1)->PreSinthesis();
    (plugin->objs_2)->PreSinthesis();
    (plugin->objpd)->PreProcessing(plugin->nBuffers2, in);
	
	if (plugin->cont < plugin->nBuffers-1)
		plugin->cont = plugin->cont + 1;
	else
	{
		(plugin->objpd)->FindNote();
        FindStep((plugin->objpd)->note, (plugin->objpd)->oitava, Tone, Scale, Interval_1, Mode, LowNote, &plugin->s_1);
        FindStep((plugin->objpd)->note, (plugin->objpd)->oitava, Tone, Scale, Interval_2, Mode, LowNote, &plugin->s_2);
        (plugin->obja)->Analysis();
        (plugin->objs_1)->Sinthesis(plugin->s_1);
        (plugin->objs_2)->Sinthesis(plugin->s_2);
        (plugin->objgc)->SimpleGain((plugin->obja)->frames, out_clean);
        (plugin->objg1)->SimpleGain((plugin->objs_1)->yshift, out_1);
        (plugin->objg2)->SimpleGain((plugin->objs_2)->yshift, out_2);
	}	
}
Пример #2
0
//------------------------------------------------------------------------------
Real RootFinder::GetStep(const GmatEpoch currentEpoch)
{
   return FindStep(currentEpoch);
}