#N canvas 464 39 565 614 10;
#X obj 6 584 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 6 387 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 444 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 507 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X text 132 515 (none);
#X text 131 395 signal;
#X text 131 419 signal;
#X text 131 455 signal;
#X text 131 479 signal;
#X obj 100 396 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 100 420 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 100 457 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 100 480 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 188 419 - imaginary part of the complex signal in cartesian form;
#X text 188 395 - real part of the complex signal in cartesian form;
#X text 77 146 Real;
#X text 309 146 Imaginary;
#X text 46 265 Amplitude;
#X text 317 267 Phase;
#X text 74 91 Use the [cartopol~] object to convert signal values representing cartesian coordinates to a signal composed of polar coordinates - useful for spectral processing.;
#X text 188 454 - amplitude output of the polar form;
#X text 189 479 - phase in radians (-pi to pi) output of the polar form;
#X obj 6 540 cnv 3 550 3 empty empty more_info 8 12 0 13 #dcdcdc #000000 0;
#X obj 110 202 cyclone/cartopol~, f 21;
#X text 125 548 If the right outlet isn't connected to anything \, the object won't compute the phase \, saving you some CPU.;
#N canvas 604 151 534 482 spectral 0;
#X obj 99 239 cnv 15 300 100 empty empty polar: 6 10 0 14 #e0e0e0 #404040 0;
#X obj 194 210 cyclone/cartopol~;
#X obj 194 369 cyclone/poltocar~;
#X obj 230 147 rfft~;
#X obj 219 426 rifft~;
#X text 312 370 back to cartesian;
#X text 276 170 <= imaginary;
#X text 112 283 amplitude =>;
#X text 306 282 <= phase;
#X text 218 269 spectral;
#X text 212 288 processing;
#X text 218 306 in here;
#X text 167 172 real =>;
#X text 308 210 to polar form;
#X text 219 252 Do some;
#X text 85 32 [cartopol~] is useful for spectral processing in the more intuitive polar form (with amplitude and phase values). This is because when performing spectral analysis in Pd \, the signal is in the cartesian form \, so we need [cartopol~] and [poltocar~] to convert to and from the polar form in order to perform the FFT and iFFT. Here's the general idea:, f 62;
#X connect 1 0 2 0;
#X connect 1 1 2 1;
#X connect 2 0 4 0;
#X connect 2 1 4 1;
#X connect 3 0 1 0;
#X connect 3 1 1 1;
#X restore 457 227 pd spectral \; processing;
#X obj 2 2 ./header cartopol~;
#X text 24 61 Signal cartesian to polar conversion;
#X obj 499 71 cyclone/dsponoff~;
#X obj 110 239 cyclone/snapshot~ 1;
#X floatatom 110 266 12 0 0 0 - - - 0;
#X obj 239 239 cyclone/snapshot~ 1;
#X floatatom 239 266 12 0 0 0 - - - 0;
#X floatatom 110 147 12 0 0 0 - - - 0;
#X obj 110 171 sig~;
#X floatatom 233 146 12 0 0 0 - - - 0;
#X obj 233 170 sig~;
#X text 19 328 see also:;
#X obj 445 342 open-else;
#X text 448 298 click:;
#X msg 445 321 car2pol~;
#X text 215 319 Plugdata users or those with ELSE can also use [else/car2pol~] as an alternative, f 33;
#X obj 87 319 cyclone/poltocar~;
#X obj 87 339 cyclone/cartopol;
#X connect 23 0 29 0;
#X connect 23 1 31 0;
#X connect 29 0 30 0;
#X connect 31 0 32 0;
#X connect 33 0 34 0;
#X connect 34 0 23 0;
#X connect 35 0 36 0;
#X connect 36 0 23 1;
#X connect 40 0 38 0;
