aboutsummaryrefslogtreecommitdiff
path: root/examples/limiter~.pd
blob: 3749f18436a8d466aab9c3586f4f08537b551202 (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
#N canvas 283 98 625 388 8;
#X text 189 15 limiter;
#X text 187 25 ========;
#N canvas 0 0 591 391 creation 0;
#X text 211 152 creates a default limiter (MONO \, 9-samples-buffer)
;
#X text 213 189 creates a limiter(MONO \, 10ms-buffer);
#X text 213 223 creates a limiter (multichannel \, 9-samples-buffer)
;
#X text 216 256 creates a limiter (multichannel \, 1ms-buffer !!);
#X text 82 17 "limiter [<bufsize>] [<in1> [<in2> [...]]]";
#X text 148 70 creating inlets depends ONLY on the number of arguments
\, not on the arguments themselves... !;
#X text 218 313 creates a limiter (multichannel \, 9-samples-buffer)
;
#X text 113 187 ______________;
#X text 89 150 _________________;
#X text 145 220 _________;
#X text 114 254 ______________;
#X text 199 311 __;
#X obj 23 151 limiter~;
#X obj 23 185 limiter~ 10;
#X obj 22 219 limiter~ 0 1 2 3;
#X obj 22 253 limiter~ 1 2;
#X obj 18 310 limiter~ We need 4 inlets;
#X restore 39 202 page creation;
#N canvas 62 0 762 828 modes 0;
#X text -259 189 MODE 0 : 1-treshold-limiter;
#X text -261 384 MODE 1 : 2-tresholds-limiter;
#X msg 62 255 print;
#X obj 16 316 limiter~;
#X obj 39 141 limiter~;
#X msg 103 123 help;
#X msg 102 104 print;
#X msg 39 32 mode 0;
#X msg 102 31 LIMIT;
#X msg 39 50 mode 1;
#X msg 102 49 CRACK;
#X msg 39 67 mode 2;
#X msg 102 66 COMPRESS;
#X text 172 48 crack limiter (2 tresholds);
#X text 172 66 compressor (1 treshold);
#X text 181 102 context status;
#X text 82 30 ==;
#X text 81 49 ==;
#X text 80 68 ==;
#X msg 77 302 LIMIT;
#X obj 77 286 loadbang;
#X text 171 30 normal limiter (1 treshold) [default];
#X msg 61 459 print;
#X obj 13 522 limiter~;
#X obj 74 492 loadbang;
#X msg 74 508 CRACK;
#X msg 47 716 print;
#X obj 60 760 loadbang;
#X text -255 590 MODE 2 : compressor;
#X msg 60 776 COMPRESS;
#X msg 52 629 ratio 0.5;
#X text 159 628 set compress-ratio (0.5 == 1:2);
#X text 159 605 set the treshold \, where the compressor should start
to compress;
#X text 162 677 set the compressor (limit/treshold/ratio);
#X text 161 655 set limit/holdtime/releasetime at once;
#X text 163 717 view actual settings;
#X text 147 459 view actual settings;
#X msg 64 188 limit 90;
#X msg 64 211 set 105 40 150;
#X msg 62 404 set 105 40 150;
#X msg 65 426 set2 120 1 10;
#X msg 51 654 set 110 40 150;
#X msg 51 611 treshold 10;
#X msg 50 677 compress 96 88 0.5;
#X text 158 591 set the output-limit;
#X msg 51 593 limit 98;
#X text 148 254 view actual settings;
#X text 149 212 set limit/holdtime/releasetime at once;
#X text 149 185 set output limit;
#X obj -1 790 limiter~;
#X text 145 404 set limiter1 (output-limit/hold-time/release-time)
;
#X text -260 621 the output signal will never become louder than the
specified output-limit.;
#X text -260 643 if the input-signal becomes loader than the input-treshold
\, a compressor will start working \, compressing the dynamic range
by the specified ratio. Signals lesser than the treshold will pass
through uncompressed.;
#X text -231 59 set the limiter~ to one of the 3 modes;
#X text 144 380 set both limits;
#X text -261 220 this is simple : the output will not become bigger
than the specified limit. When the input becomes small enough again
so that this condition is matched even without (positive) amplification
(this is \, when the input signal level falls below the limit) \, the
amplification will increase gradually (depending on hold- & release-time)
towards 1;
#X text 144 427 set limiter2 (input-treshold/hold-time/release-time)
;
#X msg 62 381 limits 100 108;
#X text -260 414 this limiter can be used to handle disgusting things
like cracks \, which are much louder than the "normal" musical signal.
Typically hold- and release-times for the second limiter are far smaller
than those for the first \, to ensure that the disturbance will pass
quite fast (since the crack would disturb the sensation anyhow \, we
do not care much about the distortion caused by a fast limiter). The
treshold for the 2nd limiter must be greater than the ouput-limit (if
not \, the limiter will be reset to MODE 0);
#X text -257 288 all levels (limts/tresholds) should be given in dB
to produce satisfying results (following pd's agreement on the deziBel-scale
\, 100dB are equal to 1 \, 0dB equals 0 \, ...);
#X text 184 123 context(!) help;
#X connect 2 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 4 0;
#X connect 7 0 4 0;
#X connect 8 0 4 0;
#X connect 9 0 4 0;
#X connect 10 0 4 0;
#X connect 11 0 4 0;
#X connect 12 0 4 0;
#X connect 19 0 3 0;
#X connect 20 0 19 0;
#X connect 22 0 23 0;
#X connect 24 0 25 0;
#X connect 25 0 23 0;
#X connect 26 0 49 0;
#X connect 27 0 29 0;
#X connect 29 0 49 0;
#X connect 30 0 49 0;
#X connect 37 0 3 0;
#X connect 38 0 3 0;
#X connect 39 0 23 0;
#X connect 40 0 23 0;
#X connect 41 0 49 0;
#X connect 42 0 49 0;
#X connect 43 0 49 0;
#X connect 45 0 49 0;
#X connect 57 0 23 0;
#X restore 184 201 page modes;
#X msg 338 192 print;
#X obj 385 316 dac~;
#X obj 385 259 *~;
#X obj 416 259 *~;
#X floatatom 401 112 0 0 0;
#X floatatom 482 110 0 0 0;
#X floatatom 440 111 0 0 0;
#X text 437 98 both;
#X text 396 98 left;
#X text 478 98 right;
#X obj 416 206 limiter~ 50 1;
#N canvas 0 153 455 493 tabwrite 0;
#X graph graph1 0 -1 32767 1 130 336 330 196;
#X array array1 32768 float 0;
#X pop;
#X obj 111 63 inlet~;
#X msg 214 78 \; array1 resize 32768;
#X obj 111 85 tabwrite~ array1;
#X obj 151 64 bang~;
#X obj 214 59 loadbang;
#X obj 337 88 block~ 32768 8;
#X connect 1 0 3 0;
#X connect 4 0 3 0;
#X connect 5 0 2 0;
#X restore 443 318 pd tabwrite;
#X obj 416 317 env~;
#X floatatom 416 335 4 0 0;
#X text 30 184 to learn more about this object \, try these;
#X text 48 301 http://iem.kug.ac.at/~zmoelnig;
#N canvas 59 76 600 400 generator~ 0;
#X obj 86 49 inlet;
#X obj 252 54 inlet;
#X obj 112 229 outlet~;
#X obj 112 185 *~;
#X obj 151 185 *~;
#X obj 122 128 osc~ 440;
#X obj 151 145 osc~ 689.062;
#X obj 112 163 line~;
#X obj 167 162 line~;
#X msg 167 128 \$1 100;
#X msg 112 111 \$1 100;
#X obj 86 97 f;
#X obj 252 98 f;
#X obj 154 229 outlet~;
#X obj 86 72 dbtorms;
#X obj 252 78 dbtorms;
#X connect 0 0 14 0;
#X connect 1 0 15 0;
#X connect 3 0 2 0;
#X connect 4 0 13 0;
#X connect 5 0 3 1;
#X connect 6 0 4 0;
#X connect 7 0 3 0;
#X connect 8 0 4 1;
#X connect 9 0 8 0;
#X connect 10 0 7 0;
#X connect 11 0 10 0;
#X connect 12 0 9 0;
#X connect 14 0 11 0;
#X connect 15 0 12 0;
#X restore 416 161 pd generator~;
#X obj 426 240 nop~;
#X obj 385 240 nop~;
#X text 37 91 it is quite important to delay the original signals before
the limiter-amplification is applied to prevent clicks !!!;
#X text 52 283 1906:forum::für::umläute:2001;
#X text 36 41 limiter will output the amplification-factor that has
to be applied on all INlet~s to get a beautiful limited multichannel-signal
that preserves the balance between the channels;
#X text 401 72 level of the inlets;
#X text 389 83 (give some 190dB and notice no clipping);
#X connect 4 0 14 0;
#X connect 6 0 5 0;
#X connect 7 0 5 1;
#X connect 7 0 16 0;
#X connect 7 0 15 0;
#X connect 8 0 20 0;
#X connect 9 0 20 1;
#X connect 10 0 20 0;
#X connect 10 0 20 1;
#X connect 14 0 7 0;
#X connect 14 0 6 1;
#X connect 16 0 17 0;
#X connect 20 0 14 0;
#X connect 20 0 22 0;
#X connect 20 1 14 1;
#X connect 20 1 21 0;
#X connect 21 0 7 1;
#X connect 22 0 6 0;