/apps/plugins/bitmaps/native/

">*x, t_signal **sp) { #ifdef ROCKBOX (void) x; #endif if (sp[0]->s_n&7) dsp_add(minus_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n); else dsp_add(minus_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n); } static void scalarminus_dsp(t_scalarminus *x, t_signal **sp) { if (sp[0]->s_n&7) dsp_add(scalarminus_perform, 4, sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n); else dsp_add(scalarminus_perf8, 4, sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n); } static void minus_setup(void) { minus_class = class_new(gensym("-~"), (t_newmethod)minus_new, 0, sizeof(t_minus), 0, A_GIMME, 0); CLASS_MAINSIGNALIN(minus_class, t_minus, x_f); class_addmethod(minus_class, (t_method)minus_dsp, gensym("dsp"), 0); class_sethelpsymbol(minus_class, gensym("sigbinops")); scalarminus_class = class_new(gensym("-~"), 0, 0, sizeof(t_scalarminus), 0, 0); CLASS_MAINSIGNALIN(scalarminus_class, t_scalarminus, x_f); class_addmethod(scalarminus_class, (t_method)scalarminus_dsp, gensym("dsp"), 0); class_sethelpsymbol(scalarminus_class, gensym("sigbinops")); } /* ----------------------------- times ----------------------------- */ static t_class *times_class, *scalartimes_class; typedef struct _times { t_object x_obj; float x_f; } t_times; typedef struct _scalartimes { t_object x_obj; float x_f; t_float x_g; } t_scalartimes; static void *times_new(t_symbol *s, int argc, t_atom *argv) { #ifdef ROCKBOX (void) s; #endif if (argc > 1) post("*~: extra arguments ignored"); if (argc) { t_scalartimes *x = (t_scalartimes *)pd_new(scalartimes_class); floatinlet_new(&x->x_obj, &x->x_g); x->x_g = atom_getfloatarg(0, argc, argv); outlet_new(&x->x_obj, &s_signal); x->x_f = 0; return (x); } else { t_times *x = (t_times *)pd_new(times_class); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); outlet_new(&x->x_obj, &s_signal); x->x_f = 0; return (x); } } t_int *times_perform(t_int *w) { t_sample *in1 = (t_sample *)(w[1]); t_sample *in2 = (t_sample *)(w[2]); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = mult(*in1++,*in2++); return (w+5); } t_int *times_perf8(t_int *w) { t_sample *in1 = (t_sample *)(w[1]); t_sample *in2 = (t_sample *)(w[2]); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = mult(f0,g0); out[1] = mult(f1,g1); out[2] = mult(f2,g2); out[3] = mult(f3,g3); out[4] = mult(f4,g4); out[5] = mult(f5,g5); out[6] = mult(f6,g6); out[7] = mult(f7,g7); } return (w+5); } t_int *scalartimes_perform(t_int *w) { t_sample *in = (t_sample *)(w[1]); t_sample f = ftofix(*(t_float *)(w[2])); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = mult(*in++,f); return (w+5); } t_int *scalartimes_perf8(t_int *w) { t_sample *in = (t_sample *)(w[1]); t_sample g = ftofix(*(t_float *)(w[2])); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in += 8, out += 8) { t_sample f0 = in[0], f1 = in[1], f2 = in[2], f3 = in[3]; t_sample f4 = in[4], f5 = in[5], f6 = in[6], f7 = in[7]; out[0] = mult(f0,g); out[1] = mult(f1,g); out[2] = mult(f2,g); out[3] = mult(f3,g); out[4] = mult(f4,g); out[5] = mult(f5,g); out[6] = mult(f6,g); out[7] = mult(f7,g); } return (w+5); } static void times_dsp(t_times *x, t_signal **sp) { #ifdef ROCKBOX (void) x; #endif if (sp[0]->s_n&7) dsp_add(times_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n); else dsp_add(times_perf8, 4, sp[0]->s_vec, sp[1]->s_vec, sp[2]->s_vec, sp[0]->s_n); } static void scalartimes_dsp(t_scalartimes *x, t_signal **sp) { if (sp[0]->s_n&7) dsp_add(scalartimes_perform, 4, sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n); else dsp_add(scalartimes_perf8, 4, sp[0]->s_vec, &x->x_g, sp[1]->s_vec, sp[0]->s_n); } static void times_setup(void) { times_class = class_new(gensym("*~"), (t_newmethod)times_new, 0, sizeof(t_times), 0, A_GIMME, 0); CLASS_MAINSIGNALIN(times_class, t_times, x_f); class_addmethod(times_class, (t_method)times_dsp, gensym("dsp"), 0); class_sethelpsymbol(times_class, gensym("sigbinops")); scalartimes_class = class_new(gensym("*~"), 0, 0, sizeof(t_scalartimes), 0, 0); CLASS_MAINSIGNALIN(scalartimes_class, t_scalartimes, x_f); class_addmethod(scalartimes_class, (t_method)scalartimes_dsp, gensym("dsp"), 0); class_sethelpsymbol(scalartimes_class, gensym("sigbinops")); } /* ----------------------------- over ----------------------------- */ static t_class *over_class, *scalarover_class; typedef struct _over { t_object x_obj; float x_f; } t_over; typedef struct _scalarover { t_object x_obj; float x_f; t_float x_g; } t_scalarover; static void *over_new(t_symbol *s, int argc, t_atom *argv) { #ifdef ROCKBOX (void) s; #endif if (argc > 1) post("/~: extra arguments ignored"); if (argc) { t_scalarover *x = (t_scalarover *)pd_new(scalarover_class); floatinlet_new(&x->x_obj, &x->x_g); x->x_g = atom_getfloatarg(0, argc, argv); outlet_new(&x->x_obj, &s_signal); x->x_f = 0; return (x); } else { t_over *x = (t_over *)pd_new(over_class); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); outlet_new(&x->x_obj, &s_signal); x->x_f = 0; return (x); } } t_int *over_perform(t_int *w) { t_sample *in1 = (t_sample *)(w[1]); t_sample *in2 = (t_sample *)(w[2]); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) { float g = *in2++; *out++ = (g ? *in1++ / g : 0); } return (w+5); } t_int *over_perf8(t_int *w) { t_sample *in1 = (t_sample *)(w[1]); t_sample *in2 = (t_sample *)(w[2]); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); for (; n; n -= 8, in1 += 8, in2 += 8, out += 8) { t_sample f0 = in1[0], f1 = in1[1], f2 = in1[2], f3 = in1[3]; t_sample f4 = in1[4], f5 = in1[5], f6 = in1[6], f7 = in1[7]; t_sample g0 = in2[0], g1 = in2[1], g2 = in2[2], g3 = in2[3]; t_sample g4 = in2[4], g5 = in2[5], g6 = in2[6], g7 = in2[7]; out[0] = (g0? idiv(f0,g0) : 0); out[1] = (g1? idiv(f1,g1) : 0); out[2] = (g2? idiv(f2,g2) : 0); out[3] = (g3? idiv(f3,g3) : 0); out[4] = (g4? idiv(f4,g4) : 0); out[5] = (g5? idiv(f5,g5) : 0); out[6] = (g6? idiv(f6,g6) : 0); out[7] = (g7? idiv(f7,g7) : 0); } return (w+5); } t_int *scalarover_perform(t_int *w) { t_sample *in = (t_sample *)(w[1]); t_sample f = idiv(ftofix(1.),ftofix(*(t_float *)(w[2]))); t_sample *out = (t_sample *)(w[3]); int n = (int)(w[4]); while (n--) *out++ = mult(*in++,f); return (w+5); } t_int *scalarover_perf8(t_int *w) {