From da1f0065d07250b86b9a761b012987e4825f491f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 28 Nov 2005 16:53:25 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r4068, which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/smlib/; revision=4069 --- source/SMLib.c | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 source/SMLib.c (limited to 'source/SMLib.c') diff --git a/source/SMLib.c b/source/SMLib.c new file mode 100644 index 0000000..1771395 --- /dev/null +++ b/source/SMLib.c @@ -0,0 +1,230 @@ +/* --------------------- SMLib ----------------------------- */ +/* + + Signal processing for Mapping + objects: + + float stream + - pid controller? + - deltas (generate difference vector between current values and values of the past) + vector + - vquant (quantizer with hysteresis) + - vv/ + - vv> + - vv< + - s2v (stream to vector, incl ola) + - v2s (vector to stream, incl ola) + + vector math + - vreverse + + - delread + - delwrite + - upsample + - fir + - autorescale +*/ + +#include "defines.h" + + +// in alphabetical order +extern void bp_setup(); +extern void decimator_setup(); +extern void deltas_setup(); +extern void hip_setup(); +extern void hist_setup(); +extern void itov_setup(); +extern void lavg_setup(); +extern void lhist_setup(); +extern void lhisti_setup(); +extern void linspace_setup(); +extern void lmax_setup(); +extern void lmin_setup(); +extern void lrange_setup(); +extern void lstd_setup(); +extern void prevl_setup(); +extern void threshold_setup(); +extern void vabs_setup(); +extern void vclip_setup(); +extern void vcog_setup(); +extern void vdbtorms_setup(); +extern void vdelta_setup(); +extern void vfmod_setup(); +extern void vftom_setup(); +extern void vlavg_setup(); +extern void vlmax_setup(); +extern void vlmin_setup(); +extern void vlrange_setup(); +extern void vmax_setup(); +extern void vmin_setup(); +extern void vmtof_setup(); +extern void vpow_setup(); +extern void vrms_setup(); +extern void vrmstodb_setup(); +extern void vstd_setup(); +extern void vsum_setup(); +extern void vthreshold_setup(); +extern void vvconv_setup(); +extern void vvminus_setup(); +extern void vvplus_setup(); + +static t_class *SMLib_class; + +typedef struct _lstd +{ + t_object x_obj; +} t_SMLib; + +static void SMLib_help(t_SMLib *x) +{ + /* + */ + post(""); + post(""); + post(" .........................................................."); + post(" . SMLib ."); + post(" . Signal processing for Mapping ."); + post(" . v0.12 24/11/2002 ."); + post(" .........................................................."); + post(" . processing stream of floats (context) (float output) ."); + post(" . ."); + post(" . lavg leaky average ."); + post(" . lmax leaky maximum ."); + post(" . lmin leaky minimum ."); + post(" . lrange leaky range ."); + post(" u lstd leaky standard deviation ."); + post(" u decimator passes 1 in n input values ."); + post(" . threshold detection with hysteresis ."); + post(" . hip first order high-pass filter ."); + post(" . bp second order (resonant) high-pass filter ."); + post(" .........................................................."); + post(" . analyzing stream of floats (vector output) ."); + post(" . ."); + post(" . hist histogram ."); + post(" . lhist leaky histogram, clips samples ."); + post(" . lhisti leaky histogram, ignore samples ."); + post(" . outside bins ."); + post(" . itov bin index to value (for the histograms ."); + post(" . prevl previous floats in a list ."); + post(" . deltas difference between last float and ."); + post(" . previous floats ."); +// post(" o filterbank lineairly spaced set of bandpass filters ."); + post(" .........................................................."); + post(" . immediate vector analysis (float output) ."); + post(" . ."); + post(" . vsum sum of vector elements ."); + post(" . vcog center of gravity ."); + post(" . vmax maximum and its location ."); + post(" . vmin minimum and its location ."); + post(" . vrms root mean square ."); + post(" . vstd standard deviation ."); + post(" .........................................................."); + post(" . vector processors (vector output) ."); + post(" . ."); + post(" . vv+ vector addition ."); + post(" . vv- vector substraction ."); + post(" . vvconv vector convolution ."); + post(" . vclip clip elements ."); + post(" . vfmod floating point modulo ."); + post(" . vpow power ."); + post(" . vthreshold detections with hysteresises ."); + post(" . ."); + post(" . unit conversions on vectors ."); + post(" . ."); + post(" . vftom frequency to midi ."); + post(" . vmtof midi to frequency ."); + post(" . vdbtorms dB to rms ."); + post(" . vrmstodb rms to dB ."); + post(" .........................................................."); + post(" . vector synthesis (vector output) ."); + post(" . ."); + post(" . linspace linearly spaced vector ."); +// post(" o logspace logarithmically spaced vector ."); +// post(" o rand uniformly distributed random vector ."); +// post(" o randn normally distributed random vector ."); + post(" .........................................................."); + post(" . vector stream processing (vector output) (context) ."); + post(" . ."); + post(" . vlavg leaky averages ."); + post(" . vlmax leaky maxima ."); + post(" . vlmin leaky minima ."); + post(" . vlrange leaky ranges ."); + post(" . vdelta difference between successive vectors ."); + post(" .........................................................."); +// post(" . o = future additions ."); +// post(" . e = experimental ."); + post(" . u = undocumented ."); + post(" . j#|@ = johannes.taelman@rug.ac.be ."); + post(" .........................................................."); + post(""); + post(""); +} + +static void *SMLib_new() +{ + t_SMLib *x=(t_SMLib *)pd_new(SMLib_class); + return (void *)x; +} + +__declspec(dllexport) void __cdecl SMLib_setup( void) +{ + // dummy object for help-system + SMLib_class = class_new(gensym("SMLib"), + (t_newmethod)SMLib_new, 0, + sizeof(t_SMLib), + CLASS_DEFAULT, + 0); + class_addbang(SMLib_class, (t_method)SMLib_help); + class_addmethod(SMLib_class, (t_method)SMLib_help, gensym("help"),0); + + // real objects in alphabetical order + bp_setup(); + decimator_setup(); + deltas_setup(); + hip_setup(); + hist_setup(); + itov_setup(); + lavg_setup(); + lhist_setup(); + lhisti_setup(); + linspace_setup(); + lmax_setup(); + lmin_setup(); + lrange_setup(); + lstd_setup(); + prevl_setup(); + threshold_setup(); + vabs_setup(); + vclip_setup(); + vcog_setup(); + vdbtorms_setup(); + vdelta_setup(); + vfmod_setup(); + vftom_setup(); + vlavg_setup(); + vlmax_setup(); + vlmin_setup(); + vlrange_setup(); + vmax_setup(); + vmin_setup(); + vmtof_setup(); + vpow_setup(); + vrms_setup(); + vrmstodb_setup(); + vstd_setup(); + vsum_setup(); + vthreshold_setup(); + vvconv_setup(); + vvminus_setup(); + vvplus_setup(); + + post(""); + post(" .........................................................."); + post(" . SMLib ."); + post(" . Signal processing for Mapping ."); + post(" . v0.12 24/11/2002 ."); + post(" .........................................................."); + post(""); + +} -- cgit v1.2.1