aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/D14.vibrato.pd
blob: 3f4d6ea214f57b01e874f70e915f9ac8924eb375 (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
#N canvas 80 10 709 653 12;
#X obj 28 258 r trigger;
#X obj 28 454 *~;
#X obj 28 482 *~;
#X floatatom 63 304 3 0 100 0 - - -;
#X msg 460 493 \; trigger 0;
#X obj 28 281 unpack;
#X floatatom 28 304 1 0 100 0 - - -;
#X obj 27 533 +~ 0.3;
#X obj 27 559 cos~;
#X obj 27 507 osc~;
#X obj 63 323 mtof;
#X obj 63 345 sqrt;
#X obj 63 367 sqrt;
#X text 572 461 <-- octave up;
#X msg 460 416 \; trigger 1 60;
#X msg 460 453 \; trigger 1 72;
#X text 550 494 <-- release;
#X text 556 512 is optional;
#X obj 28 424 *~;
#X obj 237 404 +~ 1;
#N canvas 0 0 450 300 graph1 0;
#X array array62 131 float 1;
#A 0 0.970031 1 0.970031 0.881921 0.740952 0.555571 0.336891 0.0980184
-0.146729 -0.382682 -0.595698 -0.773009 -0.88 -0.9 -0.92 -0.92 -0.85773
-0.707109 -0.514106 -0.290288 -0.0490716 0.195086 0.427551 0.63439
0.803205 0.86 0.88 0.88 0.88 0.84 0.82 0.471402 0.242986 6.63397e-06
-0.242974 -0.471391 -0.671554 -0.831465 -0.941541 -0.995184 -0.989178
-0.923883 -0.803213 -0.68 -0.42 -0.24 0.1 0.4 0.6 0.7071 0.857723 0.956937
0.998795 0.980787 0.903994 0.773018 0.595708 0.382694 0.146742 -0.0980052
-0.336878 -0.55556 -0.7 -0.8 -0.88 -0.88 -0.88 -0.84 -0.82 -0.555582
-0.336903 -0.0980316 0.146716 0.38267 0.595687 0.773001 0.903983 0.980782
0.998796 0.956945 0.857737 0.707119 0.514117 0.290301 0.0490849 -0.195073
-0.427539 -0.63438 -0.803197 -0.923873 -0.989174 -0.995187 -0.94155
-0.83148 -0.671573 -0.471414 -0.242999 -1.99019e-05 0.242961 0.471379
0.671544 0.831458 0.88 0.9 0.9 0.88 0.803221 0.63441 0.08 -0.14 -0.28
-0.48 -0.64 -0.72 -0.857717 -0.956933 -0.998794 -0.98079 -0.904 -0.773026
-0.595719 -0.382706 -0.146755 0.097992 0.336866 0.555549 0.740934 0.881909
0.970025 1 0.970038;
#X coords 0 1 130 -1 200 100 1;
#X restore 246 508 graph;
#X obj 237 356 tabosc4~ array62;
#X floatatom 237 312 3 0 0 0 - - -;
#X obj 237 333 / 6;
#X obj 237 380 *~;
#X floatatom 391 333 3 0 0 0 - - -;
#X text 236 438 since we'll multiply \,;
#X text 235 453 vibrato output should;
#X text 235 470 be centered at 1 \, not 0;
#X text 273 384 multiply by vib depth;
#X obj 391 361 / 6923;
#X text 62 425 apply vibrato;
#X text 66 453 fourth;
#X text 69 469 power;
#X text 97 537 waveform;
#X text 96 517 simple;
#X text 457 354 4/(exp(log(2)/1200)-1);
#X text 461 335 conversion factor is;
#X text 384 295 vibrato depth;
#X text 383 312 in cents;
#X text 228 274 vibrato speed;
#X text 227 291 in Hertz;
#X obj 28 392 adsr 0 100 200 100 300;
#X obj 26 587 output~;
#X text 88 9 USING ADSRS FOR PORTAMENTO AND ADDING VIBRATO TOO;
#X text 43 30 Portamento can be treated as a special case of an ADSR
envelope \, with 100 percent sustain. Vibrato is properly computed
in units of pitch \, but it's also possible to do the job without having
to convert from pitch to frequency units at the audio rate. To do this
we just raise the "pitch" to the fourth power \, so that it acts pseudo-exponentially.
Rather than add vibrato to the ADSR output \, we multiply a signal
which controls relative frequency. The relative frequency change is
one plus an oscillator.;
#X text 439 626 updated for Pd version 0.39;
#X text 45 185 The table below holds 6 cycles of vibrato with small
variations to get a not-exactly-repeating vibrato. We thus have to
divide vibrato frequency by six. You can just use a sine or triangle
wave if you prefer.;
#X text 573 426 <-- middle C;
#X connect 0 0 5 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 9 0;
#X connect 3 0 10 0;
#X connect 5 0 6 0;
#X connect 5 1 3 0;
#X connect 6 0 42 0;
#X connect 7 0 8 0;
#X connect 8 0 43 0;
#X connect 8 0 43 1;
#X connect 9 0 7 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 42 1;
#X connect 18 0 1 0;
#X connect 18 0 1 1;
#X connect 19 0 18 1;
#X connect 21 0 24 0;
#X connect 22 0 23 0;
#X connect 23 0 21 0;
#X connect 24 0 19 0;
#X connect 25 0 30 0;
#X connect 30 0 24 1;
#X connect 42 0 18 0;