aboutsummaryrefslogtreecommitdiff
path: root/SMLib.c
blob: baf4c8a05f174e79270f366fcad3450815f08052 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
/* --------------------- 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;
}

#ifdef WIN32
__declspec(dllexport) void __cdecl SMLib_setup( void)
#else
void SMLib_setup( void)
#endif
{
	// 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("");

}