#N canvas 0 1 986 654 10; #X msg 344 51 record; #X msg 53 30 bang; #X obj 53 50 openpanel; #X obj 52 167 soundfiler; #X msg 297 36 bang; #X obj 298 99 rfft~; #X floatatom 90 186 10 0 0; #X msg 168 185 resize \$1; #X obj 53 72 t s b; #X obj 53 129 pack s s; #X msg 52 150 read -resize \$1 \$2; #X obj 99 71 float \$0; #X obj 54 95 route float; #X obj 52 207 makefilename %d-sonosample; #X text 57 14 Step 1 : Load a sound file; #X obj 820 17 table \$0-sonosample; #X msg 822 43 \; pd dsp 1; #X obj 121 580 rifft~; #X msg 340 158 play; #X obj 822 82 block~ 256; #X obj 27 607 outlet~; #X text 346 135 Step 3 : Play the recorded sonogram; #X msg 887 44 \; pd dsp 0; #X obj 52 186 / 256; #X obj 121 607 /~ 256; #X obj 342 181 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X text 316 181 0 %; #X text 476 180 100 %; #X obj 343 199 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144 -1 -1 12700 1; #X text 317 202 0 %; #X text 478 198 100 %; #X msg 512 196 100; #X obj 539 196 loadbang; #X text 339 217 Playback positions; #X obj 697 184 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X text 671 184 0 %; #X text 831 183 100 %; #X obj 698 202 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144 -1 -1 12700 1; #X text 672 205 0 %; #X text 833 201 100 %; #X text 697 167 Set portion of the sonogram to modify; #X text 883 183 Start Point; #X text 883 198 End Point; #X msg 695 220 100; #X obj 722 220 loadbang; #X text 242 15 Step 2 : Record the sonogram; #N canvas 309 22 600 544 modifications 1; #X text 234 236 Filter a frequency; #X msg 107 239 filter \$1 \$1; #X msg 105 161 enhance \$1 \$1 1.1; #X msg 106 198 dim \$1 \$1 1.1; #X text 236 155 Enhance a frequency by 10% ( might be a range of frequencies with message 'enhance f1 f2 x' ); #X text 234 198 Dim a frequency by 10 %; #X text 180 309 Flip frequencies ( dogs love it ); #X msg 108 265 swappoints 1000; #X obj 179 97 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X msg 106 116 swapfreqs \$1 \$2; #X obj 223 116 pack f f; #X text 218 264 Swap 1000 points ( rain effect ); #X msg 151 94 \$1; #X obj 106 94 change; #X obj 179 77 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X msg 151 74 \$1; #X obj 106 74 change; #X obj 178 145 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X obj 179 183 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X obj 180 223 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X text 285 115 Swap two frequencies ( set 2nd \, click 1st ); #X msg 110 308 flipfreqs; #X msg 110 330 flipblocks; #X text 244 286 Swap section [0% \, 20%] and [50% \, 70%] of [start \, end]; #X text 185 330 Flip blocks ( reverse effect ); #X msg 110 287 swapblocks 0 50 20; #X msg 152 32 godown 1; #X msg 107 32 goup 2; #X text 218 32 Move frequencies up or down; #X msg 108 54 roll 2; #X text 210 45 Roll frequencies : same as above but without loss ( circular ); #X msg 112 350 zswap; #X text 364 374 Change the phase; #X text 180 350 Exchange real and imaginery parts ( noisy filter ) ; #X msg 113 374 phase \$1; #X obj 200 373 hsl 128 15 0 90 0 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X text 184 373 0; #X text 339 374 90; #X obj 187 415 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X msg 113 429 add \$1 \$1 0.5; #X text 216 429 Add a constant to a frequency; #X obj 189 451 hdl 8 1 0 128 empty empty empty 20 8 0 8 -260818 -24198 -128992 0; #X msg 115 466 add \$1 \$1 -0.5; #X text 218 465 Sub a constant from a frequency; #X msg 113 395 average 100; #X text 190 395 Average over 100 blocks ( smooth with some sounds ) ; #X obj 16 454 outlet; #X connect 1 0 46 0; #X connect 2 0 46 0; #X connect 3 0 46 0; #X connect 7 0 46 0; #X connect 8 0 12 0; #X connect 9 0 46 0; #X connect 10 0 9 0; #X connect 12 0 13 0; #X connect 13 0 10 1; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 16 0 10 0; #X connect 17 0 2 0; #X connect 18 0 3 0; #X connect 19 0 1 0; #X connect 21 0 46 0; #X connect 22 0 46 0; #X connect 25 0 46 0; #X connect 26 0 46 0; #X connect 27 0 46 0; #X connect 29 0 46 0; #X connect 31 0 46 0; #X connect 34 0 46 0; #X connect 35 0 34 0; #X connect 38 0 39 0; #X connect 39 0 46 0; #X connect 41 0 42 0; #X connect 42 0 46 0; #X connect 44 0 46 0; #X restore 694 150 pd modifications; #X obj 298 73 tabplay~ \$0-sonosample; #X obj 106 329 sonogram~ 256 0; #X text 538 54 When the sonogram is RED (updating) \,; #X text 537 43 VERY IMPORTANT NOTE :; #X text 591 116 Step 4 : modify parts of the sonogram ... and send a refresh message; #X msg 337 234 readspeed \$1; #X floatatom 468 234 5 0 0; #X text 337 252 Reading speed; #X obj 428 234 / 100; #X msg 515 234 100; #X obj 549 234 loadbang; #X text 538 66 no update is possible; #X msg 221 525 play; #X msg 217 555 open /tmp/sonogram.wav; #X obj 246 603 writesf~ 2; #X msg 276 576 start; #X msg 320 576 stop; #X floatatom 172 609 5 0 0; #X obj 436 158 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 1 1; #X text 464 160 Loop; #X obj 381 159 spigot; #X connect 0 0 48 0; #X connect 1 0 2 0; #X connect 2 0 8 0; #X connect 3 0 23 0; #X connect 4 0 0 0; #X connect 4 0 47 0; #X connect 5 0 48 0; #X connect 5 1 48 1; #X connect 6 0 7 0; #X connect 7 0 48 0; #X connect 8 0 9 0; #X connect 8 1 11 0; #X connect 9 0 10 0; #X connect 10 0 3 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 9 1; #X connect 17 0 24 0; #X connect 18 0 48 0; #X connect 23 0 6 0; #X connect 24 0 20 0; #X connect 24 0 61 0; #X connect 24 0 61 1; #X connect 25 0 48 2; #X connect 28 0 48 3; #X connect 31 0 28 0; #X connect 32 0 31 0; #X connect 34 0 48 4; #X connect 37 0 48 5; #X connect 43 0 37 0; #X connect 44 0 43 0; #X connect 46 0 48 0; #X connect 47 0 5 0; #X connect 47 0 20 0; #X connect 48 0 17 0; #X connect 48 1 17 1; #X connect 48 3 63 0; #X connect 48 3 67 0; #X connect 52 0 48 0; #X connect 53 0 55 0; #X connect 55 0 52 0; #X connect 56 0 53 0; #X connect 57 0 56 0; #X connect 59 0 48 0; #X connect 59 0 60 0; #X connect 59 0 62 0; #X connect 60 0 61 0; #X connect 62 0 61 0; #X connect 63 0 61 0; #X connect 64 0 24 1; #X connect 65 0 67 1; #X connect 67 0 18 0;