aboutsummaryrefslogtreecommitdiff
path: root/adaptive/examples/06.interference_cancelation.pd
diff options
context:
space:
mode:
Diffstat (limited to 'adaptive/examples/06.interference_cancelation.pd')
-rwxr-xr-xadaptive/examples/06.interference_cancelation.pd323
1 files changed, 323 insertions, 0 deletions
diff --git a/adaptive/examples/06.interference_cancelation.pd b/adaptive/examples/06.interference_cancelation.pd
new file mode 100755
index 0000000..622b646
--- /dev/null
+++ b/adaptive/examples/06.interference_cancelation.pd
@@ -0,0 +1,323 @@
+#N canvas 28 0 821 766 10;
+#N canvas 880 339 427 348 adaptive_filter~ 0;
+#X obj 37 35 inlet~;
+#X text 22 15 input signal;
+#X obj 138 35 inlet~;
+#X text 122 15 desired signal;
+#X obj 36 291 outlet~;
+#X msg 265 110 adaptation 1;
+#X obj 265 89 loadbang;
+#X msg 264 209 clear;
+#X obj 265 141 r mu;
+#X msg 265 163 mu \$1;
+#X obj 88 291 outlet~;
+#X obj 269 38 block~ 128;
+#X obj 37 155 nlms2~ 100 0.01;
+#X connect 0 0 12 0;
+#X connect 2 0 12 1;
+#X connect 5 0 12 0;
+#X connect 6 0 5 0;
+#X connect 7 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 12 0 4 0;
+#X connect 12 1 10 0;
+#X restore 133 428 pd adaptive_filter~;
+#X text 257 404 d[n];
+#X text 140 447 y[n];
+#N canvas 0 0 450 300 speech_sample~ 0;
+#X obj 15 26 inlet;
+#X obj 44 262 outlet~;
+#X obj 45 202 readsf~;
+#X msg 45 144 open /win/Georg/pd/holzilib/samples/Mandarin.wav;
+#X obj 130 80 openpanel;
+#X obj 130 57 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 130 105 set open \$1;
+#X obj 89 224 t b b;
+#X msg 73 170 1;
+#X obj 15 83 t f b;
+#X obj 183 41 inlet;
+#X connect 0 0 9 0;
+#X connect 2 0 1 0;
+#X connect 2 1 7 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 3 0;
+#X connect 7 0 8 0;
+#X connect 7 1 3 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 9 1 3 0;
+#X connect 10 0 4 0;
+#X restore 135 203 pd speech_sample~;
+#N canvas 427 384 325 189 delay~ 0;
+#X obj 15 20 inlet~;
+#X obj 15 136 outlet~;
+#X obj 15 47 delwrite~ \$0-line 100;
+#X obj 15 104 delread~ \$0-line 10;
+#X text 30 77 10 ms delay;
+#X connect 0 0 2 0;
+#X connect 3 0 1 0;
+#X restore 134 376 pd delay~;
+#X obj 135 173 tgl 25 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 471 255 spectrum~;
+#X obj 471 238 r~ adaptive_signal;
+#X obj 722 238 r scopes_on;
+#X obj 722 26 r scopes_on;
+#X text 428 137 (1);
+#X text 428 338 (2);
+#X obj 632 26 r tlp;
+#X obj 632 238 r tlp;
+#X obj 471 43 spectrum~;
+#X obj 471 26 r~ input_signal;
+#X obj 249 183 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 222 167 open sample;
+#X text 138 178 IO;
+#X text 25 25 PERIODIC INTERFERENCE CANCELATION WITHOUT AN EXTERNAL
+REFERENCE SOURCE;
+#N canvas 609 171 479 356 PROBLEM_DESCRIPTION 0;
+#X text 119 29 PERIODIC INTERFERENCE CANCELATION;
+#X text 24 74 In this example the adaptive filter is used as an adaptive
+linear predictor to remove a periodic interference broadband signal.
+;
+#X text 62 204 LMS \, 100 coefficients (c0 \, c1 \, ...c100) ->sharper
+filter and less distortion \, step-sze parameter mu;
+#X text 24 122 A speech signal is used as the broadband signal and
+a sine is used as the interference signal. The speechsignal serves
+as input signal and is delayed about 10 ms.;
+#X text 21 186 adaptive filter:;
+#X text 29 271 The interference cancelation is sucessfull \, if the
+inteference signal is removed such that only the speechsignal is audible
+(prediction error).;
+#X restore 27 92 pd PROBLEM_DESCRIPTION;
+#N canvas 852 16 434 175 OBSERVATIONS 0;
+#X text 17 24 OBSERVATIONS;
+#X text 15 68 With an order of 100 the interference cancelation works
+quite well.;
+#X text 15 106 For lower frequencies (< 300) the cancelation is not
+as satisfying as for higher frequencies.;
+#X restore 27 116 pd OBSERVATIONS;
+#X text 26 71 ReadMe:;
+#X obj 296 695 tgl 20 0 audio_io empty empty 0 -6 0 8 -262144 -1 -1
+1 1;
+#X text 321 697 <- Audio IO;
+#X obj 37 699 tgl 20 0 scopes_on empty empty 0 -6 0 8 -262144 -1 -1
+0 1;
+#X text 67 699 <- Visualization IO;
+#X floatatom 37 732 5 0 100 0 - init_tlp tlp;
+#X text 81 730 <- temporal lowpass for spectrum view (0...100);
+#N canvas 752 62 617 210 init 0;
+#X msg 43 99 2;
+#X obj 256 43 loadbang;
+#X obj 43 122 s init_tlp;
+#X obj 257 122 s mur;
+#X msg 256 98 0.01;
+#X msg 515 103 \; pd dsp \$1;
+#X obj 515 78 r audio_io;
+#X msg 138 96 90;
+#X obj 139 122 s vol;
+#X obj 188 122 s sel_in;
+#X msg 187 96 0;
+#X msg 336 89 \; f1 1000 \; f2 8070 \; f3 12050 \; a1 90 \; a2 35 \;
+a3 68 \;;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 0 4 0;
+#X connect 1 0 7 0;
+#X connect 1 0 10 0;
+#X connect 1 0 11 0;
+#X connect 4 0 3 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 10 0 9 0;
+#X restore 750 662 pd init;
+#X floatatom 371 641 6 0 0 0 - mur mu;
+#X obj 471 467 spectrum~;
+#X obj 722 450 r scopes_on;
+#X obj 632 450 r tlp;
+#X text 428 550 (3);
+#X text 269 448 e[n];
+#X obj 471 450 r~ filter_signal;
+#N canvas 647 406 282 264 osci~ 0;
+#X obj 43 79 osc~ 440;
+#X obj 44 168 *~;
+#X obj 147 112 dbtorms;
+#X obj 43 38 inlet;
+#X obj 147 38 inlet;
+#X obj 146 152 line~;
+#X msg 146 132 \$1 50;
+#X obj 44 200 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 1;
+#X connect 6 0 5 0;
+#X restore 151 289 pd osci~;
+#X floatatom 151 261 5 0 20000 1 Hz f1 -;
+#X floatatom 164 275 4 0 120 1 dB a1 -;
+#N canvas 647 406 282 264 osci~ 0;
+#X obj 43 79 osc~ 440;
+#X obj 44 168 *~;
+#X obj 147 112 dbtorms;
+#X obj 43 38 inlet;
+#X obj 147 38 inlet;
+#X obj 146 152 line~;
+#X msg 146 132 \$1 50;
+#X obj 44 200 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 1;
+#X connect 6 0 5 0;
+#X restore 218 289 pd osci~;
+#X floatatom 218 261 5 0 20000 1 Hz f2 -;
+#X floatatom 231 275 4 0 120 1 dB a2 -;
+#N canvas 647 406 282 264 osci~ 0;
+#X obj 43 79 osc~ 440;
+#X obj 44 168 *~;
+#X obj 147 112 dbtorms;
+#X obj 43 38 inlet;
+#X obj 147 38 inlet;
+#X obj 146 152 line~;
+#X msg 146 132 \$1 50;
+#X obj 44 200 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 1;
+#X connect 6 0 5 0;
+#X restore 285 289 pd osci~;
+#X floatatom 285 261 5 0 20000 1 Hz f3 -;
+#X floatatom 298 275 4 0 120 1 dB a3 -;
+#X text 150 238 interference signals:;
+#N canvas 880 450 292 275 input~ 0;
+#X obj 17 24 inlet~;
+#X obj 138 24 inlet~;
+#X obj 18 89 +~;
+#X obj 19 121 *~ 0.1;
+#X obj 19 225 outlet~;
+#X obj 47 169 s~ input_signal;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X restore 134 321 pd input~;
+#N canvas 880 302 450 408 audio_out~ 0;
+#X obj 67 41 inlet;
+#X text 63 24 volume;
+#X obj 272 37 inlet;
+#X obj 67 61 dbtorms;
+#X msg 67 81 \$1 50;
+#X text 249 21 select insignal;
+#X obj 272 97 sel 0 1 2;
+#X msg 68 150 1 50;
+#X msg 105 150 0 50;
+#X obj 68 177 line~;
+#X obj 51 219 *~;
+#X msg 199 149 1 50;
+#X msg 236 149 0 50;
+#X obj 199 176 line~;
+#X obj 182 219 *~;
+#X msg 310 150 1 50;
+#X msg 347 150 0 50;
+#X obj 310 177 line~;
+#X obj 293 219 *~;
+#X obj 293 198 r~ filter_signal;
+#X obj 52 289 *~;
+#X obj 67 262 line~;
+#X obj 52 364 dac~ 1 2;
+#X obj 158 364 outlet;
+#X obj 182 198 r~ input_signal;
+#X obj 51 198 r~ adaptive_signal;
+#X connect 0 0 3 0;
+#X connect 0 0 23 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 21 0;
+#X connect 6 0 7 0;
+#X connect 6 0 12 0;
+#X connect 6 0 16 0;
+#X connect 6 1 11 0;
+#X connect 6 1 8 0;
+#X connect 6 1 16 0;
+#X connect 6 2 15 0;
+#X connect 6 2 12 0;
+#X connect 6 2 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 10 0 20 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 1;
+#X connect 14 0 20 0;
+#X connect 15 0 17 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 1;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 20 0 22 0;
+#X connect 20 0 22 1;
+#X connect 21 0 20 1;
+#X connect 24 0 14 0;
+#X connect 25 0 10 0;
+#X restore 35 586 pd audio_out~;
+#X floatatom 35 605 5 0 0 1 dB - -;
+#X obj 35 450 vsl 20 128 0 127 0 0 empty vol empty 0 -8 0 8 -262144
+-1 -1 9000 1;
+#X obj 130 543 vradio 20 1 0 3 empty sel_in empty 0 -6 0 8 -262144
+-1 -1 0;
+#X text 233 640 learning rate (mu):;
+#X obj 260 465 s~ adaptive_signal;
+#X obj 134 465 s~ filter_signal;
+#X text 152 545 filtered output (e[n]);
+#X text 104 340 x[n];
+#X text 152 565 input signal (x[n] \, d[n]);
+#X text 153 584 periodic signal (y[n]);
+#X text 34 432 vol;
+#X text 120 525 select;
+#X text 496 689 VISUALIZATIONS:;
+#X text 529 711 (1) input signal (= voice + sine);
+#X text 529 741 (3) y[n] (~ only sine);
+#X text 529 726 (2) error signal (~ only voice);
+#X text 47 259 modify freq ->;
+#X connect 0 0 54 0;
+#X connect 0 1 53 0;
+#X connect 3 0 47 0;
+#X connect 4 0 0 0;
+#X connect 5 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 2;
+#X connect 9 0 14 2;
+#X connect 12 0 14 1;
+#X connect 13 0 6 1;
+#X connect 15 0 14 0;
+#X connect 16 0 3 1;
+#X connect 32 0 31 2;
+#X connect 33 0 31 1;
+#X connect 36 0 31 0;
+#X connect 37 0 47 1;
+#X connect 38 0 37 0;
+#X connect 39 0 37 1;
+#X connect 40 0 47 1;
+#X connect 41 0 40 0;
+#X connect 42 0 40 1;
+#X connect 43 0 47 1;
+#X connect 44 0 43 0;
+#X connect 45 0 43 1;
+#X connect 47 0 0 1;
+#X connect 47 0 4 0;
+#X connect 48 0 49 0;
+#X connect 50 0 48 0;
+#X connect 51 0 48 1;