#N canvas 28 0 821 766 10;
#X declare -path ..;
#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;
