aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/F13.paf.control.pd
blob: 59ebd33495791300f335eb964cd02cd4b79ffe53 (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
#N canvas 89 36 756 792 12;
#X obj 127 608 cos~;
#X obj 127 585 *~;
#X obj 170 608 cos~;
#X obj 225 553 wrap~;
#X obj 189 553 -~;
#X obj 170 585 +~;
#X obj 163 638 -~;
#X obj 183 670 *~;
#X obj 145 670 +~;
#X obj 189 521 samphold~;
#X floatatom 189 321 4 0 127 0 - - -;
#X text 185 283 center;
#X obj 189 388 line~;
#X obj 189 365 pack 0 50;
#X obj 80 464 phasor~;
#X floatatom 80 370 4 0 127 0 - - -;
#X text 71 331 fundamental;
#X floatatom 387 384 4 0 127 0 - - -;
#X obj 387 455 line~;
#X obj 298 584 *~;
#X obj 387 432 pack 0 50;
#N canvas 94 264 600 388 make-table 0;
#X msg 81 44 bang;
#X obj 81 73 t b b;
#X obj 159 142 f;
#X obj 197 142 + 1;
#X msg 175 112 0;
#X obj 81 102 until;
#X obj 161 177 t f f;
#X obj 76 306 tabwrite bell-curve;
#X obj 52 270 expr exp(-$f1*$f1);
#X obj 63 168 sel 199;
#X obj 51 241 expr ($f1-100)/25;
#N canvas 0 0 450 300 graph4 0;
#X array bell-curve 200 float 1;
#A 0 1.12535e-07 1.54727e-07 2.12059e-07 2.89706e-07 3.94519e-07 5.35535e-07
7.24633e-07 9.77371e-07 1.31404e-06 1.76105e-06 2.35258e-06 3.13275e-06
4.15832e-06 5.50199e-06 7.25659e-06 9.54016e-06 1.25023e-05 1.63317e-05
2.1266e-05 2.76026e-05 3.57128e-05 4.60584e-05 5.92113e-05 7.58768e-05
9.69224e-05 0.00012341 0.000156634 0.000198167 0.000249912 0.000314163
0.000393669 0.000491721 0.000612231 0.000759842 0.000940028 0.00115923
0.00142498 0.00174605 0.00213263 0.00259648 0.00315111 0.00381201 0.00459678
0.0055254 0.0066204 0.00790705 0.0094136 0.0111714 0.013215 0.0155826
0.0183156 0.0214592 0.0250621 0.0291763 0.0338573 0.0391639 0.0451575
0.0519019 0.0594631 0.0679081 0.0773047 0.0877205 0.0992216 0.111872
0.125732 0.140858 0.1573 0.1751 0.194291 0.214896 0.236928 0.260383
0.285247 0.311486 0.339053 0.367879 0.397882 0.428956 0.46098 0.493812
0.527292 0.561244 0.595473 0.62977 0.663916 0.697676 0.730811 0.763074
0.794216 0.823987 0.852144 0.878447 0.902668 0.924595 0.944027 0.960789
0.974725 0.985703 0.99362 0.998401 1 0.998401 0.99362 0.985703 0.974725
0.960789 0.944027 0.924595 0.902668 0.878447 0.852144 0.823987 0.794216
0.763074 0.730811 0.697676 0.663916 0.62977 0.595473 0.561244 0.527292
0.493812 0.46098 0.428956 0.397882 0.367879 0.339053 0.311486 0.285247
0.260383 0.236928 0.214896 0.194291 0.1751 0.1573 0.140858 0.125732
0.111872 0.0992216 0.0877205 0.0773047 0.0679081 0.0594631 0.0519019
0.0451575 0.0391639 0.0338573 0.0291763 0.0250621 0.0214592 0.0183156
0.0155826 0.013215 0.0111714 0.0094136 0.00790705 0.0066204 0.0055254
0.00459678 0.00381201 0.00315111 0.00259648 0.00213263 0.00174605 0.00142498
0.00115923 0.000940028 0.000759842 0.000612231 0.000491721 0.000393669
0.000314163 0.000249912 0.000198167 0.000156634 0.00012341 9.69224e-05
7.58768e-05 5.92113e-05 4.60584e-05 3.57128e-05 2.76026e-05 2.1266e-05
1.63317e-05 1.25023e-05 9.54016e-06 7.25659e-06 5.50199e-06 4.15832e-06
3.13275e-06 2.35258e-06 1.76105e-06 1.31404e-06 9.77371e-07 7.24633e-07
5.35535e-07 3.94519e-07 2.89706e-07 2.12059e-07 1.54727e-07;
#X coords 0 1 199 0 200 140 1;
#X restore 342 85 graph;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 1 1 4 0;
#X connect 2 0 3 0;
#X connect 2 0 6 0;
#X connect 2 0 9 0;
#X connect 3 0 2 1;
#X connect 4 0 2 1;
#X connect 5 0 2 0;
#X connect 6 0 10 0;
#X connect 6 1 7 1;
#X connect 8 0 7 0;
#X connect 9 0 5 1;
#X connect 10 0 8 0;
#X restore 536 647 pd make-table;
#X obj 298 558 cos~;
#X obj 298 533 -~ 0.25;
#X obj 298 610 +~ 100;
#X obj 298 633 tabread4~ bell-curve;
#X obj 184 699 *~;
#X text 330 658 waveshaper;
#X text 31 2 CHANGING PAF CONTROLS TO NATURAL UNITS;
#X obj 80 394 mtof;
#X obj 211 413 expr 1/$f1;
#X obj 189 341 mtof;
#X text 184 298 freq.;
#X obj 189 437 *~;
#X text 385 357 bandwidth;
#X obj 387 406 mtof;
#X obj 387 491 *~;
#X obj 387 515 *~ 25;
#X text 18 23 The more "natural" units for describing a formant might
be center frequency and bandwidth \, so that you can change the fundamental
without having the formant shift up and down in parallel. Here all
three frequencies are expressed in MIDI units. The bandwidth and center
frequency have to be divided by the fundamental (the expr 1/$f1 takes
its reciprocal and two *~ objects finish the division.);
#X text 427 490 divide by fundamental;
#X text 445 514 range for table;
#X text 364 609 offset to middle of table;
#X text 196 459 C.F. relative;
#X text 197 475 to fundamental;
#X text 69 346 (MIDI units);
#X text 220 697 ring mod;
#X obj 184 726 output~;
#X text 483 762 updated for Pd version 0.37;
#X text 19 137 Here we take a somewhat lax approach to sampholding
the center frequency control. The frequency itself changes instantly
\, but the center/fundamental frequency ratio waits for the next period.
This gives a slight "chirp" if the fundamental is abruptly raised a
couple of octaves. There's no easy way using Pd's built-in primitives
to avoid this. Note however that there's a "paf~" extern available
which solves this problem better and \, moreover \, runs much faster.
;
#X obj 298 508 *~ 0.5;
#X connect 0 0 6 1;
#X connect 0 0 8 0;
#X connect 1 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 6 0;
#X connect 3 0 4 1;
#X connect 3 0 7 1;
#X connect 4 0 1 1;
#X connect 5 0 2 0;
#X connect 6 0 7 0;
#X connect 7 0 8 1;
#X connect 8 0 26 0;
#X connect 9 0 4 0;
#X connect 9 0 3 0;
#X connect 10 0 31 0;
#X connect 12 0 33 0;
#X connect 13 0 12 0;
#X connect 14 0 9 1;
#X connect 14 0 1 0;
#X connect 14 0 5 1;
#X connect 14 0 49 0;
#X connect 15 0 29 0;
#X connect 17 0 35 0;
#X connect 18 0 36 0;
#X connect 19 0 24 0;
#X connect 20 0 18 0;
#X connect 22 0 19 0;
#X connect 23 0 22 0;
#X connect 24 0 25 0;
#X connect 25 0 26 1;
#X connect 26 0 46 0;
#X connect 26 0 46 1;
#X connect 29 0 30 0;
#X connect 29 0 14 0;
#X connect 30 0 33 1;
#X connect 30 0 36 1;
#X connect 31 0 13 0;
#X connect 33 0 9 0;
#X connect 35 0 20 0;
#X connect 36 0 37 0;
#X connect 37 0 19 1;
#X connect 49 0 23 0;