From 79096fd626b946efd6947fa94ab15d30bf003ba0 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Aug 2010 05:04:28 +0000 Subject: converted to new library template and debianized svn path=/trunk/externals/ekext/; revision=13835 --- framescore~/framescore~-help.pd | 180 ------------ framescore~/framescore~.c | 101 ------- framescore~/m_pd.h | 635 ---------------------------------------- framescore~/makefile | 107 ------- 4 files changed, 1023 deletions(-) delete mode 100644 framescore~/framescore~-help.pd delete mode 100644 framescore~/framescore~.c delete mode 100644 framescore~/m_pd.h delete mode 100644 framescore~/makefile (limited to 'framescore~') diff --git a/framescore~/framescore~-help.pd b/framescore~/framescore~-help.pd deleted file mode 100644 index 694cd6f..0000000 --- a/framescore~/framescore~-help.pd +++ /dev/null @@ -1,180 +0,0 @@ -#N canvas 184 397 913 445 10; -#N canvas 0 22 464 243 frame-scoring 0; -#X obj 61 76 inlet~; -#X obj 362 116 block~ 1024; -#X obj 61 93 rfft~; -#X obj 61 110 cartopol~; -#X obj 197 72 inlet~; -#X obj 197 89 rfft~; -#X obj 197 106 cartopol~; -#X obj 60 166 framescore~; -#X obj 60 183 outlet; -#X obj 296 149 inlet; -#X connect 0 0 2 0; -#X connect 2 0 3 0; -#X connect 2 1 3 1; -#X connect 3 0 7 0; -#X connect 4 0 5 0; -#X connect 5 0 6 0; -#X connect 5 1 6 1; -#X connect 6 0 7 1; -#X connect 7 0 8 0; -#X connect 9 0 7 2; -#X restore 95 210 pd frame-scoring; -#X floatatom 95 262 0 0 0 0 similarity - -; -#X obj 80 279 f; -#X obj 151 70 bng 15 250 50 0 empty empty different 0 -6 0 8 -262144 --1 -1; -#X obj 151 85 t b b; -#X obj 74 70 bng 15 250 50 0 empty empty same 0 -6 0 8 -262144 -1 -1 -; -#X obj 74 85 t b b; -#X floatatom 342 165 5 1 100 0 - - -; -#X floatatom 342 196 5 0 0 1 window - -; -#X obj 342 179 / 100; -#N canvas 0 22 532 477 testinput 0; -#X obj 73 73 openpanel; -#X obj 107 23 inlet; -#X obj 107 40 sel 1 2; -#N canvas 0 22 450 300 graph20 0; -#X array test-1 325922 float 0; -#X coords 0 1 325921 -1 300 80 1; -#X restore 83 191 graph; -#N canvas 0 22 450 300 graph20 0; -#X array test-2 192058 float 0; -#X coords 0 1 192057 -1 300 80 1; -#X restore 83 282 graph; -#X msg 73 90 read -resize \$1 test-1; -#X obj 73 107 soundfiler; -#X obj 169 124 t b f; -#X obj 240 73 openpanel; -#X obj 240 107 soundfiler; -#X msg 240 90 read -resize \$1 test-2; -#X obj 169 158 / 44.1; -#X obj 169 141 min; -#X obj 213 158 outlet; -#X obj 329 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 329 139 outlet; -#X connect 0 0 5 0; -#X connect 1 0 2 0; -#X connect 2 0 0 0; -#X connect 2 1 8 0; -#X connect 5 0 6 0; -#X connect 6 0 12 0; -#X connect 7 0 12 0; -#X connect 7 1 12 1; -#X connect 8 0 10 0; -#X connect 9 0 7 0; -#X connect 9 0 14 0; -#X connect 10 0 9 0; -#X connect 11 0 13 0; -#X connect 12 0 11 0; -#X connect 14 0 15 0; -#X restore 314 48 pd testinput; -#X msg 314 31 1; -#X msg 337 31 2; -#X floatatom 314 65 0 0 0 0 shortest - -; -#X obj 314 82 / 2; -#X floatatom 314 216 0 0 0 0 - - -; -#X obj 263 216 del 500; -#N canvas 0 22 264 157 playsound 0; -#X obj 51 82 tabplay~ test-1; -#X obj 164 65 inlet; -#X obj 51 65 inlet; -#X obj 51 99 outlet~; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X restore 74 136 pd playsound; -#N canvas 0 22 264 157 playsound 0; -#X obj 51 82 tabplay~ test-1; -#X obj 153 65 inlet; -#X obj 51 65 inlet; -#X obj 51 99 outlet~; -#X connect 0 0 3 0; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X restore 160 136 pd playsound; -#X text 439 12 framescore~ calculates a weighted similarity value for -two signal vectors. The value is weighted proportional to amplitude -\, so that comparisons made between higher value vectors have more -effect on the output than comparisons between low value vectors.; -#X obj 337 14 r loadsamples; -#X msg 103 119 set test-1; -#X msg 233 102 set test-1; -#X msg 233 119 set test-2; -#X text 437 80 Its use is in comparing alpha vectors from an rfft~ --> cartopol~ pair \, where higher amplitude bins are weighted against -low amplitude bins. The maximum amplitude of the comparison vector -on inlet 2 is used to scale the output value so that it always gives -a score between 0 (no similarity) and 1 (identical alpha).; -#X text 434 242 start here; -#X obj 125 313 > 0.5; -#X msg 102 313 1; -#X obj 102 330 -; -#X obj 80 296 t f b f; -#X obj 80 355 spigot; -#X obj 124 355 spigot; -#X obj 124 372 print similar; -#X obj 80 389 print different; -#X msg 436 258 \; pd dsp 1 \; loadsamples bang; -#X obj 246 153 loadbang; -#X msg 246 170 1; -#X text 92 37 _Compare_; -#X text 670 244 see also; -#X obj 671 258 framespect~; -#X text 438 158 Differences between the peak levels of the two vectors -may cause similarities in peak patterns to be missed. This can be avoided -by first passing the alpha vectors through a object from -the library.; -#X text 3 210 HERE it is-->; -#X obj 671 278 simile~; -#X obj 671 298 simile; -#X obj 671 318 hssc~; -#X text 438 210 Alternatively the object may be used to compare any -positive pair of vectors block-by-block.; -#X connect 0 0 1 0; -#X connect 1 0 2 1; -#X connect 2 0 29 0; -#X connect 3 0 4 0; -#X connect 4 0 16 0; -#X connect 4 0 18 0; -#X connect 4 0 17 0; -#X connect 4 1 23 0; -#X connect 4 1 21 0; -#X connect 5 0 6 0; -#X connect 6 0 16 0; -#X connect 6 0 17 0; -#X connect 6 0 18 0; -#X connect 6 1 21 0; -#X connect 6 1 22 0; -#X connect 7 0 9 0; -#X connect 8 0 0 2; -#X connect 9 0 8 0; -#X connect 10 0 13 0; -#X connect 10 1 11 0; -#X connect 11 0 10 0; -#X connect 12 0 10 0; -#X connect 13 0 14 0; -#X connect 14 0 15 0; -#X connect 15 0 16 1; -#X connect 16 0 2 0; -#X connect 17 0 0 0; -#X connect 18 0 0 1; -#X connect 20 0 12 0; -#X connect 21 0 17 1; -#X connect 22 0 18 1; -#X connect 23 0 18 1; -#X connect 26 0 28 1; -#X connect 26 0 31 1; -#X connect 27 0 28 0; -#X connect 28 0 30 1; -#X connect 29 0 30 0; -#X connect 29 0 31 0; -#X connect 29 1 27 0; -#X connect 29 2 26 0; -#X connect 30 0 33 0; -#X connect 31 0 32 0; -#X connect 35 0 36 0; -#X connect 36 0 7 0; diff --git a/framescore~/framescore~.c b/framescore~/framescore~.c deleted file mode 100644 index 2cbfea8..0000000 --- a/framescore~/framescore~.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * framescore~ : Weighted block comparison. - * Copyright (C) 2005 Edward Kelly - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "m_pd.h" - -static t_class *framescore_tilde_class; - -typedef struct _framescore_tilde -{ - t_object x_obj; - t_float f; - t_float f_max, f_win, f_accum; - t_outlet *f_score; -} t_framescore_tilde; - -t_int *framescore_tilde_perform(t_int *w) -{ - t_framescore_tilde *x = (t_framescore_tilde *)(w[1]); - t_sample *in1 = (t_sample *)(w[2]); - t_sample *in2 = (t_sample *)(w[3]); - int n = (int)(w[4]); - float vector1; - float vector2; - x->f_accum = 0; - float block_accum = 0; - x->f_max = 0; - float score = 0; - float avg = 0; - int block = n; - x->f_win = x->f_win > 0 ? x->f_win : 0.01; - - while (n--) - { - vector1 = (*in1++); - vector2 = (*in2++); - vector1 = vector1 > 0 ? vector1 : 0 - vector1; - vector2 = vector2 > 0 ? vector2 : 0 - vector2; - block_accum += vector2; - x->f_max = vector2 > x->f_max ? vector2 : x->f_max; - float diff = vector1 > vector2 ? vector1 - vector2 : vector2 - vector1; - x->f_accum += (1/((diff/x->f_win)+1)) * vector2; - } - score = x->f_accum / x->f_max; - block_accum /= x->f_max; - avg = score / block_accum; - outlet_float(x->f_score, avg); - - return(w+5); -} - -void framescore_tilde_dsp(t_framescore_tilde *x, t_signal **sp) -{ - dsp_add(framescore_tilde_perform, 4, x, - sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n); -} - -void *framescore_tilde_new(t_floatarg f) -{ - t_framescore_tilde *x = (t_framescore_tilde *)pd_new(framescore_tilde_class); - - x->f_win = f; - - inlet_new (&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); - floatinlet_new (&x->x_obj, &x->f_win); - x->f_score = outlet_new(&x->x_obj, gensym("float")); - - return (void *)x; -} - - -void framescore_tilde_setup(void) -{ - framescore_tilde_class = class_new(gensym("framescore~"), - (t_newmethod)framescore_tilde_new, - 0, sizeof(t_framescore_tilde), - CLASS_DEFAULT, A_DEFFLOAT, 0); - - post("|+++++++++++framescore~+++++++++++++|"); - post("|+++++weighted block comparison+++++|"); - post("|+++edward+++++++kelly+++++++2005+++|"); - - class_addmethod(framescore_tilde_class, (t_method)framescore_tilde_dsp, - gensym("dsp"), 0); - - CLASS_MAINSIGNALIN(framescore_tilde_class, t_framescore_tilde, f); -} diff --git a/framescore~/m_pd.h b/framescore~/m_pd.h deleted file mode 100644 index fc9d6ab..0000000 --- a/framescore~/m_pd.h +++ /dev/null @@ -1,635 +0,0 @@ -/* Copyright (c) 1997-1999 Miller Puckette. -* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ - -#ifndef __m_pd_h_ - -#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) -extern "C" { -#endif - -#define PD_MAJOR_VERSION 0 -#define PD_MINOR_VERSION 38 - -/* old name for "MSW" flag -- we have to take it for the sake of many old -"nmakefiles" for externs, which will define NT and not MSW */ -#if defined(NT) && !defined(MSW) -#define MSW -#endif - -#ifdef MSW -/* #pragma warning( disable : 4091 ) */ -#pragma warning( disable : 4305 ) /* uncast const double to float */ -#pragma warning( disable : 4244 ) /* uncast float/int conversion etc. */ -#pragma warning( disable : 4101 ) /* unused automatic variables */ -#endif /* MSW */ - - /* the external storage class is "extern" in UNIX; in MSW it's ugly. */ -#ifdef MSW -#ifdef PD_INTERNAL -#define EXTERN __declspec(dllexport) extern -#else -#define EXTERN __declspec(dllimport) extern -#endif /* PD_INTERNAL */ -#else -#define EXTERN extern -#endif /* MSW */ - - /* and depending on the compiler, hidden data structures are - declared differently: */ -#if defined( __GNUC__) || defined( __BORLANDC__ ) || defined( __MWERKS__ ) -#define EXTERN_STRUCT struct -#else -#define EXTERN_STRUCT extern struct -#endif - - -#if !defined(_SIZE_T) && !defined(_SIZE_T_) -#include /* just for size_t -- how lame! */ -#endif - -#define MAXPDSTRING 1000 /* use this for anything you want */ -#define MAXPDARG 5 /* max number of args we can typecheck today */ - -/* signed and unsigned integer types the size of a pointer: */ -/* GG: long is the size of a pointer */ -typedef long t_int; - -typedef float t_float; /* a floating-point number at most the same size */ -typedef float t_floatarg; /* floating-point type for function calls */ - -typedef struct _symbol -{ - char *s_name; - struct _class **s_thing; - struct _symbol *s_next; -} t_symbol; - -EXTERN_STRUCT _array; -#define t_array struct _array /* g_canvas.h */ - -/* pointers to glist and array elements go through a "stub" which sticks -around after the glist or array is freed. The stub itself is deleted when -both the glist/array is gone and the refcount is zero, ensuring that no -gpointers are pointing here. */ - -#define GP_NONE 0 /* the stub points nowhere (has been cut off) */ -#define GP_GLIST 1 /* the stub points to a glist element */ -#define GP_ARRAY 2 /* ... or array */ - -typedef struct _gstub -{ - union - { - struct _glist *gs_glist; /* glist we're in */ - struct _array *gs_array; /* array we're in */ - } gs_un; - int gs_which; /* GP_GLIST/GP_ARRAY */ - int gs_refcount; /* number of gpointers pointing here */ -} t_gstub; - -typedef struct _gpointer /* pointer to a gobj in a glist */ -{ - union - { - struct _scalar *gp_scalar; /* scalar we're in (if glist) */ - union word *gp_w; /* raw data (if array) */ - } gp_un; - int gp_valid; /* number which must match gpointee */ - t_gstub *gp_stub; /* stub which points to glist/array */ -} t_gpointer; - -typedef union word -{ - t_float w_float; - t_symbol *w_symbol; - t_gpointer *w_gpointer; - t_array *w_array; - struct _glist *w_list; - int w_index; -} t_word; - -typedef enum -{ - A_NULL, - A_FLOAT, - A_SYMBOL, - A_POINTER, - A_SEMI, - A_COMMA, - A_DEFFLOAT, - A_DEFSYM, - A_DOLLAR, - A_DOLLSYM, - A_GIMME, - A_CANT -} t_atomtype; - -#define A_DEFSYMBOL A_DEFSYM /* better name for this */ - -typedef struct _atom -{ - t_atomtype a_type; - union word a_w; -} t_atom; - -EXTERN_STRUCT _class; -#define t_class struct _class - -EXTERN_STRUCT _outlet; -#define t_outlet struct _outlet - -EXTERN_STRUCT _inlet; -#define t_inlet struct _inlet - -EXTERN_STRUCT _binbuf; -#define t_binbuf struct _binbuf - -EXTERN_STRUCT _clock; -#define t_clock struct _clock - -EXTERN_STRUCT _outconnect; -#define t_outconnect struct _outconnect - -EXTERN_STRUCT _glist; -#define t_glist struct _glist -#define t_canvas struct _glist /* LATER lose this */ - -typedef t_class *t_pd; /* pure datum: nothing but a class pointer */ - -typedef struct _gobj /* a graphical object */ -{ - t_pd g_pd; /* pure datum header (class) */ - struct _gobj *g_next; /* next in list */ -} t_gobj; - -typedef struct _scalar /* a graphical object holding data */ -{ - t_gobj sc_gobj; /* header for graphical object */ - t_symbol *sc_template; /* template name (LATER replace with pointer) */ - t_word sc_vec[1]; /* indeterminate-length array of words */ -} t_scalar; - -typedef struct _text /* patchable object - graphical, with text */ -{ - t_gobj te_g; /* header for graphical object */ - t_binbuf *te_binbuf; /* holder for the text */ - t_outlet *te_outlet; /* linked list of outlets */ - t_inlet *te_inlet; /* linked list of inlets */ - short te_xpix; /* x&y location (within the toplevel) */ - short te_ypix; - short te_width; /* requested width in chars, 0 if auto */ - unsigned int te_type:2; /* from defs below */ -} t_text; - -#define T_TEXT 0 /* just a textual comment */ -#define T_OBJECT 1 /* a MAX style patchable object */ -#define T_MESSAGE 2 /* a MAX stype message */ -#define T_ATOM 3 /* a cell to display a number or symbol */ - -#define te_pd te_g.g_pd - - /* t_object is synonym for t_text (LATER unify them) */ - -typedef struct _text t_object; - -#define ob_outlet te_outlet -#define ob_inlet te_inlet -#define ob_binbuf te_binbuf -#define ob_pd te_g.g_pd -#define ob_g te_g - -typedef void (*t_method)(void); -typedef void *(*t_newmethod)( void); -typedef void (*t_gotfn)(void *x, ...); - -/* ---------------- pre-defined objects and symbols --------------*/ -EXTERN t_pd pd_objectmaker; /* factory for creating "object" boxes */ -EXTERN t_pd pd_canvasmaker; /* factory for creating canvases */ -EXTERN t_symbol s_pointer; -EXTERN t_symbol s_float; -EXTERN t_symbol s_symbol; -EXTERN t_symbol s_bang; -EXTERN t_symbol s_list; -EXTERN t_symbol s_anything; -EXTERN t_symbol s_signal; -EXTERN t_symbol s__N; -EXTERN t_symbol s__X; -EXTERN t_symbol s_x; -EXTERN t_symbol s_y; -EXTERN t_symbol s_; - -/* --------- prototypes from the central message system ----------- */ -EXTERN void pd_typedmess(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_forwardmess(t_pd *x, int argc, t_atom *argv); -EXTERN t_symbol *gensym(char *s); -EXTERN t_gotfn getfn(t_pd *x, t_symbol *s); -EXTERN t_gotfn zgetfn(t_pd *x, t_symbol *s); -EXTERN void nullfn(void); -EXTERN void pd_vmess(t_pd *x, t_symbol *s, char *fmt, ...); -#define mess0(x, s) ((*getfn((x), (s)))((x))) -#define mess1(x, s, a) ((*getfn((x), (s)))((x), (a))) -#define mess2(x, s, a,b) ((*getfn((x), (s)))((x), (a),(b))) -#define mess3(x, s, a,b,c) ((*getfn((x), (s)))((x), (a),(b),(c))) -#define mess4(x, s, a,b,c,d) ((*getfn((x), (s)))((x), (a),(b),(c),(d))) -#define mess5(x, s, a,b,c,d,e) ((*getfn((x), (s)))((x), (a),(b),(c),(d),(e))) -EXTERN void obj_list(t_object *x, t_symbol *s, int argc, t_atom *argv); -EXTERN t_pd *pd_newest(void); - -/* --------------- memory management -------------------- */ -EXTERN void *getbytes(size_t nbytes); -EXTERN void *getzbytes(size_t nbytes); -EXTERN void *copybytes(void *src, size_t nbytes); -EXTERN void freebytes(void *x, size_t nbytes); -EXTERN void *resizebytes(void *x, size_t oldsize, size_t newsize); - -/* -------------------- atoms ----------------------------- */ - -#define SETSEMI(atom) ((atom)->a_type = A_SEMI, (atom)->a_w.w_index = 0) -#define SETCOMMA(atom) ((atom)->a_type = A_COMMA, (atom)->a_w.w_index = 0) -#define SETPOINTER(atom, gp) ((atom)->a_type = A_POINTER, \ - (atom)->a_w.w_gpointer = (gp)) -#define SETFLOAT(atom, f) ((atom)->a_type = A_FLOAT, (atom)->a_w.w_float = (f)) -#define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \ - (atom)->a_w.w_symbol = (s)) -#define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \ - (atom)->a_w.w_index = (n)) -#define SETDOLLSYM(atom, s) ((atom)->a_type = A_DOLLSYM, \ - (atom)->a_w.w_symbol= (s)) - -EXTERN t_float atom_getfloat(t_atom *a); -EXTERN t_int atom_getint(t_atom *a); -EXTERN t_symbol *atom_getsymbol(t_atom *a); -EXTERN t_symbol *atom_gensym(t_atom *a); -EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv); -EXTERN t_int atom_getintarg(int which, int argc, t_atom *argv); -EXTERN t_symbol *atom_getsymbolarg(int which, int argc, t_atom *argv); - -EXTERN void atom_string(t_atom *a, char *buf, unsigned int bufsize); - -/* ------------------ binbufs --------------- */ - -EXTERN t_binbuf *binbuf_new(void); -EXTERN void binbuf_free(t_binbuf *x); -EXTERN t_binbuf *binbuf_duplicate(t_binbuf *y); - -EXTERN void binbuf_text(t_binbuf *x, char *text, size_t size); -EXTERN void binbuf_gettext(t_binbuf *x, char **bufp, int *lengthp); -EXTERN void binbuf_clear(t_binbuf *x); -EXTERN void binbuf_add(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_addv(t_binbuf *x, char *fmt, ...); -EXTERN void binbuf_addbinbuf(t_binbuf *x, t_binbuf *y); -EXTERN void binbuf_addsemi(t_binbuf *x); -EXTERN void binbuf_restore(t_binbuf *x, int argc, t_atom *argv); -EXTERN void binbuf_print(t_binbuf *x); -EXTERN int binbuf_getnatom(t_binbuf *x); -EXTERN t_atom *binbuf_getvec(t_binbuf *x); -EXTERN void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv); -EXTERN int binbuf_read(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, - int crflag); -EXTERN int binbuf_write(t_binbuf *x, char *filename, char *dir, - int crflag); -EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir); -EXTERN t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, - int tonew); - -/* ------------------ clocks --------------- */ - -EXTERN t_clock *clock_new(void *owner, t_method fn); -EXTERN void clock_set(t_clock *x, double systime); -EXTERN void clock_delay(t_clock *x, double delaytime); -EXTERN void clock_unset(t_clock *x); -EXTERN double clock_getlogicaltime(void); -EXTERN double clock_getsystime(void); /* OBSOLETE; use clock_getlogicaltime() */ -EXTERN double clock_gettimesince(double prevsystime); -EXTERN double clock_getsystimeafter(double delaytime); -EXTERN void clock_free(t_clock *x); - -/* ----------------- pure data ---------------- */ -EXTERN t_pd *pd_new(t_class *cls); -EXTERN void pd_free(t_pd *x); -EXTERN void pd_bind(t_pd *x, t_symbol *s); -EXTERN void pd_unbind(t_pd *x, t_symbol *s); -EXTERN t_pd *pd_findbyclass(t_symbol *s, t_class *c); -EXTERN void pd_pushsym(t_pd *x); -EXTERN void pd_popsym(t_pd *x); -EXTERN t_symbol *pd_getfilename(void); -EXTERN t_symbol *pd_getdirname(void); -EXTERN void pd_bang(t_pd *x); -EXTERN void pd_pointer(t_pd *x, t_gpointer *gp); -EXTERN void pd_float(t_pd *x, t_float f); -EXTERN void pd_symbol(t_pd *x, t_symbol *s); -EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv); -#define pd_class(x) (*(x)) - -/* ----------------- pointers ---------------- */ -EXTERN void gpointer_init(t_gpointer *gp); -EXTERN void gpointer_copy(const t_gpointer *gpfrom, t_gpointer *gpto); -EXTERN void gpointer_unset(t_gpointer *gp); -EXTERN int gpointer_check(const t_gpointer *gp, int headok); - -/* ----------------- patchable "objects" -------------- */ -EXTERN t_inlet *inlet_new(t_object *owner, t_pd *dest, t_symbol *s1, - t_symbol *s2); -EXTERN t_inlet *pointerinlet_new(t_object *owner, t_gpointer *gp); -EXTERN t_inlet *floatinlet_new(t_object *owner, t_float *fp); -EXTERN t_inlet *symbolinlet_new(t_object *owner, t_symbol **sp); -EXTERN void inlet_free(t_inlet *x); - -EXTERN t_outlet *outlet_new(t_object *owner, t_symbol *s); -EXTERN void outlet_bang(t_outlet *x); -EXTERN void outlet_pointer(t_outlet *x, t_gpointer *gp); -EXTERN void outlet_float(t_outlet *x, t_float f); -EXTERN void outlet_symbol(t_outlet *x, t_symbol *s); -EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv); -EXTERN t_symbol *outlet_getsymbol(t_outlet *x); -EXTERN void outlet_free(t_outlet *x); -EXTERN t_object *pd_checkobject(t_pd *x); - - -/* -------------------- canvases -------------- */ - -EXTERN void glob_setfilename(void *dummy, t_symbol *name, t_symbol *dir); - -EXTERN void canvas_setargs(int argc, t_atom *argv); -EXTERN void canvas_getargs(int *argcp, t_atom **argvp); -EXTERN t_symbol *canvas_getcurrentdir(void); -EXTERN t_glist *canvas_getcurrent(void); -EXTERN void canvas_makefilename(t_glist *c, char *file, - char *result,int resultsize); -EXTERN t_symbol *canvas_getdir(t_glist *x); -EXTERN int sys_fontwidth(int fontsize); -EXTERN int sys_fontheight(int fontsize); -EXTERN void canvas_dataproperties(t_glist *x, t_scalar *sc, t_binbuf *b); - -/* ---------------- widget behaviors ---------------------- */ - -EXTERN_STRUCT _widgetbehavior; -#define t_widgetbehavior struct _widgetbehavior - -EXTERN_STRUCT _parentwidgetbehavior; -#define t_parentwidgetbehavior struct _parentwidgetbehavior -EXTERN t_parentwidgetbehavior *pd_getparentwidget(t_pd *x); - -/* -------------------- classes -------------- */ - -#define CLASS_DEFAULT 0 /* flags for new classes below */ -#define CLASS_PD 1 -#define CLASS_GOBJ 2 -#define CLASS_PATCHABLE 3 -#define CLASS_NOINLET 8 - -#define CLASS_TYPEMASK 3 - - -EXTERN t_class *class_new(t_symbol *name, t_newmethod newmethod, - t_method freemethod, size_t size, int flags, t_atomtype arg1, ...); -EXTERN void class_addcreator(t_newmethod newmethod, t_symbol *s, - t_atomtype type1, ...); -EXTERN void class_addmethod(t_class *c, t_method fn, t_symbol *sel, - t_atomtype arg1, ...); -EXTERN void class_addbang(t_class *c, t_method fn); -EXTERN void class_addpointer(t_class *c, t_method fn); -EXTERN void class_doaddfloat(t_class *c, t_method fn); -EXTERN void class_addsymbol(t_class *c, t_method fn); -EXTERN void class_addlist(t_class *c, t_method fn); -EXTERN void class_addanything(t_class *c, t_method fn); -EXTERN void class_sethelpsymbol(t_class *c, t_symbol *s); -EXTERN void class_setwidget(t_class *c, t_widgetbehavior *w); -EXTERN void class_setparentwidget(t_class *c, t_parentwidgetbehavior *w); -EXTERN t_parentwidgetbehavior *class_parentwidget(t_class *c); -EXTERN char *class_getname(t_class *c); -EXTERN char *class_gethelpname(t_class *c); -EXTERN void class_setdrawcommand(t_class *c); -EXTERN int class_isdrawcommand(t_class *c); -EXTERN void class_domainsignalin(t_class *c, int onset); -#define CLASS_MAINSIGNALIN(c, type, field) \ - class_domainsignalin(c, (char *)(&((type *)0)->field) - (char *)0) - - /* prototype for functions to save Pd's to a binbuf */ -typedef void (*t_savefn)(t_gobj *x, t_binbuf *b); -EXTERN void class_setsavefn(t_class *c, t_savefn f); -EXTERN t_savefn class_getsavefn(t_class *c); - /* prototype for functions to open properties dialogs */ -typedef void (*t_propertiesfn)(t_gobj *x, struct _glist *glist); -EXTERN void class_setpropertiesfn(t_class *c, t_propertiesfn f); -EXTERN t_propertiesfn class_getpropertiesfn(t_class *c); - -#ifndef PD_CLASS_DEF -#define class_addbang(x, y) class_addbang((x), (t_method)(y)) -#define class_addpointer(x, y) class_addpointer((x), (t_method)(y)) -#define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y)) -#define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y)) -#define class_addlist(x, y) class_addlist((x), (t_method)(y)) -#define class_addanything(x, y) class_addanything((x), (t_method)(y)) -#endif - -/* ------------ printing --------------------------------- */ -EXTERN void post(const char *fmt, ...); -EXTERN void startpost(const char *fmt, ...); -EXTERN void poststring(const char *s); -EXTERN void postfloat(float f); -EXTERN void postatom(int argc, t_atom *argv); -EXTERN void endpost(void); -EXTERN void error(const char *fmt, ...); -EXTERN void bug(const char *fmt, ...); -EXTERN void pd_error(void *object, const char *fmt, ...); -EXTERN void sys_logerror(const char *object, const char *s); -EXTERN void sys_unixerror(const char *object); -EXTERN void sys_ouch(void); - - -/* ------------ system interface routines ------------------- */ -EXTERN int sys_isreadablefile(const char *name); -EXTERN void sys_bashfilename(const char *from, char *to); -EXTERN void sys_unbashfilename(const char *from, char *to); -EXTERN int open_via_path(const char *name, const char *ext, const char *dir, - char *dirresult, char **nameresult, unsigned int size, int bin); -EXTERN int sched_geteventno(void); -EXTERN double sys_getrealtime(void); -EXTERN int (*sys_idlehook)(void); /* hook to add idle time computation */ - - -/* ------------ threading ------------------- */ -/* T.Grill - see m_sched.c */ - -EXTERN void sys_lock(void); -EXTERN void sys_unlock(void); -EXTERN int sys_trylock(void); - - -/* --------------- signals ----------------------------------- */ - -typedef float t_sample; -#define MAXLOGSIG 32 -#define MAXSIGSIZE (1 << MAXLOGSIG) - -typedef struct _signal -{ - int s_n; /* number of points in the array */ - t_sample *s_vec; /* the array */ - float s_sr; /* sample rate */ - int s_refcount; /* number of times used */ - int s_isborrowed; /* whether we're going to borrow our array */ - struct _signal *s_borrowedfrom; /* signal to borrow it from */ - struct _signal *s_nextfree; /* next in freelist */ - struct _signal *s_nextused; /* next in used list */ -} t_signal; - - -typedef t_int *(*t_perfroutine)(t_int *args); - -EXTERN t_int *plus_perform(t_int *args); -EXTERN t_int *zero_perform(t_int *args); -EXTERN t_int *copy_perform(t_int *args); - -EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n); -EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_scalarcopy(t_sample *in, t_sample *out, int n); -EXTERN void dsp_add_zero(t_sample *out, int n); - -EXTERN int sys_getblksize(void); -EXTERN float sys_getsr(void); -EXTERN int sys_get_inchannels(void); -EXTERN int sys_get_outchannels(void); - -EXTERN void dsp_add(t_perfroutine f, int n, ...); -EXTERN void dsp_addv(t_perfroutine f, int n, t_int *vec); -EXTERN void pd_fft(float *buf, int npoints, int inverse); -EXTERN int ilog2(int n); - -EXTERN void mayer_fht(float *fz, int n); -EXTERN void mayer_fft(int n, float *real, float *imag); -EXTERN void mayer_ifft(int n, float *real, float *imag); -EXTERN void mayer_realfft(int n, float *real); -EXTERN void mayer_realifft(int n, float *real); - -EXTERN float *cos_table; -#define LOGCOSTABSIZE 9 -#define COSTABSIZE (1<