예제 #1
0
void oedge_perform64(t_oedge *x, t_object *dsp64, double **ins, long numins, double **outs, long numouts, long vectorsize, long flags, void *userparam)
{
	omax_realtime_clock_tick(x);
	t_osc_timetag now;
	omax_realtime_clock_now(&now);

	atom_setlong(x->av + 1, x->blockcount++);
	atom_setlong(x->av + 2, osc_timetag_ntp_getSeconds(now));//(((uint64_t)now) & 0xffffffff00000000) >> 32);
	atom_setlong(x->av + 3, osc_timetag_ntp_getFraction(now));//(((uint64_t)now) & 0xffffffff));
	atom_setdouble_array(x->ac, x->av + 4, vectorsize, ins[0]);
	schedule_delay(x, (method)oedge_callback, 0, NULL, vectorsize + 4, x->av);
}
예제 #2
0
t_int *oedge_perform(t_int *w) 
{
	t_oedge *x = (t_oedge *)(w[1]);
	t_float *in = (t_float *)(w[2]);
	t_int n = (t_float *)(w[3]);

	omax_realtime_clock_tick(x);
	t_osc_timetag now;
	omax_realtime_clock_now(&now);

	atom_setlong(x->av + 1, x->blockcount++);
	atom_setlong(x->av + 2, osc_timetag_ntp_getSeconds(now));//(((uint64_t)now) & 0xffffffff00000000) >> 32);
	atom_setlong(x->av + 3, osc_timetag_ntp_getFraction(now));//(((uint64_t)now) & 0xffffffff));
	atom_setdouble_array(x->ac, x->av + 4, n, in);
	schedule_delay(x, (method)oedge_callback, 0, NULL, n + 4, x->av);
	return w + 4;
}
예제 #3
0
파일: vb.cheby~.c 프로젝트: v7b1/vb-objects
void calcCoeffs(t_myObj *x) 
{
	int i, j;
	double results[5];
	double sa, sb, rgain;
	int poles2 = x->poles/2;			// poles must be even

	for(j=0; j<poles2; j++) {
		calc(x, j, results);
		
		// normalize gain
		sa = 0;
		sb = 0;
		for(i=0; i<3; i++) {
			if(x->mode == 0) {
				sa += results[i];
			} else {
				sa += results[i]*pow(-1, i);
			}
		}
		if(x->mode == 0)
			sb = results[3]+results[4];
		else
			sb = -results[3]+results[4];
		
		rgain = (1-sb) / sa;
		
		double val;
		for(i=0; i<3; i++) {
			val = results[i]*rgain;
			//atom_setfloat(x->stages+(j*5+i), val);
			x->coeffs[j*5+i] = val;
		}
		for(i=0; i<2; i++) {
			val= -results[i+3];
			//atom_setfloat(x->stages+(j*5+3+i), val);
			x->coeffs[j*5+3+i] = val;
		}
		
	}
	atom_setdouble_array((5*poles2), x->stages, (MAXPOLES*5/2), x->coeffs);
	outlet_list(x->stages_out, 0L, 5*poles2, x->stages);

}