From d2eec74a4d8c21aad495ba61539486b24d7ab8dc Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Wed, 9 Oct 2002 10:19:04 +0000 Subject: moved from zexy/zexy to zexy svn path=/trunk/externals/zexy/; revision=169 --- src/zexy.c | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 src/zexy.c (limited to 'src/zexy.c') diff --git a/src/zexy.c b/src/zexy.c new file mode 100644 index 0000000..dd818f6 --- /dev/null +++ b/src/zexy.c @@ -0,0 +1,286 @@ +/* ...this is a very ZEXY external ... + so have fun + + 1999:forum::für::umläute:2001 +*/ + +#include "zexy.h" + +/* do a little help thing */ + +typedef struct zexy +{ + t_object t_ob; +} t_zexy; + +t_class *zexy_class; + +static void zexy_help(void) +{ + post("\n\n...this is the zexy %c external "VERSION"...\n", HEARTSYMBOL); + post("\n%c handling signals" +#if 0 + "\nstreamout~\t:: stream signals via a LAN : (%c) gige 1999" + "\nstreamin~\t:: catch signals from a LAN : based on gige" +#endif + "\nsfplay\t\t:: play back a (multichannel) soundfile : (%c) ritsch 1999" + "\nsfrecord\t:: record a (multichannel) soundfile : based on ritsch" + "\n%c generating signals" + "\nnoish~\t\t:: generate bandlimited noise" + "\nnoisi~\t\t:: generate bandlimited noise" + "\ndirac~\t\t:: generate a dirac-pulse" + "\nstep~\t\t:: generate a unity-step" + "\ndfreq~\t\t:: detect frequency by counting zero-crossings : (%c) ritsch 1998" + "\n%c manipulating signals" + "\nlimiter~\t:: limit/compress one or more signals" + "\nnop~\t\t:: pass through a signal (delay 1 block)" + "\nz~\t\t:: samplewise delay" + "\nswap~\t\t:: byte-swap a signal" + "\nquantize~\t:: quantize a signal" + + "\n%c binary operations on signals" + "\nabs~, sgn~, >~, <~, ==~, &&~, ||~" + + "\n%c multary operations on signals" + + "\nmatrix~\t\t:: handle matrices" + "\nmultiline~\t:: multiple line~ multiplication" + "\nmultiplex~\t:: multiplex 1 inlet~ to 1-of-various outlet~s" + "\ndemultiplex~\t:: demultiplex 1-of-various inlet~s to 1 outlet~" + + "\n%c investigating signals in message-domain" + "\npack~\t\t:: convert a signal into a list of floats" + "\nunpack~\t\t:: convert packages of floats into a signal" + + "\nsigzero~\t:: indicates whether a signal is zero throughout the block" + "\navg~\t\t:: outputs average of a signal as float" + "\ntavg~\t\t:: outputs average of a signal between two bangs" + "\nenvrms~\t\t:: an env~-object that ouputs rms instead of db" + "\npdf~\t\t:: power density function" + + "\n%c basic message objects" + "\nnop\t\t:: a no-operation" + "\nlister\t\t:: stores lists" + "\nany2list\t\t:: converts \"anything\" to lists" + "\nlist2int\t:: cast each float of a list to integer" + "\natoi\t\t:: convert ascii to integer" + "\nlist2symbol\t:: convert a list into a single symbol" + "\nstrcmp\t\t:: compare 2 lists as if they where strings" + "\nrepack\t\t:: (re)packs atoms to packages of a given size" + "\npackel\t\t:: element of a package" + "\nlength\t\t:: length of a package" + "\nniagara\t\t:: divide a package into 2 sub-packages" + "\nglue\t\t:: append a list to another" + "\nsegregate\t:: sort inputs by type" + "\nmatrix\t\t:: handle matrices" + "\n.\t\t:: scalar multiplication of vectors (lists of floats)" + "\nmean\t\t:: get the arithmetic mean of a vector" + "\nminmax\t\t:: get the minimum and the maximum of a vector" + + "\n%c advanced message objects" + + "\ntabread4\t:: 4-point interpolating table-read object" + "\ntabdump\t\t:: dump the table as a list" + "\ntabset\t\t:: set a table with a list" + "\nmavg\t\t:: a variable moving average filter" + "\nmakesymbol\t:: creates (formatted) symbols" + "\ndate\t\t:: get the current system date" + "\ntime\t\t:: get the current system time" + "\nindex\t\t:: convert symbols to indices" + "\ndrip\t\t:: converts a package to a sequence of atoms" + "\nsort\t\t:: shell-sort a package of floats" + "\ndemux\t\t:: demultiplex the input to a specified output" + "\nmsgfile\t\t:: store and handles lists of lists" +#ifdef linux + "\nlp\t\t:: write to the (parallel) port" +#endif +#if 0 + "\nexecute\t\t:: execute an application" +#endif + + "\n%c matrix message objects" + + "\nmatrix\t\t:: create/store/edit matrices" + + "\nmtx_element\t:: change elements of a matrix" + "\nmtx_row\t\t:: change rows of a matrix" + "\nmtx_col\t\t:: change columns of a matrix" + "\nmtx_eye\t\t:: create an identity matrix" + "\nmtx_egg\t\t:: create an identity matrix that is rotated by 90deg" + "\nmtx_zeros\t:: create a matrix whose elements are all 1" + "\nmtx_ones\t:: create a matrix whose elements are all 0" + "\nmtx_diag\t:: returns the diagonal of a matrix or create a diagonal matrix" + "\nmtx_dieggt:: like mtx_diag but rotated by 90deg" + "\nmtx_trace\t:: calculate the trace of a matrix" + "\nmtx_size\t:: returns the size of a matrix" + "\nmtx_resize\t:: resize a matrix (evt. with zero-padding)" + "\nmtx_transpose\t:: transpose a matrix" + "\nmtx_scroll\t:: shift the rows of a matrix" + "\nmtx_roll\t:: shift the columns of a matrix" + "\nmtx_pivot\t:: pivot-transform a matrix" + "\nmtx_add\t\t:: add matrices" + "\nmtx_mul\t\t:: multiply matrices" + "\nmtx_.*\t\t:: multiply matrices element by element" + "\nmtx_./\t\t:: divide matrices element by element" + "\nmtx_inverse\t:: calculate the inverse of a matrix" + "\nmtx_mean\t:: return the mean value of each column" + "\nmtx_rand\t:: fill a matrix with random values" + "\nmtx_check\t:: check the consistency of a matrix and correct if necessary" + "\nmtx_print\t:: print formatted matrix to the stdout (for debug)" + + "\n\n(l) forum::für::umläute except where indicated (%c)\n" + "this software is under the GnuGPL that is provided with these files", HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL, HEARTSYMBOL); +} + +void *zexy_new(void) +{ + t_zexy *x = (t_zexy *)pd_new(zexy_class); + return (void *)x; +} + +/* include some externals */ +#if 0 +void z_streamin_setup(); /* urps, i THINK this will be linux only */ +void z_streamout_setup(); +void z_stdinout_setup(); // not yet... +#endif // 0 +void z_sfplay_setup(); +void z_sfrecord_setup(); +void z_noise_setup(); +void z_testfun_setup(); +void z_nop_setup(); +void z_zdelay_setup(); +void z_limiter_setup(); +void z_swap_setup(); +void z_quantize_setup(); +void z_sigzero_setup(); +void z_tabread4_setup(); +void z_makefilenamen_setup(); +void z_makesymbol_setup(); + +void z_pdf_setup(); +void z_dfreq_setup(); +void z_sigaverage_setup(); +void z_sigpack_setup(); + +void z_datetime_setup(); + +void z_sigbin_setup(); + +#if 0 // used to be Win32 only, but i somehow lost the fine code +void z_execute_setup(); +#endif + +void z_lp_setup(); + +void z_index_setup(); +void z_connective_setup(); +void z_sort_setup(); +void z_multiplex_setup(); +void z_average_setup(); +void z_coordinates_setup(); +void z_stat_setup(); + +void z_pack_setup(); +void z_drip_setup(); + +void z_stdinout_setup(); +void z_msgfile_setup(); +void z_multiline_setup(); +void z_matrix_setup(); +void z_sigmatrix_setup(); + +void z_strings_setup(); + +void z_down_setup(); + +void z_prime_setup(); +void z_random_setup(); +/* + waiting to be released in near future: + make stdin~ and stdout~ work + MAKE streamin~ work !!! + sql + ... +*/ + + + +void zexy_setup(void) +{ + int i; +#if 0 +#ifdef linux + z_streamin_setup(); +#endif + z_streamout_setup(); + z_stdinout_setup(); +#endif + z_sfplay_setup(); + z_sfrecord_setup(); + z_noise_setup(); + z_testfun_setup(); + z_limiter_setup(); + z_nop_setup(); + z_zdelay_setup(); + z_swap_setup(); + z_quantize_setup(); + + z_sigzero_setup(); + z_pdf_setup(); + z_dfreq_setup(); + z_sigaverage_setup(); + z_sigbin_setup(); + + z_sigpack_setup(); + + z_tabread4_setup(); + z_average_setup(); + z_coordinates_setup(); + z_stat_setup(); + z_makesymbol_setup(); + + z_datetime_setup(); + + z_index_setup(); + z_connective_setup(); + z_sort_setup(); + z_multiplex_setup(); + z_pack_setup(); + z_drip_setup(); + + z_prime_setup(); + z_random_setup(); +#if 0 + z_stdinout_setup(); + + // we'll do this the next days + z_execute_setup(); +#endif + z_msgfile_setup(); + + z_multiline_setup(); + z_matrix_setup(); + z_sigmatrix_setup(); + + z_strings_setup(); +#ifdef linux + z_lp_setup(); +#endif + z_down_setup(); + + /* ************************************** */ + + startpost("\n\t"); + for (i=0; i<28; i++) startpost("%c", HEARTSYMBOL); + endpost(); + post("\t%c...the zexy external"VERSION"...%c", HEARTSYMBOL, HEARTSYMBOL); + post("\t%c forum::für::umläute 2000 %c", HEARTSYMBOL, HEARTSYMBOL); + post("\t%c send me a 'help' message %c", HEARTSYMBOL, HEARTSYMBOL); + startpost("\t"); + for (i=0; i<28; i++) startpost("%c", HEARTSYMBOL); + endpost(); endpost(); + + zexy_class = class_new(gensym("zexy"), zexy_new, 0, sizeof(t_zexy), 0, 0); + class_addmethod(zexy_class, zexy_help, gensym("help"), 0); +} -- cgit v1.2.1