aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/21.more.pulses.pd
blob: 1aa975558cf8f8cc82ca229db62e474bab282d76 (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
#N canvas 15 126 902 581 12;
#X obj 220 171 line~;
#X msg 350 15 \; pd dsp 1;
#X msg 434 16 \; pd dsp 0;
#X text 371 46 ON;
#X text 451 47 OFF;
#X floatatom 68 303 0 0 0;
#N canvas 159 26 495 266 output 0;
#X obj 338 160 t b;
#X obj 338 110 f;
#X obj 338 60 inlet;
#X text 344 29 mute;
#X obj 338 185 f;
#X msg 425 178 0;
#X msg 338 85 bang;
#X obj 338 135 moses 1;
#X obj 425 153 t b f;
#X obj 397 117 moses 1;
#X obj 83 148 dbtorms;
#X obj 397 92 r master-lvl;
#X obj 83 42 r master-lvl;
#X obj 338 210 s master-lvl;
#X obj 22 181 inlet~;
#X obj 199 41 inlet;
#X text 199 18 level;
#X obj 199 100 s master-lvl;
#X msg 96 65 set \$1;
#X obj 96 89 outlet;
#X msg 214 64 \; pd dsp 1;
#X obj 83 194 line~;
#X obj 22 212 *~;
#X obj 22 241 dac~;
#X obj 83 171 pack 0 50;
#X text 20 158 audio;
#X text 93 110 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 13 0;
#X connect 5 0 13 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 9 1 4 1;
#X connect 10 0 24 0;
#X connect 11 0 1 1;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 12 0 18 0;
#X connect 14 0 22 0;
#X connect 15 0 17 0;
#X connect 15 0 20 0;
#X connect 18 0 19 0;
#X connect 21 0 22 1;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 21 0;
#X restore 39 331 pd output;
#X msg 106 303 MUTE;
#X text 150 302 <-- output amplitude;
#X obj 220 147 pack 0 50;
#X floatatom 220 46 0 0 0;
#X text 640 544 updated for Pd version 0.26;
#X obj 70 108 *~;
#X obj 220 72 / 10;
#X obj 220 96 moses 0;
#X msg 220 120 0;
#X obj 39 275 hip~ 5;
#X graph graph1 0 0 128 300 620 491 876 361;
#X array spectrum 128 float 0;
#X pop;
#X text 215 28 bandwidth;
#X msg 135 235 bang;
#X text 177 234 <-- click to graph;
#N canvas 204 17 358 238 fft 0;
#X obj 46 48 inlet~;
#X obj 159 181 tabwrite~ spectrum;
#X obj 159 145 inlet;
#X obj 46 78 rfft~;
#X obj 46 111 *~;
#X obj 77 111 *~;
#X obj 46 141 sqrt~;
#X obj 191 45 block~ 1024 1;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 3 0 4 1;
#X connect 3 1 5 0;
#X connect 3 1 5 1;
#X connect 4 0 6 0;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X restore 68 237 pd fft;
#X text 618 497 0;
#X text 851 492 5512;
#X obj 78 141 *~;
#X obj 18 141 sig~ 1;
#X obj 39 194 /~;
#X obj 54 168 +~;
#X obj 70 79 osc~ 86.1328;
#X text 103 107 call this X;
#X text 111 141 X^2;
#X text 84 171 1+X^2;
#X text 71 196 1/(1+X^2);
#X text 10 357 This is the form of pulse train used in the Phase Aligned
Formant (PAF) algorithm. It has the neat property that its amplitude
spectrum drops off as a perfectly exponential function of frequency.
This algorithm is protected by French and US patents. contact Vincent
Puig to learn what restrictions may apply.;
#X text 11 457 On the other hand \, there are rumors that exp(-X*X)
actually sounds better than 1/(1+X*X). To compute exp(-X*X) efficiently
you will want to employ tabread4~ with a stored bell curve. I don't
want to know you're doing this. However \, the first Pd user who e-mails
me the correct formula for the output spectrum wins a free CO2 fire
extinguisher.;
#X text 28 4 ANOTHER PULSE WIDTH MOD ALGORITHM;
#X connect 0 0 12 1;
#X connect 5 0 6 1;
#X connect 6 0 5 0;
#X connect 7 0 6 2;
#X connect 9 0 0 0;
#X connect 10 0 13 0;
#X connect 12 0 24 0;
#X connect 12 0 24 1;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 14 1 9 0;
#X connect 15 0 9 0;
#X connect 16 0 6 0;
#X connect 19 0 21 1;
#X connect 24 0 27 1;
#X connect 25 0 26 0;
#X connect 25 0 27 0;
#X connect 26 0 16 0;
#X connect 26 0 21 0;
#X connect 27 0 26 1;
#X connect 28 0 12 0;