aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/J08.classicsynth.pd
blob: ae9ce754f987e22e166be656c360528ec4cf6f12 (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
#N canvas 203 294 592 528 12;
#N canvas 158 4 781 654 16x 0;
#X obj 69 345 *~ 0.064;
#X obj 69 368 rpole~ 0.93538;
#X obj 69 391 *~ 0.00431;
#X obj 69 414 cpole~ 0.96559 0.05592;
#X obj 69 440 cpole~ 0.96559 -0.05592;
#X obj 69 463 *~ 0.125;
#X obj 69 486 rzero~ -1;
#X obj 69 509 rzero~ -1;
#X obj 69 532 rzero~ -1;
#X obj 63 97 phasor~;
#X obj 69 566 outlet~;
#X obj 86 151 wrap~;
#X obj 86 127 -~;
#X obj 86 175 *~;
#X obj 63 204 +~;
#X obj 271 156 phasor~;
#X obj 294 210 wrap~;
#X obj 294 186 -~;
#X obj 294 234 *~;
#X obj 271 263 +~;
#X obj 64 271 +~;
#X obj 457 31 block~ 1024 1 16;
#X obj 62 29 inlet;
#X obj 250 34 r osc-params;
#X obj 250 57 unpack 0 0 0 0 0 0;
#X obj 272 100 *~;
#X obj 272 128 +~;
#X msg 341 338 \; osc-params 0.5 -0.5 0.5 0.5 1 0.5;
#X obj 341 312 loadbang;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 4 1;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 10 0;
#X connect 9 0 12 0;
#X connect 9 0 14 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 14 1;
#X connect 14 0 20 0;
#X connect 15 0 17 0;
#X connect 15 0 19 0;
#X connect 16 0 18 0;
#X connect 17 0 16 0;
#X connect 18 0 19 1;
#X connect 19 0 20 1;
#X connect 20 0 0 0;
#X connect 22 0 9 0;
#X connect 22 0 25 0;
#X connect 23 0 24 0;
#X connect 24 0 12 1;
#X connect 24 1 13 1;
#X connect 24 2 17 1;
#X connect 24 3 18 1;
#X connect 24 4 25 1;
#X connect 24 5 26 1;
#X connect 25 0 26 0;
#X connect 26 0 15 0;
#X connect 28 0 27 0;
#X restore 41 160 pd 16x;
#X obj 44 255 output~;
#X text 333 501 Updated for Pd version 0.39;
#X text 151 7 THE CLASSIC SUBTRACTIVE SYNTH SOUND;
#X obj 152 132 *~;
#X obj 151 102 +~ 0.2;
#X obj 151 156 *~ 2000;
#X obj 108 221 *~;
#X obj 43 218 *~;
#X obj 41 122 mtof;
#X obj 41 13 r \$0-note;
#X obj 41 62 makenote 1;
#X obj 404 150 + 20;
#X obj 404 102 metro 300;
#X obj 404 80 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 404 201 s \$0-note;
#X obj 404 125 random 70;
#X obj 42 192 vcf~ 3;
#X floatatom 228 112 3 0 0 0 - - -;
#X floatatom 228 157 7 0 0 0 - - -;
#X obj 228 133 mtof;
#X obj 108 196 adsr 2 30 200 50 500;
#X obj 151 77 adsr 1 10 200 50 500;
#X obj 404 175 pack 0 200;
#X obj 41 92 poly 1 1;
#X obj 41 36 unpack;
#X floatatom 480 80 3 0 0 0 - - -;
#X floatatom 489 154 3 0 0 0 - - -;
#X text 31 323 Now that we can make reasonably high-quality classic
waveforms using upsampling \, we combine an upsampled oscillator with
a "vcf" filter and ADSR generators to control the filter resonant frequency
and the amplitude to make the classic subtractive synthesis sound.
Send an "s \$0-note" object a (pitch \, duration) pair to play a note.
(Classic VC synths did not have velocity sensitive keyboards!) You
can add controls to change the parameters of the ADSR envelopes and/or
the vcf~ "Q" parameter. THe oscillators' waveforms and tuning relationship
is controlled by other parameters set within the "pd 16x" window.;
#X connect 0 0 17 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 5 0 4 1;
#X connect 6 0 17 1;
#X connect 7 0 8 1;
#X connect 8 0 1 0;
#X connect 8 0 1 1;
#X connect 9 0 0 0;
#X connect 10 0 25 0;
#X connect 11 0 24 0;
#X connect 11 1 24 1;
#X connect 12 0 23 0;
#X connect 13 0 16 0;
#X connect 14 0 13 0;
#X connect 16 0 12 0;
#X connect 17 0 8 0;
#X connect 18 0 20 0;
#X connect 19 0 6 1;
#X connect 20 0 19 0;
#X connect 21 0 7 0;
#X connect 21 0 7 1;
#X connect 22 0 5 0;
#X connect 23 0 15 0;
#X connect 24 1 9 0;
#X connect 24 2 22 0;
#X connect 24 2 21 0;
#X connect 25 0 11 0;
#X connect 25 1 11 2;
#X connect 26 0 13 1;
#X connect 27 0 23 1;