aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/52.ssb.modulation.pd
blob: 968b3b4593830495939201044314d2d6d4dd4719 (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
#N canvas 7 6 923 594 12;
#X obj 170 349 phasor~ 0;
#X obj 170 393 cos~;
#X obj 206 371 +~ -0.25;
#X obj 206 394 cos~;
#X obj 23 438 *~;
#X obj 88 438 *~;
#X obj 22 462 -~;
#X floatatom 170 322 0 0 0;
#X obj 23 238 tabread4~ array1;
#X obj 23 67 r totsamps;
#X obj 23 142 /;
#X obj 23 190 *~ 0;
#X obj 23 166 phasor~ 0;
#X obj 23 214 +~ 1;
#X msg 23 117 44100;
#X obj 23 91 t b f;
#X obj 62 190 r totsamps;
#X msg 636 38 \; pd dsp 0;
#X text 429 14 START;
#X text 653 20 STOP;
#X floatatom 51 499 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 22 527 pd output;
#X msg 87 500 MUTE;
#X text 121 499 <-- output amplitude;
#N canvas 0 0 600 388 hilbert 0;
#X obj 166 190 biquad~ 0.83774 -0.06338 0.06338 -0.83774 1;
#X obj 166 164 biquad~ 1.94632 -0.94657 0.94657 -1.94632 1;
#X obj 99 111 biquad~ -0.02569 0.260502 -0.260502 0.02569 1;
#X obj 99 137 biquad~ 1.8685 -0.870686 0.870686 -1.8685 1;
#X obj 98 76 inlet~;
#X obj 166 213 outlet~;
#X obj 99 213 outlet~;
#X text 95 261 This is a pair of all-pass filters whose outputs somehow
manage to be about 90 degrees out of phase from each other. I don't
know what phase relation they have with the original signal. I adapted
this from a 4X patch by Emmanuel Favreau \, circa 1982;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 4 0 1 0;
#X connect 4 0 2 0;
#X restore 23 400 pd hilbert;
#X graph graph1 0 -1 155947 1 441 284 641 134;
#X array array1 155948 float 0;
#X pop;
#X text 36 257 sample loop for;
#X text 36 271 test signal;
#X text 35 314 pair of allpass;
#X text 34 333 filters to make;
#X text 34 353 90 degree phase;
#X text 32 373 shifted versions;
#X text 201 323 <-- shift frequency;
#X text 122 438 <-- complex multiply;
#X text 123 452 (calculate real part);
#X text 161 412 cosine and sine waves;
#X text 55 7 SINGLE SIDEBAND MODULATION;
#X text 55 26 (AKA FREQUENCY SHIFTING);
#X text 394 296 The signal sideband modulator gives you only one sideband
for each frequency in teh input signal (whereas ring modulation gave
both a positie and negative sideband.) You can set the shift frequency
positive to shift all frequencies upward \, or negative to shift them
downwards.;
#X obj 484 417 r readfile;
#X msg 334 34 \; readfile ../sound/bell.aiff \; pd dsp 1;
#X obj 484 444 symbol;
#X msg 483 470 read -resize \$1 array1;
#X obj 483 496 soundfiler;
#X obj 483 521 s totsamps;
#X text 671 568 updated for Pd version 0.33;
#X connect 0 0 2 0;
#X connect 0 0 1 0;
#X connect 1 0 4 1;
#X connect 2 0 3 0;
#X connect 3 0 5 1;
#X connect 4 0 6 0;
#X connect 5 0 6 1;
#X connect 6 0 21 0;
#X connect 7 0 0 0;
#X connect 8 0 24 0;
#X connect 9 0 15 0;
#X connect 10 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 8 0;
#X connect 14 0 10 0;
#X connect 15 0 14 0;
#X connect 15 1 10 1;
#X connect 16 0 11 1;
#X connect 20 0 21 1;
#X connect 21 0 20 0;
#X connect 22 0 21 2;
#X connect 24 0 4 0;
#X connect 24 1 5 0;
#X connect 39 0 41 0;
#X connect 41 0 42 0;
#X connect 42 0 43 0;
#X connect 43 0 44 0;