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
|
-----------------------------------------
- SMLib : Signal processing for Mapping -
-----------------------------------------
v0.12 date 20021125
1. Introduction
---------------
SMLib is an external objects library for PD (pure data). It complements PD
with a set of objects for vector processing, vector analysis, vector
synthesis, number stream analysis, number stream filters.
I was missing objects that could do dsp-like operations on control signals.
PD is event-driven by nature (except the dsp-objects and [delay], [metro],
...). A slider that does not change does not transmit anything. Event-driven
events can be sampled by eg. using a [float] with a [metro] on its main input,
and a slider on its right inlet. SMLib has objects designed to process such
streams. Eg. [lavg] is a leaky integrator, it smoothes abrupt changes. Leaky
processes are interesting in mapping because our attention is also leaky.
Eg. [hp] is a high-pass filter (just like [hp~]), and it only passes changes,
and decays to zero when there are no changes. Likewise our attention shifts
towards remarkable changes in our environment. You can detect 'events' in
float streams with [threshold]. A vector is a list of floats.
These objects are suitable for gesture and high-level music analysis
prototyping.
This library is written by Johannes Taelman (johannes.taelman@rug.ac.be). The
code is free+open (GNU GPL license). I have only tested/compiled the code on
win32, but porting to linux or macOs should be easy.
2. List of objects
------------------
processing stream of floats (context) (float output)
lavg leaky average
lmax leaky maximum
lmin leaky minimum
lrange leaky range
lstd leaky standard deviation
decimator passes 1 in n input values
threshold detection with hysteresis
hip first order high-pass filter
bp second order (resonant) high-pass filter
analyzing stream of floats (vector output)
hist histogram
lhist leaky histogram, clips samples
lhisti leaky histogram, ignore samples
outside bins
itov bin index to value (for the histograms
prevl previous floats in a list
deltas difference between last float and
previous floats
immediate vector analysis (float output)
vsum sum of vector elements
vcog center of gravity
vmax maximum and its location
vmin minimum and its location
vrms root mean square
vstd standard deviation
vector processors (vector output)
vv+ vector addition
vv- vector substraction
vvconv vector convolution
vclip clip elements
vfmod floating point modulo
vpow power
vthreshold detections with hysteresises
unit conversions on vectors
vftom frequency to midi
vmtof midi to frequency
vdbtorms dB to rms
vrmstodb rms to dB
vector synthesis (vector output)
linspace linearly spaced vector
vector stream processing (vector output) (context)
vlavg leaky averages
vlmax leaky maxima
vlmin leaky minima
vlrange leaky ranges
vdelta difference between successive vectors
3. Installation
---------------
Requires PD on the win32 platform (for now). Put SMLib.dll in a directory in
your PD path. Put the help patches in pd\doc\5.reference.
Start PD with "-lib SMLib"
4. Getting started
------------------
Start PD.
Create a new patch.
Create an object [SMLib]
Right-click on this object after creation. Choose help.
This gives you the main SMLib patch with all objects and a brief explanation
of them. Choose help for the objects to get details. Have a look at the
example patches for design ideas.
5. References
-------------
PD headquarters:
http://crca.ucsd.edu/~msp/software.html
http://iem.kug.ac.at/pd/
http://www.puredata.info
|