From b317e860079c1fb166a95d0b5c17574cb6a32d4f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 19 Feb 2012 03:03:32 +0000 Subject: reformat code to match Pd style by running 'astyle --style=ansi *.c' svn path=/trunk/externals/unauthorized/; revision=15994 --- filterbank~.c | 606 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 308 insertions(+), 298 deletions(-) (limited to 'filterbank~.c') diff --git a/filterbank~.c b/filterbank~.c index 37d40c9..4fab001 100644 --- a/filterbank~.c +++ b/filterbank~.c @@ -126,44 +126,44 @@ static void miller_sigbp_docoef(t_filterbank_tilde *x, t_int index, t_floatarg f static void filterbank_draw_new(t_filterbank_tilde *x, t_glist *glist) { - t_canvas *canvas=glist_getcanvas(glist); - int fi; - - // draw the square - { - - SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xFILTERBANK\n", - canvas, - text_xpix(&x->x_obj, glist), - text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + x->x_width, - text_ypix(&x->x_obj, glist) + x->x_height, - x); - - SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -fill #000000 -tags %xSIN\n", - canvas, - text_xpix(&x->x_obj, glist), - text_ypix(&x->x_obj, glist)-1, - text_xpix(&x->x_obj, glist)+7, - text_ypix(&x->x_obj, glist), - x); - - for ( fi=0; fix_nbfilters; fi++ ) - { - char color[8]; - - sprintf( color, "#%.2x%.2x%.2x", (int)random() % 256, (int)random() % 256, (int)random() % 256 ); - - SYS_VGUI11(".x%lx.c create polygon %d %d %d %d %d %d -outline #000000 -fill %s -tags %xFILTER%d\n", - canvas, - text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters, - text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters + x->x_width/(2*x->x_nbfilters), - text_ypix(&x->x_obj, glist) + x->x_height, - text_xpix(&x->x_obj, glist) + (fi+1)*x->x_width/x->x_nbfilters, - text_ypix(&x->x_obj, glist), - color, x, fi); - } + t_canvas *canvas=glist_getcanvas(glist); + int fi; + + // draw the square + { + + SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -fill #FFFFFF -tags %xFILTERBANK\n", + canvas, + text_xpix(&x->x_obj, glist), + text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist) + x->x_width, + text_ypix(&x->x_obj, glist) + x->x_height, + x); + + SYS_VGUI7(".x%lx.c create rectangle %d %d %d %d -fill #000000 -tags %xSIN\n", + canvas, + text_xpix(&x->x_obj, glist), + text_ypix(&x->x_obj, glist)-1, + text_xpix(&x->x_obj, glist)+7, + text_ypix(&x->x_obj, glist), + x); + + for ( fi=0; fix_nbfilters; fi++ ) + { + char color[8]; + + sprintf( color, "#%.2x%.2x%.2x", (int)random() % 256, (int)random() % 256, (int)random() % 256 ); + + SYS_VGUI11(".x%lx.c create polygon %d %d %d %d %d %d -outline #000000 -fill %s -tags %xFILTER%d\n", + canvas, + text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters, + text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters + x->x_width/(2*x->x_nbfilters), + text_ypix(&x->x_obj, glist) + x->x_height, + text_xpix(&x->x_obj, glist) + (fi+1)*x->x_width/x->x_nbfilters, + text_ypix(&x->x_obj, glist), + color, x, fi); + } } canvas_fixlinesfor( canvas, (t_text*)x ); @@ -175,32 +175,32 @@ static void filterbank_draw_move(t_filterbank_tilde *x, t_glist *glist) t_int fi; SYS_VGUI7(".x%lx.c coords %xFILTERBANK %d %d %d %d\n", - canvas, x, - text_xpix(&x->x_obj, glist), - text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + x->x_width, - text_ypix(&x->x_obj, glist) + x->x_height + canvas, x, + text_xpix(&x->x_obj, glist), + text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist) + x->x_width, + text_ypix(&x->x_obj, glist) + x->x_height ); SYS_VGUI7(".x%lx.c coords %xSIN %d %d %d %d\n", - canvas, x, - text_xpix(&x->x_obj, glist), - text_ypix(&x->x_obj, glist)-1, - text_xpix(&x->x_obj, glist)+7, - text_ypix(&x->x_obj, glist) + canvas, x, + text_xpix(&x->x_obj, glist), + text_ypix(&x->x_obj, glist)-1, + text_xpix(&x->x_obj, glist)+7, + text_ypix(&x->x_obj, glist) ); for ( fi=0; fix_nbfilters; fi++ ) { - SYS_VGUI10(".x%lx.c coords %xFILTER%d %d %d %d %d %d %d\n", - canvas, x, fi, - text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters, - text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters + x->x_width/(2*x->x_nbfilters), - text_ypix(&x->x_obj, glist) + x->x_height, - text_xpix(&x->x_obj, glist) + (fi+1)*x->x_width/x->x_nbfilters, - text_ypix(&x->x_obj, glist) - ); + SYS_VGUI10(".x%lx.c coords %xFILTER%d %d %d %d %d %d %d\n", + canvas, x, fi, + text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters, + text_ypix(&x->x_obj, glist), + text_xpix(&x->x_obj, glist) + fi*x->x_width/x->x_nbfilters + x->x_width/(2*x->x_nbfilters), + text_ypix(&x->x_obj, glist) + x->x_height, + text_xpix(&x->x_obj, glist) + (fi+1)*x->x_width/x->x_nbfilters, + text_ypix(&x->x_obj, glist) + ); } canvas_fixlinesfor( canvas, (t_text*)x ); @@ -208,14 +208,14 @@ static void filterbank_draw_move(t_filterbank_tilde *x, t_glist *glist) static void filterbank_draw_erase(t_filterbank_tilde* x,t_glist* glist) { - t_canvas *canvas=glist_getcanvas(glist); - int fi; - + t_canvas *canvas=glist_getcanvas(glist); + int fi; + SYS_VGUI3(".x%lx.c delete %xFILTERBANK\n", canvas, x ); SYS_VGUI3(".x%lx.c delete %xSIN\n", canvas, x ); for ( fi=0; fix_nbfilters; fi++ ) { - SYS_VGUI4(".x%lx.c delete %xFILTER%d\n", canvas, x, fi ); + SYS_VGUI4(".x%lx.c delete %xFILTER%d\n", canvas, x, fi ); } } @@ -227,11 +227,11 @@ static void filterbank_draw_select(t_filterbank_tilde* x,t_glist* glist) if(x->x_selected) { /* sets the item in blue */ - SYS_VGUI3(".x%lx.c itemconfigure %xFILTERBANK -outline #0000FF\n", canvas, x); + SYS_VGUI3(".x%lx.c itemconfigure %xFILTERBANK -outline #0000FF\n", canvas, x); } else { - SYS_VGUI3(".x%lx.c itemconfigure %xFILTERBANK -outline #000000\n", canvas, x); + SYS_VGUI3(".x%lx.c itemconfigure %xFILTERBANK -outline #000000\n", canvas, x); } } @@ -239,152 +239,154 @@ static void filterbank_draw_select(t_filterbank_tilde* x,t_glist* glist) static void filterbank_getrect(t_gobj *z, t_glist *owner, - int *xp1, int *yp1, int *xp2, int *yp2) + int *xp1, int *yp1, int *xp2, int *yp2) { - t_filterbank_tilde* x = (t_filterbank_tilde*)z; + t_filterbank_tilde* x = (t_filterbank_tilde*)z; - *xp1 = text_xpix(&x->x_obj, owner); - *yp1 = text_ypix(&x->x_obj, owner); - *xp2 = text_xpix(&x->x_obj, owner)+x->x_width; - *yp2 = text_ypix(&x->x_obj, owner)+x->x_height; + *xp1 = text_xpix(&x->x_obj, owner); + *yp1 = text_ypix(&x->x_obj, owner); + *xp2 = text_xpix(&x->x_obj, owner)+x->x_width; + *yp2 = text_ypix(&x->x_obj, owner)+x->x_height; } static void filterbank_save(t_gobj *z, t_binbuf *b) { - t_filterbank_tilde *x = (t_filterbank_tilde *)z; - t_int ii; + t_filterbank_tilde *x = (t_filterbank_tilde *)z; + t_int ii; - binbuf_addv(b, "ssiisiii", gensym("#X"),gensym("obj"), - (t_int)x->x_obj.te_xpix, (t_int)x->x_obj.te_ypix, - atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), - x->x_lowfreq, x->x_highfreq, + binbuf_addv(b, "ssiisiii", gensym("#X"),gensym("obj"), + (t_int)x->x_obj.te_xpix, (t_int)x->x_obj.te_ypix, + atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), + x->x_lowfreq, x->x_highfreq, x->x_nbfilters ); - binbuf_addv(b, ";"); + binbuf_addv(b, ";"); } static void filterbank_properties(t_gobj *z, t_glist *owner) { - char buf[800]; - t_filterbank_tilde *x=(t_filterbank_tilde *)z; + char buf[800]; + t_filterbank_tilde *x=(t_filterbank_tilde *)z; - sprintf(buf, "pdtk_filterbank_dialog %%s %d %d\n", + sprintf(buf, "pdtk_filterbank_dialog %%s %d %d\n", x->x_lowfreq, x->x_highfreq ); - gfxstub_new(&x->x_obj.ob_pd, x, buf); + gfxstub_new(&x->x_obj.ob_pd, x, buf); } static void filterbank_select(t_gobj *z, t_glist *glist, int selected) { - t_filterbank_tilde *x = (t_filterbank_tilde *)z; + t_filterbank_tilde *x = (t_filterbank_tilde *)z; - x->x_selected = selected; - filterbank_draw_select( x, glist ); + x->x_selected = selected; + filterbank_draw_select( x, glist ); } static void filterbank_vis(t_gobj *z, t_glist *glist, int vis) { - t_filterbank_tilde *x = (t_filterbank_tilde *)z; - - // post( "filterbank~ : vis : %d", vis ); - if (vis) - { - filterbank_draw_new( x, glist ); - } - else - { - filterbank_draw_erase( x, glist ); - } + t_filterbank_tilde *x = (t_filterbank_tilde *)z; + + // post( "filterbank~ : vis : %d", vis ); + if (vis) + { + filterbank_draw_new( x, glist ); + } + else + { + filterbank_draw_erase( x, glist ); + } } static void filterbank_dialog(t_filterbank_tilde *x, t_symbol *s, int argc, t_atom *argv) { - t_int olowfreq = x->x_lowfreq; - t_int ohighfreq = x->x_highfreq; - t_int fi, ei; - t_int dspstate; - t_float Q; - t_float afreq, abandwidth; - t_canvas *canvas=glist_getcanvas(x->x_glist); - - // !!paranoid - if ( !x ) { - post( "filterbank~ : error :tried to set properties on an unexisting object" ); - } - if ( argc != 2 ) - { - post( "filterbank : error in the number of arguments ( %d instead of 2 )", argc ); - return; - } - if ( argv[0].a_type != A_FLOAT || argv[1].a_type != A_FLOAT ) { - post( "filterbank~ : wrong arguments" ); - return; - } - - x->x_allocate = 1; - x->x_lowfreq = (int)argv[0].a_w.w_float; - if ( x->x_lowfreq < 0 ) x->x_lowfreq = 0; - x->x_highfreq = (int)argv[1].a_w.w_float; - if ( x->x_highfreq < x->x_lowfreq ) x->x_highfreq = x->x_lowfreq + 100; - - // recalculate filters if needed - if ( ( olowfreq != x->x_lowfreq ) || ( ohighfreq != x->x_highfreq ) ) - { - // free filters - if ( x->x_freq ) - { - freebytes( x->x_freq, x->x_nbfilters*sizeof(t_float) ); - } - if ( x->x_q ) - { - freebytes( x->x_q, x->x_nbfilters*sizeof(t_float) ); - } - if ( x->x_cspace ) - { - freebytes( x->x_cspace, x->x_nbfilters*sizeof(t_bpctl) ); - } - if ( x->x_ctl ) - { - freebytes( x->x_ctl, x->x_nbfilters*sizeof(t_bpctl*) ); - } - // create filters - x->x_freq = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); - x->x_q = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); - x->x_cspace = (t_bpctl *) getbytes( x->x_nbfilters*sizeof(t_bpctl) ); - x->x_ctl = (t_bpctl **) getbytes( x->x_nbfilters*sizeof(t_bpctl*) ); - if ( !x->x_freq || !x->x_q || !x->x_cspace || !x->x_ctl ) - { - post( "filterbank~ : could not allocate filters" ); - return; - } - abandwidth = ( x->x_highfreq - x->x_lowfreq ) / x->x_nbfilters; - afreq = x->x_lowfreq + ( abandwidth / 2 ); - for ( fi=0; fix_nbfilters; fi++ ) - { - x->x_ctl[fi] = &x->x_cspace[fi]; - x->x_cspace[fi].c_x1 = 0; - x->x_cspace[fi].c_x2 = 0; - Q = ( (t_float) afreq )/ ( (t_float) abandwidth ); - miller_sigbp_docoef( x, fi, afreq, Q ); - afreq += abandwidth; - } - } - - x->x_allocate = 0; + t_int olowfreq = x->x_lowfreq; + t_int ohighfreq = x->x_highfreq; + t_int fi, ei; + t_int dspstate; + t_float Q; + t_float afreq, abandwidth; + t_canvas *canvas=glist_getcanvas(x->x_glist); + + // !!paranoid + if ( !x ) + { + post( "filterbank~ : error :tried to set properties on an unexisting object" ); + } + if ( argc != 2 ) + { + post( "filterbank : error in the number of arguments ( %d instead of 2 )", argc ); + return; + } + if ( argv[0].a_type != A_FLOAT || argv[1].a_type != A_FLOAT ) + { + post( "filterbank~ : wrong arguments" ); + return; + } + + x->x_allocate = 1; + x->x_lowfreq = (int)argv[0].a_w.w_float; + if ( x->x_lowfreq < 0 ) x->x_lowfreq = 0; + x->x_highfreq = (int)argv[1].a_w.w_float; + if ( x->x_highfreq < x->x_lowfreq ) x->x_highfreq = x->x_lowfreq + 100; + + // recalculate filters if needed + if ( ( olowfreq != x->x_lowfreq ) || ( ohighfreq != x->x_highfreq ) ) + { + // free filters + if ( x->x_freq ) + { + freebytes( x->x_freq, x->x_nbfilters*sizeof(t_float) ); + } + if ( x->x_q ) + { + freebytes( x->x_q, x->x_nbfilters*sizeof(t_float) ); + } + if ( x->x_cspace ) + { + freebytes( x->x_cspace, x->x_nbfilters*sizeof(t_bpctl) ); + } + if ( x->x_ctl ) + { + freebytes( x->x_ctl, x->x_nbfilters*sizeof(t_bpctl*) ); + } + // create filters + x->x_freq = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); + x->x_q = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); + x->x_cspace = (t_bpctl *) getbytes( x->x_nbfilters*sizeof(t_bpctl) ); + x->x_ctl = (t_bpctl **) getbytes( x->x_nbfilters*sizeof(t_bpctl*) ); + if ( !x->x_freq || !x->x_q || !x->x_cspace || !x->x_ctl ) + { + post( "filterbank~ : could not allocate filters" ); + return; + } + abandwidth = ( x->x_highfreq - x->x_lowfreq ) / x->x_nbfilters; + afreq = x->x_lowfreq + ( abandwidth / 2 ); + for ( fi=0; fix_nbfilters; fi++ ) + { + x->x_ctl[fi] = &x->x_cspace[fi]; + x->x_cspace[fi].c_x1 = 0; + x->x_cspace[fi].c_x2 = 0; + Q = ( (t_float) afreq )/ ( (t_float) abandwidth ); + miller_sigbp_docoef( x, fi, afreq, Q ); + afreq += abandwidth; + } + } + + x->x_allocate = 0; } static void filterbank_delete(t_gobj *z, t_glist *glist) { - t_filterbank_tilde *x = (t_filterbank_tilde *)z; + t_filterbank_tilde *x = (t_filterbank_tilde *)z; - // post( "filterbank~ : delete" ); - filterbank_draw_erase( x, glist ); - canvas_deletelinesfor(glist, (t_text *)z); + // post( "filterbank~ : delete" ); + filterbank_draw_erase( x, glist ); + canvas_deletelinesfor(glist, (t_text *)z); } static void filterbank_displace(t_gobj *z, t_glist *glist, int dx, int dy) { - t_filterbank_tilde *x = (t_filterbank_tilde *)z; - int xold = text_xpix(&x->x_obj, glist); - int yold = text_ypix(&x->x_obj, glist); + t_filterbank_tilde *x = (t_filterbank_tilde *)z; + int xold = text_xpix(&x->x_obj, glist); + int yold = text_ypix(&x->x_obj, glist); // post( "filterbank_displace dx=%d dy=%d", dx, dy ); @@ -392,31 +394,36 @@ static void filterbank_displace(t_gobj *z, t_glist *glist, int dx, int dy) x->x_obj.te_ypix += dy; if(xold != text_xpix(&x->x_obj, glist) || yold != text_ypix(&x->x_obj, glist) ) { - filterbank_draw_move(x, x->x_glist); + filterbank_draw_move(x, x->x_glist); } } static void filterbank_randomize(t_filterbank_tilde *x, t_floatarg fflag ) { - t_int shind, tmpi, fi; - - if ( fflag != 0.0 && fflag != 1.0 ) { - post( "filterbank~ : wrong argument in randomize message : should be 0 or 1" ); - return; - } else if ( fflag == 1 ) { - for ( fi=0; fix_nbfilters; fi++ ) - { - shind = rand() % x->x_nbfilters; - tmpi = x->x_outmapping[ shind ]; - x->x_outmapping[ shind ] = x->x_outmapping[ fi ]; - x->x_outmapping[ fi ] = tmpi; - } - } else { - for ( fi=0; fix_nbfilters; fi++ ) - { - x->x_outmapping[ fi ] = fi; - } + t_int shind, tmpi, fi; + + if ( fflag != 0.0 && fflag != 1.0 ) + { + post( "filterbank~ : wrong argument in randomize message : should be 0 or 1" ); + return; + } + else if ( fflag == 1 ) + { + for ( fi=0; fix_nbfilters; fi++ ) + { + shind = rand() % x->x_nbfilters; + tmpi = x->x_outmapping[ shind ]; + x->x_outmapping[ shind ] = x->x_outmapping[ fi ]; + x->x_outmapping[ fi ] = tmpi; + } + } + else + { + for ( fi=0; fix_nbfilters; fi++ ) + { + x->x_outmapping[ fi ] = fi; + } } } @@ -427,38 +434,39 @@ static t_filterbank_tilde *filterbank_new(t_symbol *s, int argc, t_atom *argv) char *str; t_float Q; t_float afreq, abandwidth; - + x = (t_filterbank_tilde *)pd_new(filterbank_class_tilde); x->x_samplerate = (int)sys_getsr(); x->x_sr = 44100; - // new filterbank created from the gui + // new filterbank created from the gui if ( argc != 0 ) { - if ( argc != 3 ) - { - post( "filterbank~ : error in the number of arguments ( %d )", argc ); - return NULL; - } - if ( argv[0].a_type != A_FLOAT || argv[1].a_type != A_FLOAT || - argv[2].a_type != A_FLOAT ) { - post( "filterbank~ : wrong arguments" ); - return NULL; - } + if ( argc != 3 ) + { + post( "filterbank~ : error in the number of arguments ( %d )", argc ); + return NULL; + } + if ( argv[0].a_type != A_FLOAT || argv[1].a_type != A_FLOAT || + argv[2].a_type != A_FLOAT ) + { + post( "filterbank~ : wrong arguments" ); + return NULL; + } - x->x_lowfreq = (int)argv[0].a_w.w_float; - if ( x->x_lowfreq < 0 ) x->x_lowfreq = 0; - x->x_highfreq = (int)argv[1].a_w.w_float; - if ( x->x_highfreq < x->x_lowfreq ) x->x_highfreq = x->x_lowfreq + 100; - x->x_nbfilters = (int)argv[2].a_w.w_float; - if ( x->x_nbfilters < 1 ) x->x_nbfilters = 1; + x->x_lowfreq = (int)argv[0].a_w.w_float; + if ( x->x_lowfreq < 0 ) x->x_lowfreq = 0; + x->x_highfreq = (int)argv[1].a_w.w_float; + if ( x->x_highfreq < x->x_lowfreq ) x->x_highfreq = x->x_lowfreq + 100; + x->x_nbfilters = (int)argv[2].a_w.w_float; + if ( x->x_nbfilters < 1 ) x->x_nbfilters = 1; } else { - x->x_lowfreq = DEFAULT_FILTERBANK_LOWFREQ; - x->x_highfreq = DEFAULT_FILTERBANK_HIGHFREQ; - x->x_nbfilters = DEFAULT_FILTERBANK_NBFILTERS; + x->x_lowfreq = DEFAULT_FILTERBANK_LOWFREQ; + x->x_highfreq = DEFAULT_FILTERBANK_HIGHFREQ; + x->x_nbfilters = DEFAULT_FILTERBANK_NBFILTERS; } // post( "filterbank~ : new [ %d,%d ] with %d filters", x->x_lowfreq, x->x_highfreq, x->x_nbfilters ); @@ -467,34 +475,34 @@ static t_filterbank_tilde *filterbank_new(t_symbol *s, int argc, t_atom *argv) x->x_outputs = (t_outlet **) getbytes( x->x_nbfilters*sizeof(t_outlet *) ); if ( !x->x_outputs ) { - post( "filterbank~ : could not allocate outputs" ); - return NULL; + post( "filterbank~ : could not allocate outputs" ); + return NULL; } for ( fi=0; fix_nbfilters; fi++ ) { - x->x_outputs[fi] = outlet_new( &x->x_obj, &s_signal ); + x->x_outputs[fi] = outlet_new( &x->x_obj, &s_signal ); } - // create filters + // create filters x->x_freq = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); x->x_q = (t_float *) getbytes( x->x_nbfilters*sizeof(t_float) ); x->x_cspace = (t_bpctl *) getbytes( x->x_nbfilters*sizeof(t_bpctl) ); x->x_ctl = (t_bpctl **) getbytes( x->x_nbfilters*sizeof(t_bpctl*) ); if ( !x->x_freq || !x->x_q || !x->x_cspace || !x->x_ctl ) { - post( "filterbank~ : could not allocate filters" ); - return NULL; + post( "filterbank~ : could not allocate filters" ); + return NULL; } abandwidth = ( x->x_highfreq - x->x_lowfreq ) / x->x_nbfilters; afreq = x->x_lowfreq + ( abandwidth / 2 ); for ( fi=0; fix_nbfilters; fi++ ) { - x->x_ctl[fi] = &x->x_cspace[fi]; - x->x_cspace[fi].c_x1 = 0; - x->x_cspace[fi].c_x2 = 0; - Q = ( (t_float) afreq ) / ( (t_float) abandwidth ); - miller_sigbp_docoef( x, fi, afreq, Q ); - afreq += abandwidth; + x->x_ctl[fi] = &x->x_cspace[fi]; + x->x_cspace[fi].c_x1 = 0; + x->x_cspace[fi].c_x2 = 0; + Q = ( (t_float) afreq ) / ( (t_float) abandwidth ); + miller_sigbp_docoef( x, fi, afreq, Q ); + afreq += abandwidth; } x->x_width = x->x_nbfilters*FILTERBANK_OUTLET_WIDTH*2; @@ -506,48 +514,48 @@ static t_filterbank_tilde *filterbank_new(t_symbol *s, int argc, t_atom *argv) x->x_outmapping = (t_int*) getbytes( x->x_nbfilters*sizeof( t_int ) ); if ( !x->x_outmapping ) { - post( "filterbank~ : cannot allocate mapping array" ); - return NULL; // otherwise, pd schrieks + post( "filterbank~ : cannot allocate mapping array" ); + return NULL; // otherwise, pd schrieks } for ( fi=0; fix_nbfilters; fi++ ) { - x->x_outmapping[fi] = fi; + x->x_outmapping[fi] = fi; } return (x); } static void filterbank_free(t_filterbank_tilde *x) { - t_int ei, fi; - - if ( x->x_outputs ) - { - for ( ei=0; eix_nbfilters; ei++ ) - { - outlet_free( x->x_outputs[ei] ); - } - freebytes( x->x_outputs, x->x_nbfilters*sizeof(t_outlet*) ); - } - if ( x->x_freq ) - { - freebytes( x->x_freq, x->x_nbfilters*sizeof(t_float) ); - } - if ( x->x_q ) - { - freebytes( x->x_q, x->x_nbfilters*sizeof(t_float) ); - } - if ( x->x_cspace ) - { - freebytes( x->x_cspace, x->x_nbfilters*sizeof(t_bpctl) ); - } - if ( x->x_ctl ) - { - freebytes( x->x_ctl, x->x_nbfilters*sizeof(t_bpctl*) ); - } - if ( x->x_outmapping ) - { - freebytes( x->x_outmapping, x->x_nbfilters*sizeof(t_int) ); - } + t_int ei, fi; + + if ( x->x_outputs ) + { + for ( ei=0; eix_nbfilters; ei++ ) + { + outlet_free( x->x_outputs[ei] ); + } + freebytes( x->x_outputs, x->x_nbfilters*sizeof(t_outlet*) ); + } + if ( x->x_freq ) + { + freebytes( x->x_freq, x->x_nbfilters*sizeof(t_float) ); + } + if ( x->x_q ) + { + freebytes( x->x_q, x->x_nbfilters*sizeof(t_float) ); + } + if ( x->x_cspace ) + { + freebytes( x->x_cspace, x->x_nbfilters*sizeof(t_bpctl) ); + } + if ( x->x_ctl ) + { + freebytes( x->x_ctl, x->x_nbfilters*sizeof(t_bpctl*) ); + } + if ( x->x_outmapping ) + { + freebytes( x->x_outmapping, x->x_nbfilters*sizeof(t_int) ); + } } static t_int *filterbank_perform(t_int *w) @@ -558,8 +566,8 @@ static t_int *filterbank_perform(t_int *w) t_float *in, *out; int i; t_float last, prev, coef1, coef2, gain; - t_float *acopy; - t_int noneedtofilter = 1; + t_float *acopy; + t_int noneedtofilter = 1; in = (t_float*)w[3]; @@ -567,51 +575,53 @@ static t_int *filterbank_perform(t_int *w) acopy = (t_float*) getbytes( n*sizeof( t_float ) ); if ( !acopy ) { - post( "filterbank~ : cannot allocate audio copy block" ); - return 0; // otherwise, pd schrieks + post( "filterbank~ : cannot allocate audio copy block" ); + return 0; // otherwise, pd schrieks } memcpy( acopy, in, n*sizeof(t_float) ); for ( i=0; ix_nbfilters; fi++ ) - { - out = (t_float *)(w[x->x_outmapping[fi]+4]); - - last = x->x_ctl[fi]->c_x1; - prev = x->x_ctl[fi]->c_x2; - coef1 = x->x_ctl[fi]->c_coef1; - coef2 = x->x_ctl[fi]->c_coef2; - gain = x->x_ctl[fi]->c_gain; - for (i=0; i < n; i++) + for ( fi=0; fix_nbfilters; fi++ ) { - float output = *(acopy+i) + coef1 * last + coef2 * prev; - *out++ = gain * output; - prev = last; - last = output; - } + out = (t_float *)(w[x->x_outmapping[fi]+4]); + + last = x->x_ctl[fi]->c_x1; + prev = x->x_ctl[fi]->c_x2; + coef1 = x->x_ctl[fi]->c_coef1; + coef2 = x->x_ctl[fi]->c_coef2; + gain = x->x_ctl[fi]->c_gain; + for (i=0; i < n; i++) + { + float output = *(acopy+i) + coef1 * last + coef2 * prev; + *out++ = gain * output; + prev = last; + last = output; + } /* NAN protect */ - if (!((last <= 0) || (last >= 0))) - last = 0; - if (!((prev <= 0) || (prev >= 0))) - prev = 0; - x->x_ctl[fi]->c_x1 = last; - x->x_ctl[fi]->c_x2 = prev; - } - } else { - for ( fi=0; fix_nbfilters; fi++ ) - { - out = (t_float *)(w[x->x_outmapping[fi]+4]); - for (i=0; i < n; i++) + if (!((last <= 0) || (last >= 0))) + last = 0; + if (!((prev <= 0) || (prev >= 0))) + prev = 0; + x->x_ctl[fi]->c_x1 = last; + x->x_ctl[fi]->c_x2 = prev; + } + } + else + { + for ( fi=0; fix_nbfilters; fi++ ) { - *out++ = 0.0; + out = (t_float *)(w[x->x_outmapping[fi]+4]); + for (i=0; i < n; i++) + { + *out++ = 0.0; + } } - } } if ( acopy ) freebytes( acopy, n*sizeof(t_float) ); @@ -621,7 +631,7 @@ static t_int *filterbank_perform(t_int *w) static void filterbank_dsp(t_filterbank_tilde *x, t_signal **sp) { - t_int *dspargs, fi, nbargs; + t_int *dspargs, fi, nbargs; dspargs = (t_int*) getbytes( (x->x_nbfilters+3)*sizeof(t_int) ); @@ -632,10 +642,10 @@ static void filterbank_dsp(t_filterbank_tilde *x, t_signal **sp) nbargs = 3; for ( fi=0; fix_nbfilters; fi++ ) { - dspargs[3+fi] = (t_int)sp[fi+1]->s_vec; - nbargs++; + dspargs[3+fi] = (t_int)sp[fi+1]->s_vec; + nbargs++; } - + dsp_addv(filterbank_perform, nbargs, dspargs ); if ( dspargs ) freebytes( dspargs, (x->x_nbfilters+3)*sizeof(t_int) ); @@ -645,7 +655,7 @@ void filterbank_tilde_setup(void) { verbose(0, filterbank_version ); filterbank_class_tilde = class_new(gensym("filterbank~"), (t_newmethod)filterbank_new, - (t_method)filterbank_free, sizeof(t_filterbank_tilde), 0, A_GIMME, 0); + (t_method)filterbank_free, sizeof(t_filterbank_tilde), 0, A_GIMME, 0); CLASS_MAINSIGNALIN( filterbank_class_tilde, t_filterbank_tilde, x_f ); class_addmethod(filterbank_class_tilde, (t_method)filterbank_dsp, gensym("dsp"), 0); class_addmethod(filterbank_class_tilde, (t_method)filterbank_dialog, gensym("dialog"), A_GIMME, 0); @@ -668,6 +678,6 @@ void filterbank_tilde_setup(void) class_setwidget(filterbank_class_tilde, &filterbank_widgetbehavior); sys_vgui("eval [read [open {%s/%s.tcl}]]\n", - filterbank_class_tilde->c_externdir->s_name, + filterbank_class_tilde->c_externdir->s_name, filterbank_class_tilde->c_name->s_name); } -- cgit v1.2.1