From 872382a4a76b35e7226369b2f811a6deaf82d772 Mon Sep 17 00:00:00 2001 From: tremblap Date: Sun, 17 Jul 2022 17:36:22 +0100 Subject: [PATCH] final pass of green readability --- help/fluid.mfcc~-help.pd | 37 ++++--- help/fluid.mlpregressor-help.pd | 24 ++-- help/fluid.multiarray-help.pd | 74 +++++++------ help/fluid.nmfmatch~-help.pd | 39 ++++--- help/fluid.nmfmorph~-help.pd | 26 +++-- help/fluid.noveltyfeature~-help.pd | 17 ++- help/fluid.noveltyslice~-help.pd | 55 ++++++---- help/fluid.onsetfeature~-help.pd | 23 +++- help/fluid.onsetslice~-help.pd | 10 +- help/fluid.pca-help.pd | 19 ++-- help/fluid.pitch~-help.pd | 132 ++++++++++++---------- help/fluid.plotter-help.pd | 170 +++++++++++++++++------------ help/fluid.s2f-help.pd | 11 +- help/fluid.sines~-help.pd | 106 ++++++++++-------- help/fluid.spectralshape~-help.pd | 41 ++++--- help/fluid.transients~-help.pd | 23 ++-- help/fluid.waveform-help.pd | 143 +++++++++++++++--------- 17 files changed, 568 insertions(+), 382 deletions(-) diff --git a/help/fluid.mfcc~-help.pd b/help/fluid.mfcc~-help.pd index ffa6a01..d0e1c29 100644 --- a/help/fluid.mfcc~-help.pd +++ b/help/fluid.mfcc~-help.pd @@ -15,10 +15,10 @@ Cepstral Coefficients (MFCCs).; #X obj 353 282 fluid.out~ mfcchelp; #X obj 475 692 cnv 15 192 68 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; -#N canvas 229 91 691 855 first_MFCC_coefficient 0; +#N canvas 200 54 691 855 first_MFCC_coefficient 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.mfcc~ 1 22 0 36 #4ba3fb #ffffff 0; -#X text 19 108 Understanding the role of the first MFCC coefficient +#X text 18 82 Understanding the role of the first MFCC coefficient ; #X obj 64 384 fluid.out~ nmffilterhelp; #N canvas 1770 -861 716 580 srcselect3 0; @@ -112,11 +112,6 @@ Cepstral Coefficients (MFCCs).; #X connect 3 0 2 0; #X restore 41 268 pd sawtooth; #X floatatom 234 276 5 0 1 0 - - - 0; -#X text 318 192 The first coefficient (the first index) is essentally -a value that represents the loudness., f 46; -#X text 318 262 Try modulating the volume here on any of the sources -\, and watch that it doesn't really effect the "shape" of the coefficients. -, f 46; #X text 318 332 Removing the first coefficient is a common practice if you only care about the timbre of the measured sound., f 46; #X text 282 276 <---; @@ -136,24 +131,31 @@ if you only care about the timbre of the measured sound., f 46; #X text 20 151 2) select a source; #X msg 39 438 startcoeff 1; #X msg 48 476 startcoeff 0; -#X text 142 433 ask the object for 13 MFCCs starting from the second +#X obj 317 263 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 318 262 3) Try modulating the volume here on any of the sources +\, and watch that it doesn't really effect the "shape" of the coefficients. +, f 46; +#X text 142 433 ask the object for 13 MFCCs starting from the 'first' (it counts starting at 0); #X text 146 473 or just have the default behaviour of counting from -the first; +the zeroth., f 63; +#X text 17 109 The zeroth coefficient (the first index) is essentally +a value that represents the energy., f 92; #X connect 3 0 9 0; #X connect 4 0 3 3; #X connect 5 0 3 0; #X connect 9 0 2 1; #X connect 9 0 2 0; -#X connect 9 0 17 0; +#X connect 9 0 15 0; #X connect 10 0 3 2; #X connect 11 0 3 1; #X connect 12 0 9 1; -#X connect 17 0 19 0; -#X connect 24 0 17 0; -#X connect 25 0 17 0; +#X connect 15 0 17 0; +#X connect 22 0 15 0; +#X connect 23 0 15 0; #X restore 484 712 pd first_MFCC_coefficient; -#N canvas 474 107 693 767 timbral_matching 0; +#N canvas 144 83 693 767 timbral_matching 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.mfcc~ 1 22 0 36 #4ba3fb #ffffff 0; #X text 19 108 A real-time timbral matching example; @@ -578,7 +580,7 @@ the first; #X text 271 557 Inside this subpatch a Euclidian distance is calculated on the current MFCC analysis to the one stored against either the first or second template. The lower the number \, the more similar it is. -, f 39; +, f 56; #X obj 120 520 bng 20 250 50 0 empty empty empty 17 7 0 10 #00ff04 #000000 #000000; #X obj 224 520 bng 20 250 50 0 empty empty empty 17 7 0 10 #00faff @@ -603,13 +605,16 @@ define a 2nd template., f 27; #A 0 104.169 -21.8773 -29.2162 -41.9118 3.29888 -17.1992 -9.68277 -10.0256 -12.7667 -13.0661 -10.964 -9.6955 -12.0402; #X coords 0 150 13 -150 240 63 1 0 0; -#X restore 273 669 graph; +#X restore 428 675 graph; #X obj 47 429 array set help.mfcc.timbral.display; #X obj 89 657 hradio 25 1 0 2 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0; #X obj 17 602 >, f 30; #X msg 79 275 stop; #X msg 275 274 stop; +#X obj 85 700 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 85 698 3) see which is the nearest; #X connect 2 0 6 0; #X connect 3 0 7 0; #X connect 4 0 6 1; diff --git a/help/fluid.mlpregressor-help.pd b/help/fluid.mlpregressor-help.pd index 6244371..0a7e048 100644 --- a/help/fluid.mlpregressor-help.pd +++ b/help/fluid.mlpregressor-help.pd @@ -153,8 +153,6 @@ Perception neural network.; #X obj 405 648 fluid.dataset help.mlpreg.predict; #X obj 326 855 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X text 346 852 store dataset into a text object; -#X text 514 917 <- double-click 'text' to see data, f 17; #X obj 326 880 fluid.ds2text help.mlpreg.predict help.mlpreg.predict.text , f 33; #X msg 470 422 predict help.mlpreg.query help.mlpreg.predict, f 29 @@ -250,6 +248,12 @@ f 31; #X obj 481 976 cnv 15 192 50 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; #X obj 483 1003 note_on_automatic_datasets; +#X obj 347 853 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 523 925 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 346 852 4) store dataset into a text object; +#X text 503 923 <- 5) double-click 'text' to see data, f 19; #X connect 4 0 5 0; #X connect 4 0 6 0; #X connect 4 0 7 0; @@ -259,11 +263,11 @@ f 31; #X connect 8 0 12 0; #X connect 9 0 13 0; #X connect 10 0 16 0; -#X connect 19 0 43 0; -#X connect 20 0 43 0; -#X connect 22 0 25 0; -#X connect 26 0 43 0; -#X connect 34 0 21 0; -#X connect 37 0 38 0; -#X connect 37 1 34 0; -#X connect 43 0 37 0; +#X connect 19 0 41 0; +#X connect 20 0 41 0; +#X connect 22 0 23 0; +#X connect 24 0 41 0; +#X connect 32 0 21 0; +#X connect 35 0 36 0; +#X connect 35 1 32 0; +#X connect 41 0 35 0; diff --git a/help/fluid.multiarray-help.pd b/help/fluid.multiarray-help.pd index 604e9a3..53b1895 100644 --- a/help/fluid.multiarray-help.pd +++ b/help/fluid.multiarray-help.pd @@ -1,4 +1,4 @@ -#N canvas 0 43 700 790 12; +#N canvas 82 79 700 790 12; #X obj 17 13 cnv 15 660 42 empty empty fluid.multiarray 1 22 0 36 #4ba3fb #ffffff 0; #X obj 509 60 fluid.referencelauncher fluid.multiarray.html reference/multiarray/ @@ -20,8 +20,7 @@ #X obj 245 508 array set; #X msg 245 443 1 1.1 1.2 1.3 1.4; #X obj 245 402 t b b, f 9; -#X text 25 426 list of values to store; -#X text 252 426 list of values to store; +#X text 25 424 list of values to store; #X msg 17 442 0 0.1 0.2 0.3 0.4; #X text 17 164 This abstraction allows the creation of multichannel arrays. Note that it requires invoking with the clone object to work. @@ -33,44 +32,55 @@ arrays. Note that it requires invoking with the clone object to work. #000000 #000000; #X obj 473 508 array set; #X obj 473 402 t b b, f 9; -#X text 482 426 list of values to store; #X msg 473 443 2 2.1 2.2 2.3 2.4; #X obj 23 233 clone fluid.multiarray 3 myArray 5; -#X msg 68 483 symbol myArray-0; -#X msg 296 484 symbol myArray-1; -#X msg 524 484 symbol myArray-2; +#X msg 81 481 symbol myArray-0; +#X msg 309 483 symbol myArray-1; +#X msg 540 476 symbol myArray-2; #X obj 473 605 array get myArray-2; #X obj 245 605 array get myArray-1; #X obj 17 605 array get myArray-0; -#X text 36 375 put values in channel 0; -#X text 264 376 put values in channel 1; -#X text 494 376 put values in channel 2; -#X text 36 574 see stored values channel 0; #X text 272 234 create 3-channel array of 5 elements 'myArray'; -#X text 263 573 see stored values in ch 1; -#X text 491 573 see stored values in ch 2; -#X obj 453 692 cnv 15 220 70 empty empty More\ information 4 10 0 13 -#e0e0e0 #404040 0; +#X obj 453 692 cnv 15 220 70 empty empty More\\\ information 4 10 0 +13 #e0e0e0 #404040 0; #X obj 461 713 note_on_multiarrays; #X obj 461 737 note_on_automatic_multiarrays; +#X obj 34 375 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 263 376 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 490 376 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 35 575 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 263 575 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 491 575 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 34 374 1) put values in channel 0; +#X text 263 375 2) put values in channel 1; +#X text 490 374 3) put values in channel 2; +#X text 36 574 4) see values in channel 0; +#X text 263 573 5) see values in ch 1; +#X text 491 573 6) see values in ch 2; #X connect 3 0 9 0; -#X connect 6 0 31 0; -#X connect 8 0 30 0; -#X connect 9 0 16 0; -#X connect 9 1 26 0; +#X connect 6 0 29 0; +#X connect 8 0 28 0; +#X connect 9 0 15 0; +#X connect 9 1 24 0; #X connect 10 0 13 0; #X connect 12 0 11 0; #X connect 13 0 12 0; -#X connect 13 1 27 0; -#X connect 16 0 4 0; -#X connect 19 0 29 0; -#X connect 20 0 22 0; -#X connect 22 0 24 0; -#X connect 22 1 28 0; -#X connect 24 0 21 0; -#X connect 26 0 4 2; -#X connect 27 0 11 2; -#X connect 28 0 21 2; -#X connect 29 0 18 0; -#X connect 30 0 7 0; -#X connect 31 0 5 0; +#X connect 13 1 25 0; +#X connect 15 0 4 0; +#X connect 18 0 27 0; +#X connect 19 0 21 0; +#X connect 21 0 22 0; +#X connect 21 1 26 0; +#X connect 22 0 20 0; +#X connect 24 0 4 2; +#X connect 25 0 11 2; +#X connect 26 0 20 2; +#X connect 27 0 17 0; +#X connect 28 0 7 0; +#X connect 29 0 5 0; diff --git a/help/fluid.nmfmatch~-help.pd b/help/fluid.nmfmatch~-help.pd index f76cc44..748c216 100644 --- a/help/fluid.nmfmatch~-help.pd +++ b/help/fluid.nmfmatch~-help.pd @@ -74,7 +74,7 @@ component, f 33; #X obj 19 705 fluid.out~ nmfmatchhelp; #X obj 470 805 cnv 15 207 88 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; -#N canvas 187 74 695 855 detecting_knowns 0; +#N canvas 187 74 695 841 detecting_knowns 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.nmfmatch~ 1 22 0 36 #4ba3fb #ffffff 0; #X text 18 88 Helping fluid.nmfmatch~ discover known "features" by @@ -151,7 +151,7 @@ state \, the contents of the decomposition will be vaguely similar #X connect 26 0 27 0; #X connect 26 1 28 0; #X restore 473 825 pd detecting_knowns; -#N canvas 283 88 703 816 controlling_a_comb_filter 0; +#N canvas 283 88 703 810 controlling_a_comb_filter 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.nmfmatch~ 1 22 0 36 #4ba3fb #ffffff 0; #X text 18 88 control a compressor based on learned components, f @@ -331,7 +331,7 @@ is being used to drive the delay time of the comb filter, f 41; #X connect 26 0 27 1; #X connect 28 0 25 0; #X restore 473 847 pd controlling_a_comb_filter; -#N canvas 876 23 785 861 resonant_filters 0; +#N canvas 157 84 693 798 resonant_filters 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.nmfmatch~ 1 22 0 36 #4ba3fb #ffffff 0; #X text 18 88 Make a filter bank from learned components, f 69; @@ -350,7 +350,6 @@ is being used to drive the delay time of the comb filter, f 41; #X obj 17 743 fluid.out~ nmfmatchhelp; #X obj 36 433 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 0; -#X text 36 432 2) play the source; #X msg 16 197 read -resize media/Tremblay-CEL-GlitchyMusicBoxMelo.wav help.nmfmatch.src.4, f 37; #X obj 17 453 tabplay~ help.nmfmatch.src.4; @@ -375,8 +374,8 @@ help.nmfmatch.src.4, f 37; #X obj 96 384 s help.nmfmatch.componentcentroids; #X obj 446 514 s help.nmfmatch.componentcentroids; #X obj 107 497 fluid.nmfmatch~ 8 -bases help.nmfmatch.bases.4; -#X obj 383 118 clone fluid.multiarray 2 help.nmfmatch.resynth.4; -#X obj 383 140 clone fluid.multiarray 2 help.nmfmatch.bases.4; +#X obj 331 726 clone fluid.multiarray 2 help.nmfmatch.resynth.4; +#X obj 331 748 clone fluid.multiarray 2 help.nmfmatch.bases.4; #X obj 101 587 clone fluid.nmfmatch.polyfilter 8; #N canvas 63 101 338 195 sum 0; #X obj 54 39 inlet~; @@ -389,19 +388,20 @@ help.nmfmatch.src.4, f 37; #X restore 17 687 pd sum; #X f 12; #X obj 107 521 fluid.stats 8 -history 5; -#X connect 6 0 11 0; -#X connect 7 0 12 0; -#X connect 11 0 3 0; -#X connect 12 0 20 0; -#X connect 12 0 23 0; -#X connect 12 0 24 0; -#X connect 14 0 16 0; +#X text 36 432 3) play the source; +#X connect 6 0 10 0; +#X connect 7 0 11 0; +#X connect 10 0 3 0; +#X connect 11 0 19 0; +#X connect 11 0 22 0; +#X connect 11 0 23 0; +#X connect 13 0 15 0; +#X connect 15 0 16 0; #X connect 16 0 17 0; -#X connect 17 0 18 0; -#X connect 20 0 25 0; -#X connect 23 0 24 1; -#X connect 24 0 8 0; -#X connect 24 0 8 1; +#X connect 19 0 24 0; +#X connect 22 0 23 1; +#X connect 23 0 8 0; +#X connect 23 0 8 1; #X restore 473 869 pd resonant_filters; #N canvas 0 22 450 278 (subpatch) 0; #X array help.nmfmatch.src.1 88200 float 0; @@ -492,6 +492,9 @@ with bufnmf~, f 74; #X obj 19 367 fluid.bufnmf -source help.nmfmatch.src.1 -bases nmfmatch_bases -components 2, f 72; #X obj 144 624 fluid.nmfmatch~ 2 -bases nmfmatch_bases; +#X obj 128 543 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 129 542 3) pick the audio source to identify, f 24; #X connect 3 0 35 0; #X connect 4 0 6 0; #X connect 5 0 8 0; diff --git a/help/fluid.nmfmorph~-help.pd b/help/fluid.nmfmorph~-help.pd index d69c5fb..423bcfe 100644 --- a/help/fluid.nmfmorph~-help.pd +++ b/help/fluid.nmfmorph~-help.pd @@ -34,9 +34,9 @@ help.morph.src.2, f 37; #X obj 37 177 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; #X text 57 176 1) load sounds; -#X obj 126 612 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 #fcfcfc +#X obj 70 570 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1; -#X obj 123 586 cnv 15 75 17 empty empty Interpolate 3 12 1 14 #dfdfdf +#X obj 67 544 cnv 15 75 17 empty empty Interpolate 3 12 1 14 #dfdfdf #0400ff 0; #X floatatom 370 313 5 0 0 0 - - - 0; #X floatatom 370 392 5 0 0 0 - - - 0; @@ -59,16 +59,26 @@ sounds decompose their material into a selectable number of components -activations help.morph.act.2 -components 5 -blocking 0, f 48; #X obj 37 681 fluid.nmfmorph~ -source help.morph.bases.1 -target help.morph.bases.2 -activations help.morph.act.1; -#X msg 123 634 interpolation \$1; +#X msg 67 592 interpolation \$1; #X text 404 680 note: to trigger mapping changes \, change autoassign. , f 29; -#X msg 51 553 activations help.morph.act.2 \, interpolation 0 \, autoassign +#X msg 126 650 activations help.morph.act.2 \, interpolation 0 \, autoassign 0; -#X text 39 471 set the temporal shape to the drums; -#X text 53 531 set temporal shape to the piano; -#X obj 526 793 cnv 15 149 50 empty empty More\ information 4 10 0 13 -#e0e0e0 #404040 0; +#X obj 526 793 cnv 15 149 50 empty empty More\\\ information 4 10 0 +13 #e0e0e0 #404040 0; #X obj 534 817 note_on_multiarrays; +#X obj 59 238 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 38 472 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 147 545 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 59 238 2) decompose each sound in 2 bases via bufnmf; +#X text 148 544 5) play with the interpolation ratio; +#X text 39 471 3) set the temporal shape to the drums; +#X obj 130 629 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 131 628 6) try setting the temporal shape to the piano's; #X connect 3 0 24 0; #X connect 4 0 26 0; #X connect 5 0 7 0; diff --git a/help/fluid.noveltyfeature~-help.pd b/help/fluid.noveltyfeature~-help.pd index 4ed90d0..ffd610e 100644 --- a/help/fluid.noveltyfeature~-help.pd +++ b/help/fluid.noveltyfeature~-help.pd @@ -1,4 +1,4 @@ -#N canvas 126 23 700 777 12; +#N canvas 126 23 693 777 12; #X obj 17 13 cnv 15 660 42 empty empty fluid.noveltyfeature~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 23 149 fluid.demosound~; @@ -154,10 +154,21 @@ curve, f 29; #X text 601 374 <-- more; #X obj 53 400 fluid.noveltyslice~ 21 5; #X obj 315 425 fluid.noveltyfeature~ 21 5 -warnings 1; -#X text 23 734 This represents the change in the underlying feature -of fluid.noveltyslice~ in realtime., f 44; #X text 373 447 arguments (optional) set the maxkernelsize and maxfiltersize , f 31; +#X obj 27 128 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 28 127 1) pick a source and start playing; +#X obj 96 525 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 97 524 2) Audio on.; +#X obj 563 266 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 564 265 4) explore the parameters, f 14; +#X obj 30 731 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 31 730 3) This represents the change in the underlying feature +of fluid.noveltyslice~ in realtime.; #X connect 1 0 10 0; #X connect 1 0 14 0; #X connect 1 0 15 0; diff --git a/help/fluid.noveltyslice~-help.pd b/help/fluid.noveltyslice~-help.pd index 3515338..0ded505 100644 --- a/help/fluid.noveltyslice~-help.pd +++ b/help/fluid.noveltyslice~-help.pd @@ -28,9 +28,6 @@ in the signal to estimate the slicing points.; #X obj 259 367 fluid.noveltyslice~ -threshold 0.01 -fftsettings 128 -kernelsize 31, f 23; -#X text 26 798 Once latency compensated with the delay~ above the detection -is always at the beginning of the spectral frame in which it appears. -Change the window size above to explore the changes., f 62; #N canvas 1257 -1048 732 932 parameters 0; #X floatatom 499 191 8 0 0 0 - - - 0; #X floatatom 29 549 8 0 0 0 - - - 0; @@ -138,9 +135,7 @@ Change the window size above to explore the changes., f 62; #X connect 56 0 53 0; #X connect 57 0 52 0; #X restore 453 310 pd parameters; -#X text 452 260 2) experiment with parameters, f 15; #X msg 259 158 \; pd dsp 1; -#X text 333 156 1) turn DSP on; #X obj 18 367 delwrite~ \$0-latencycomp 200; #X obj 527 799 cnv 15 149 50 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; @@ -254,7 +249,6 @@ Change the window size above to explore the changes., f 62; #X connect 56 0 53 0; #X connect 57 0 52 0; #X restore 229 385 pd parameters; -#X text 228 367 2) experiment with parameters; #X obj 195 422 fluid.noveltyslice~ -threshold 0.2 -kernelsize 31 -filtersize 3, f 21; #X obj 357 423 r pd-dsp-started; @@ -272,23 +266,44 @@ Change the window size above to explore the changes., f 62; #X obj 208 576 bng 15 250 50 0 empty empty empty 17 7 0 10 #ffe3c6 #000000 #000000; #X obj 208 545 threshold~ 0.5 1 0.1 1; -#X connect 0 0 9 0; +#X obj 17 127 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 19 125 1) select a source and start playing; +#X obj 228 367 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 229 365 3) experiment with parameters; +#X obj 92 650 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 93 648 2) Audio on.; +#X connect 0 0 8 0; #X connect 1 0 0 0; -#X connect 2 0 4 0; -#X connect 4 0 10 1; -#X connect 4 0 16 0; -#X connect 4 1 1 0; -#X connect 4 1 14 0; -#X connect 5 0 6 0; -#X connect 6 0 1 1; -#X connect 7 0 4 0; -#X connect 7 0 8 0; -#X connect 9 0 10 0; -#X connect 16 0 15 0; +#X connect 2 0 3 0; +#X connect 3 0 9 1; +#X connect 3 0 15 0; +#X connect 3 1 1 0; +#X connect 3 1 13 0; +#X connect 4 0 5 0; +#X connect 5 0 1 1; +#X connect 6 0 3 0; +#X connect 6 0 7 0; +#X connect 8 0 9 0; +#X connect 15 0 14 0; #X restore 535 824 pd musical_example; +#X obj 332 159 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 453 262 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 333 156 1) turn DSP on; +#X text 452 260 3) experiment with parameters, f 15; +#X obj 25 805 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 26 804 2) Once latency compensated with the delay~ above the +detection is always at the beginning of the spectral frame in which +it appears. Change the window size above to explore the changes., +f 62; #X connect 0 0 2 0; #X connect 1 0 23 0; -#X connect 1 0 29 0; +#X connect 1 0 26 0; #X connect 2 0 1 0; #X connect 3 0 16 1; #X connect 4 0 6 0; @@ -308,4 +323,4 @@ Change the window size above to explore the changes., f 62; #X connect 17 0 14 0; #X connect 23 0 14 1; #X connect 23 1 8 0; -#X connect 25 0 23 0; +#X connect 24 0 23 0; diff --git a/help/fluid.onsetfeature~-help.pd b/help/fluid.onsetfeature~-help.pd index 5a6cbaa..35fb515 100644 --- a/help/fluid.onsetfeature~-help.pd +++ b/help/fluid.onsetfeature~-help.pd @@ -1,4 +1,4 @@ -#N canvas 162 69 701 699 12; +#N canvas 162 69 694 699 12; #X obj 17 13 cnv 15 660 42 empty empty fluid.onsetfeature~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 20 149 fluid.demosound~; @@ -19,8 +19,6 @@ #X obj 278 435 t f b, f 16; #X obj 20 458 fluid.out~ onsetfeaturehelp; #X obj 278 489 array set help.onsetfeature.view; -#X text 491 529 This represents the change in the underlying feature -of fluid.onsetslice~ in realtime., f 21; #N canvas 1001 23 854 529 parameters 0; #X floatatom 185 148 8 0 0 0 - - - 0; #X floatatom 185 127 8 0 0 0 - - - 0; @@ -161,6 +159,19 @@ FFT size is, f 25; #X connect 45 0 34 0; #X connect 46 0 0 0; #X restore 413 367 pd parameters; +#X obj 27 128 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 27 127 1) pick a sound source and start playing.; +#X obj 91 463 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 91 462 2) Audio on.; +#X obj 487 258 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 487 257 4) Explore the parameters; +#X obj 492 541 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 491 539 3) This represents the change in the underlying feature +of fluid.onsetslice~ in realtime., f 20; #X connect 1 0 5 0; #X connect 1 0 6 0; #X connect 1 0 11 0; @@ -171,6 +182,6 @@ FFT size is, f 25; #X connect 9 0 8 1; #X connect 10 0 12 0; #X connect 10 1 8 0; -#X connect 14 0 5 0; -#X connect 14 1 6 0; -#X connect 16 0 6 0; +#X connect 13 0 5 0; +#X connect 13 1 6 0; +#X connect 15 0 6 0; diff --git a/help/fluid.onsetslice~-help.pd b/help/fluid.onsetslice~-help.pd index 5f1b88f..6c33e9a 100644 --- a/help/fluid.onsetslice~-help.pd +++ b/help/fluid.onsetslice~-help.pd @@ -340,13 +340,13 @@ src5; #X connect 162 0 149 0; #X connect 163 0 149 0; #X coords 0 -1 1 1 470 170 1 100 100; -#X restore 19 163 pd guts; +#X restore 19 175 pd guts; #X obj 17 13 cnv 15 660 42 empty empty fluid.onsetslice~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 17 60 cnv 15 488 17 empty empty Try\\\ different\\\ combinations\\\ of\\\ algorithms 4 8 0 13 #e0e0e0 #404040 0; #X text 19 98 Different onset detection metrics will be more or less -effective on different types of material; +effective on different types of material, f 86; #X text 498 185 Some curated options from the fluid decomposition example files \, and metrics for which we got acceptable results., f 25; #N canvas 291 -981 1698 892 parameters 0; @@ -422,6 +422,12 @@ files \, and metrics for which we got acceptable results., f 25; #X obj 234 762 bng 15 250 50 0 empty empty empty 17 7 0 10 #ffe3c6 #000000 #000000; #X obj 234 731 threshold~ 0.5 1 0.1 1; +#X obj 21 147 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 22 145 1) pick a preset and observe the changes below; +#X obj 97 848 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 98 846 2) Audio on.; #X connect 0 0 13 0; #X connect 1 0 0 0; #X connect 2 0 5 1; diff --git a/help/fluid.pca-help.pd b/help/fluid.pca-help.pd index 71f60f8..e08dc92 100644 --- a/help/fluid.pca-help.pd +++ b/help/fluid.pca-help.pd @@ -1,14 +1,15 @@ -#N struct 1476-rectangle float x float c; -#N struct 1476-pixel float x0 float y0 float x1 float y1; -#N struct 1486-rectangle float x float c; -#N struct 1486-pixel float x0 float y0 float x1 float y1; -#N struct 1488-rectangle float x float c; -#N struct 1488-pixel float x0 float y0 float x1 float y1; +#N struct 5743-draw-item float x float y float c float a float b; +#N struct 5744-rectangle float x float c; +#N struct 5744-pixel float x0 float y0 float x1 float y1; +#N struct 5754-rectangle float x float c; +#N struct 5754-pixel float x0 float y0 float x1 float y1; +#N struct 5756-rectangle float x float c; +#N struct 5756-pixel float x0 float y0 float x1 float y1; #N canvas 65 69 701 910 12; #X obj 17 13 cnv 15 660 42 empty empty fluid.pca 1 22 0 36 #4ba3fb #ffffff 0; -#X obj 474 804 cnv 15 198 68 empty empty More\ information 4 10 0 13 -#e0e0e0 #404040 0; +#X obj 474 804 cnv 15 198 68 empty empty More\\\ information 4 10 0 +13 #e0e0e0 #404040 0; #X obj 509 60 fluid.referencelauncher fluid.pca.html reference/pca/ ; #X text 17 79 Principal Component Analysis; @@ -290,8 +291,8 @@ a perceptually meaningful space., f 55; #X text 378 245 4) store dataset into a text object; #X obj 530 720 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 0; -#X text 531 719 6) switch on audio and browse the plotter, f 19; #X obj 480 848 note_on_automatic_datasets; +#X text 531 719 5) switch on audio and browse the plotter, f 19; #X connect 6 0 7 0; #X connect 8 0 9 0; #X connect 9 0 14 0; diff --git a/help/fluid.pitch~-help.pd b/help/fluid.pitch~-help.pd index 777d4d7..c8de3f4 100644 --- a/help/fluid.pitch~-help.pd +++ b/help/fluid.pitch~-help.pd @@ -1,5 +1,5 @@ -#N canvas 94 132 702 810 12; -#X obj 342 371 osc~ 220; +#N canvas 51 57 694 728 12; +#X obj 118 187 osc~ 220; #N canvas 0 38 450 300 triangle 0; #X obj 37 47 inlet; #X obj 37 67 phasor~ 220; @@ -14,7 +14,7 @@ #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 6 0; -#X restore 375 393 pd triangle; +#X restore 151 209 pd triangle; #N canvas 0 38 450 300 sawtooth 0; #X obj 37 37 inlet; #X obj 37 79 phasor~ 220; @@ -25,7 +25,7 @@ #X connect 1 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 0; -#X restore 407 415 pd sawtooth; +#X restore 183 231 pd sawtooth; #N canvas 0 38 450 300 square 0; #X obj 37 37 inlet; #X obj 37 64 phasor~ 220; @@ -41,14 +41,14 @@ #X connect 3 0 4 0; #X connect 4 0 2 1; #X connect 5 0 6 0; -#X restore 440 437 pd square; -#X floatatom 180 263 5 0 0 0 - - - 0; -#X obj 155 660 unpack f f; -#X floatatom 155 696 8 0 0 0 - - - 0; -#X floatatom 222 722 5 0 0 0 - - - 0; -#X text 109 696 pitch, f 6; -#X text 141 722 confidence, f 11; -#X obj 155 636 fluid.pitch~; +#X restore 216 253 pd square; +#X floatatom 340 341 5 0 0 0 - - - 0; +#X obj 127 529 unpack f f; +#X floatatom 127 565 8 0 0 0 - - - 0; +#X floatatom 194 591 5 0 0 0 - - - 0; +#X text 81 565 pitch, f 6; +#X text 113 591 confidence, f 11; +#X obj 127 505 fluid.pitch~; #X obj 17 13 cnv 15 660 42 empty empty fluid.pitch~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 509 60 fluid.referencelauncher fluid.pitch~.html reference/pitch/ @@ -57,13 +57,13 @@ 4 8 0 13 #e0e0e0 #404040 0; #X text 17 79 Three popular monophonic pitch descriptors \, all of which compute frequency and confidence.; -#X obj 63 660 fluid.out~ fluid.pitchhelp; -#X obj 310 372 vradio 15 1 0 4 empty empty empty 0 -8 0 10 #fcfcfc -#000000 #000000 0; -#X text 243 385 triangle, f 9; -#X text 271 370 sine, f 5; -#X text 243 400 sawtooth, f 9; -#X text 236 415 rectangle, f 10; +#X obj 28 691 fluid.out~ fluid.pitchhelp; +#X obj 86 188 vradio 15 1 0 4 empty empty empty 0 -8 0 10 #fcfcfc #000000 +#000000 0; +#X text 19 201 triangle, f 9; +#X text 47 186 sine, f 5; +#X text 19 216 sawtooth, f 9; +#X text 12 231 rectangle, f 10; #N canvas 925 -954 652 467 select4 0; #X obj 94 49 inlet~; #X obj 34 192 == 0; @@ -121,12 +121,11 @@ which compute frequency and confidence.; #X connect 24 0 6 0; #X connect 25 0 10 0; #X connect 26 0 14 0; -#X restore 310 459 pd select4; +#X restore 86 275 pd select4; #X f 19; -#X text 19 186 All algorithms use harmonic structure to fine-tune the -pitch \, so will not be as effective on sines as on \, say \, sawtooth -waves \, with triangle inbetween.; -#X obj 85 292 *~ 0.1, f 14; +#X text 417 480 All algorithms use harmonic structure to fine-tune +the pitch \, so will not be as effective on sines as on \, say \, sawtooth +waves \, with triangle inbetween., f 30; #N canvas 897 -937 461 267 pinknoise 0; #X obj 24 145 outlet~; #X obj 24 43 noise~; @@ -142,15 +141,15 @@ accurate than ~pink but more expensive too!, f 65; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 5 0 0 0; -#X restore 85 263 pd pinknoise; -#X obj 85 515 +~; -#X obj 92 636 *~ 0.1; -#X obj 265 636 fiddle~; -#X floatatom 295 721 8 0 0 0 - - - 0; -#X obj 295 685 mtof; -#X text 291 738 compare with PD's fiddle object in noisy contexts. +#X restore 245 341 pd pinknoise; +#X obj 57 433 +~; +#X obj 57 667 *~ 0.1; +#X obj 237 505 fiddle~; +#X floatatom 267 590 8 0 0 0 - - - 0; +#X obj 267 554 mtof; +#X text 263 607 compare with PD's fiddle object in noisy contexts. , f 21; -#X obj 295 661 unpack 0 0; +#X obj 267 530 unpack 0 0; #N canvas 423 215 550 822 parameters 0; #X floatatom 29 499 8 0 0 0 - - - 0; #X floatatom 29 259 8 0 0 0 - - - 0; @@ -234,11 +233,11 @@ more precise results., f 37; #X connect 43 0 27 0; #X connect 44 0 43 0; #X connect 47 0 44 0; -#X restore 249 523 pd parameters; -#X text 351 522 see fluid.pitch~ parameters; -#X obj 523 738 cnv 15 149 50 empty empty More\\\ information 4 10 0 +#X restore 221 441 pd parameters; +#X text 323 440 see fluid.pitch~ parameters; +#X obj 524 653 cnv 15 149 50 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; -#N canvas 393 43 695 975 confidence 0; +#N canvas 230 112 695 931 confidence 0; #X obj 20 398 readsf~; #X obj 20 537 delwrite~ \$0-latencycomp 1000, f 20; #X obj 373 387 r pd-dsp-started; @@ -330,7 +329,6 @@ gets sent to a delay effect, f 64; #X floatatom 362 513 5 0 0 0 - - - 0; #X obj 556 188 loadbang; #X floatatom 236 604 5 0 0 0 - - - 0; -#X text 20 163 1)click to start playing a file; #X text 355 594 only on when pitch confidence is above thresh, f 24 ; #X floatatom 432 535 5 0 0 0 - - - 0; @@ -347,6 +345,13 @@ threshold 0.98, f 52; threshold 0.8, f 52; #X obj 432 510 r threshold; #X msg 556 210 \; threshold 0.98; +#X obj 18 156 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 18 155 1) click any of these 'presets' to start playing a file +with an associated threshold of confidence to send to the delays; +#X obj 92 890 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 94 889 2) Audio on.; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 2 0 3 0; @@ -355,7 +360,7 @@ threshold 0.8, f 52; #X connect 4 0 15 0; #X connect 4 0 15 1; #X connect 4 0 7 0; -#X connect 5 0 24 0; +#X connect 5 0 23 0; #X connect 5 1 18 0; #X connect 6 0 7 1; #X connect 7 0 8 0; @@ -366,35 +371,46 @@ threshold 0.8, f 52; #X connect 12 0 6 0; #X connect 17 0 4 0; #X connect 18 0 17 0; -#X connect 19 0 31 0; -#X connect 23 0 24 2; -#X connect 24 0 9 0; -#X connect 24 0 20 0; +#X connect 19 0 30 0; +#X connect 22 0 23 2; +#X connect 23 0 9 0; +#X connect 23 0 20 0; +#X connect 24 0 0 0; #X connect 25 0 0 0; #X connect 26 0 0 0; #X connect 27 0 0 0; #X connect 28 0 0 0; -#X connect 29 0 0 0; -#X connect 30 0 23 0; -#X restore 536 763 pd confidence; +#X connect 29 0 22 0; +#X restore 537 678 pd confidence; +#X obj 87 167 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 89 166 1) Pick a source; +#X obj 384 342 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 245 370 *~ 0, f 14; +#X text 386 341 3) Add noise to test the sturdiness of the detection +, f 27; +#X obj 97 699 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 99 698 2) Audio on.; #X connect 0 0 21 1; #X connect 1 0 21 2; #X connect 2 0 21 3; #X connect 3 0 21 4; -#X connect 4 0 23 1; +#X connect 4 0 38 1; #X connect 5 0 6 0; #X connect 5 1 7 0; #X connect 10 0 5 0; #X connect 16 0 21 0; -#X connect 21 0 25 1; -#X connect 23 0 25 0; -#X connect 24 0 23 0; -#X connect 25 0 26 0; -#X connect 25 0 27 0; -#X connect 25 0 10 0; -#X connect 26 0 15 0; -#X connect 26 0 15 1; -#X connect 27 2 31 0; -#X connect 29 0 28 0; -#X connect 31 0 29 0; -#X connect 32 0 10 0; +#X connect 21 0 24 0; +#X connect 23 0 38 0; +#X connect 24 0 25 0; +#X connect 24 0 26 0; +#X connect 24 0 10 0; +#X connect 25 0 15 0; +#X connect 25 0 15 1; +#X connect 26 2 30 0; +#X connect 28 0 27 0; +#X connect 30 0 28 0; +#X connect 31 0 10 0; +#X connect 38 0 24 1; diff --git a/help/fluid.plotter-help.pd b/help/fluid.plotter-help.pd index f9ea0f6..119fa10 100644 --- a/help/fluid.plotter-help.pd +++ b/help/fluid.plotter-help.pd @@ -1,12 +1,12 @@ -#N struct 1036-rectangle float x float c; -#N struct 1036-pixel float x0 float y0 float x1 float y1; -#N struct 1040-rectangle float x float c; -#N struct 1040-pixel float x0 float y0 float x1 float y1; -#N struct 1043-rectangle float x float c; -#N struct 1043-pixel float x0 float y0 float x1 float y1; -#N struct 1047-rectangle float x float c; -#N struct 1047-pixel float x0 float y0 float x1 float y1; -#N canvas 66 73 697 762 12; +#N struct 1346-rectangle float x float c; +#N struct 1346-pixel float x0 float y0 float x1 float y1; +#N struct 1350-rectangle float x float c; +#N struct 1350-pixel float x0 float y0 float x1 float y1; +#N struct 1353-rectangle float x float c; +#N struct 1353-pixel float x0 float y0 float x1 float y1; +#N struct 1357-rectangle float x float c; +#N struct 1357-pixel float x0 float y0 float x1 float y1; +#N canvas 93 70 697 762 12; #X obj 18 19 cnv 15 660 42 empty empty fluid.plotter 1 22 0 36 #4ba3fb #ffffff 0; #X obj 510 66 fluid.referencelauncher fluid.plotter.html reference/plotter/ @@ -18,7 +18,6 @@ #X obj 27 386 fluid.plotter; #X text 18 85 A native GUI to plot and query datasets in two-dimension ; -#X text 20 156 1) Select a prefab dataset, f 27; #X msg 22 182 line; #X msg 22 227 read data/\$1.json; #X obj 22 205 symbol; @@ -32,8 +31,6 @@ #X msg 105 182 circles; #X msg 166 182 blobs; #X msg 214 182 gaussian4; -#X text 50 300 2) Transfer the dataset to a text object \, whose name -is passed on with the setpoint message, f 47; #X obj 393 185 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; #N canvas 199 508 450 300 clustering 0; @@ -50,8 +47,7 @@ is passed on with the setpoint message, f 47; ; #X obj 28 722 text define help.plotting.classes.1.txt; #X msg 345 484 setlabels help.plotting.classes.1.txt; -#X text 370 164 3) Cluster the points; -#N canvas 325 173 698 764 range 0; +#N canvas 271 146 698 764 range 0; #X obj 18 19 cnv 15 660 42 empty empty fluid.plotter 1 22 0 36 #4ba3fb #ffffff 0; #X obj 18 66 cnv 15 488 17 empty empty Plot\\\ data\\\ in\\\ a\\\ two-dimensional\\\ graph. @@ -87,9 +83,6 @@ is passed on with the setpoint message, f 47; #X obj 25 157 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; #X msg 57 219 print; -#X text 129 157 1) Generate a random set of points that are not normal. -In this case the horizontal values range between 0 and 10000 and the -vertical values between 40 and 600; #X obj 28 434 fluid.plotter; #X obj 28 288 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; @@ -104,7 +97,6 @@ vertical values between 40 and 600; #X connect 3 0 4 0; #X restore 28 308 pd dump_and_draw; #X obj 27 250 fluid.dataset help.plotter.2; -#X text 58 287 2) Draw - all bunched up in the top right corner; #X floatatom 374 340 5 0 0 0 - - - 0; #X floatatom 414 340 5 0 0 0 - - - 0; #X obj 414 361 t b f; @@ -118,28 +110,38 @@ vertical values between 40 and 600; #X msg 373 589 range \$1 \$2; #X text 370 611 this would set both x and y at the same time, f 15 ; -#X text 370 318 3) Change the range of each dimension; #X text 18 85 By default \, the range of the fluid.plotter is between 0 and 1 for both the X and Y axis. You can modify the displayed range of the plotter with two messages \, xrange and yrange. Each message accepts two values \, the minimum and maximum for each., f 91; -#X connect 2 0 9 0; +#X obj 129 158 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 59 287 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 372 319 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 129 157 1) Generate a random set of points that are not normal. +In this case the horizontal values range between 0 and 10000 and the +vertical values between 40 and 600; +#X text 58 287 2) Draw - all bunched up in the top right corner; +#X text 370 318 3) Change the range of each dimension; +#X connect 2 0 8 0; #X connect 3 0 2 0; -#X connect 4 0 9 0; -#X connect 7 0 8 0; -#X connect 8 0 6 0; -#X connect 11 0 14 0; +#X connect 4 0 8 0; +#X connect 6 0 7 0; +#X connect 7 0 5 0; +#X connect 9 0 12 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 11 1 12 1; #X connect 12 0 13 0; -#X connect 13 0 14 0; -#X connect 13 1 14 1; -#X connect 14 0 15 0; -#X connect 15 0 6 0; -#X connect 16 0 19 0; +#X connect 13 0 5 0; +#X connect 14 0 17 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 16 1 17 1; #X connect 17 0 18 0; -#X connect 18 0 19 0; -#X connect 18 1 19 1; -#X connect 19 0 20 0; -#X connect 20 0 6 0; +#X connect 18 0 5 0; #X restore 534 669 pd range; #N canvas 642 23 693 899 querying 0; #X obj 18 19 cnv 15 660 42 empty empty fluid.plotter 1 22 0 36 #4ba3fb @@ -211,10 +213,6 @@ accepts two values \, the minimum and maximum for each., f 91; #X msg 17 760 highlight \$1; #X obj 17 858 s help.plotter.3.plotter; #X obj 35 284 r help.plotter.3.plotter; -#X text 328 411 2) Move your moise over the plotter; -#X text 177 617 3) These are the coordinates of your mouse inside the -two-dimensional space according to the ranges which have been set by -xrange and yrange.; #N canvas 215 258 1090 890 querying 0; #X obj 37 37 inlet; #X obj 70 130 array set help.plotter.3.query; @@ -236,11 +234,25 @@ patch, f 62; #X connect 7 0 4 0; #X connect 7 1 1 0; #X restore 17 683 pd querying; +#X text 436 826 can be sent at once; +#X obj 46 110 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 329 413 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 177 618 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 38 723 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 293 776 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 328 411 2) Move your moise over the plotter; +#X text 177 617 3) These are the coordinates of your mouse inside the +two-dimensional space according to the ranges which have been set by +xrange and yrange.; #X text 36 722 4) the highlight message \, followed by identifiers \, will make these points bigger, f 42; -#X text 291 774 5) sending nothing deselects \, and multiple points +#X text 293 775 5) sending nothing deselects \, and multiple points ; -#X text 462 795 can be sent at once; #X text 46 108 1) Generate random data and cluster it. Also \, fit a kdtree so we can query for the closest point., f 73; #X connect 2 0 3 0; @@ -248,7 +260,7 @@ a kdtree so we can query for the closest point., f 73; #X connect 3 1 9 0; #X connect 3 2 8 0; #X connect 4 0 14 0; -#X connect 4 0 20 0; +#X connect 4 0 18 0; #X connect 5 0 16 0; #X connect 6 0 16 0; #X connect 7 0 16 0; @@ -259,7 +271,7 @@ a kdtree so we can query for the closest point., f 73; #X connect 13 0 4 1; #X connect 15 0 16 0; #X connect 17 0 4 0; -#X connect 20 0 15 0; +#X connect 18 0 15 0; #X restore 534 691 pd querying; #N canvas 0 23 699 669 advanced 0; #X obj 18 19 cnv 15 660 42 empty empty fluid.plotter 1 22 0 36 #4ba3fb @@ -268,13 +280,8 @@ a kdtree so we can query for the closest point., f 73; 4 8 0 13 #e0e0e0 #404040 0; #X text 18 85 Drawing through the "advanced" interface lets you be more draw at a lower level., f 80; -#X text 392 233 Set the size of each point. Format is: -, f 28; -#X text 79 236 Set the pointcolor of each point. Format is: -, f 33; #X obj 23 122 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X text 46 120 1) Generate random data., f 73; #N canvas 536 104 729 496 random_coordinates 0; #X obj 49 158 until; #X obj 49 186 f; @@ -307,9 +314,6 @@ more draw at a lower level., f 80; #X connect 11 0 9 2; #X restore 23 170 pd random_coordinates; #X obj 23 342 fluid.plotter; -#X text 180 166 You don't need a fluid.dataset~ necessarily. Using -the setpoint message you can create a plot point by point. Format is - , f 71; #N canvas 536 104 1084 911 random_color 0; #X obj 49 158 until; #X obj 49 186 f; @@ -373,30 +377,56 @@ the setpoint message you can create a plot point by point. Format is #X connect 11 0 10 1; #X restore 364 283 pd random_size; #X msg 364 306 pointsize \$1 \$2; -#X connect 5 0 7 0; -#X connect 7 0 13 0; +#X obj 47 121 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 79 236 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 395 235 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 46 120 1) Generate random data., f 73; +#X text 180 166 You don't need a fluid.dataset~ necessarily. Using +the setpoint message you can create a plot point by point. Format is + , f 71; +#X text 81 234 2) Set the pointcolor of each point. Format is: +, f 36; +#X text 393 233 3) Set the size of each point. Format is: +, f 31; +#X connect 3 0 4 0; +#X connect 4 0 9 0; +#X connect 6 0 7 0; +#X connect 7 0 5 0; +#X connect 8 0 6 0; +#X connect 9 0 5 0; #X connect 10 0 11 0; -#X connect 11 0 8 0; -#X connect 12 0 10 0; -#X connect 13 0 8 0; -#X connect 14 0 15 0; -#X connect 15 0 16 0; -#X connect 16 0 8 0; +#X connect 11 0 12 0; +#X connect 12 0 5 0; #X restore 534 713 pd advanced; +#X obj 19 157 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 49 300 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 366 395 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 371 167 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 20 156 1) Select a prefab dataset, f 27; +#X text 49 298 2) Transfer the dataset to a text object \, whose name +is passed on with the setpoint message, f 47; +#X text 371 166 3) Cluster the points; #X text 365 393 4) Transfer the labelset to a text object \, whose name is passed on with the setlabels message in the right inlet, f 42; -#X connect 7 0 9 0; -#X connect 8 0 11 0; -#X connect 9 0 8 0; -#X connect 12 0 13 0; -#X connect 13 0 4 0; -#X connect 14 0 12 0; -#X connect 15 0 9 0; -#X connect 16 0 9 0; -#X connect 17 0 9 0; -#X connect 18 0 9 0; +#X connect 6 0 8 0; +#X connect 7 0 10 0; +#X connect 8 0 7 0; +#X connect 11 0 12 0; +#X connect 12 0 4 0; +#X connect 13 0 11 0; +#X connect 14 0 8 0; +#X connect 15 0 8 0; +#X connect 16 0 8 0; +#X connect 17 0 8 0; +#X connect 18 0 19 0; #X connect 20 0 21 0; -#X connect 22 0 23 0; -#X connect 23 0 25 0; -#X connect 25 0 4 1; +#X connect 21 0 23 0; +#X connect 23 0 4 1; diff --git a/help/fluid.s2f-help.pd b/help/fluid.s2f-help.pd index 8477754..ea78ca8 100644 --- a/help/fluid.s2f-help.pd +++ b/help/fluid.s2f-help.pd @@ -1,4 +1,4 @@ -#N canvas 109 98 685 348 12; +#N canvas 109 126 692 348 12; #X obj 17 13 cnv 15 660 42 empty empty fluid.s2f 1 22 0 36 #4ba3fb #ffffff 0; #X obj 17 60 cnv 15 488 17 empty empty Convert\\\ a\\\ symbol\\\ into\\\ a\\\ float @@ -10,7 +10,7 @@ ("string") and output it as a float.; #X msg 147 228 symbol "1"; #X msg 232 228 symbol "123456789.012345"; -#X text 213 270 Note that the symbol needs to be enclosed in double +#X text 94 264 Note that the symbol needs to be enclosed in double quotes for s2f to work., f 30; #X obj 509 60 fluid.referencelauncher fluid.s2f.html reference/s2f/ ; @@ -23,6 +23,13 @@ quotes for s2f to work., f 30; #X obj 558 274 fluid.s2f; #X floatatom 558 298 9 0 0 0 - - - 0; #X obj 558 227 makefilename %d; +#X obj 18 205 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 445 167 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 18 205 1) try various symbols spelling out floats.; +#X text 445 165 2) another example: we convert to symbol then back +to float, f 33; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 6 0 4 0; diff --git a/help/fluid.sines~-help.pd b/help/fluid.sines~-help.pd index 51bf41b..002c020 100644 --- a/help/fluid.sines~-help.pd +++ b/help/fluid.sines~-help.pd @@ -1,4 +1,4 @@ -#N canvas 136 57 697 935 12; +#N canvas 71 54 697 935 12; #X obj 17 658 *~; #X obj 31 640 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; @@ -28,8 +28,8 @@ sources are enabled, f 21; #X text 17 79 Sinusoidal Modelling process on its audio input, f 56 ; #X obj 17 160 fluid.demosound~; -#X text 29 608 resynthesised sinusoids, f 13; -#X text 201 617 residual; +#X text 49 639 resynthesised sinusoids, f 13; +#X text 217 638 residual; #X text 388 634 latency; #X msg 360 305 detectionthreshold -40 \, mintracklen 1; #X msg 360 335 detectionthreshold -40 \, mintracklen 15; @@ -37,8 +37,8 @@ sources are enabled, f 21; #X msg 360 395 detectionthreshold -24 \, mintracklen 1; #X obj 473 874 cnv 15 210 42 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; -#N canvas 1054 278 690 714 a_little_more_explanation 0; -#X obj 171 533 *~; +#N canvas 179 136 690 602 a_little_more_explanation 0; +#X obj 236 428 *~; #X obj 17 13 cnv 15 660 42 empty empty fluid.sines~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 17 60 cnv 15 488 17 empty empty Sinusoidal\\\ Modelling\\\ and\\\ Resynthesis @@ -76,8 +76,8 @@ sources are enabled, f 21; #X connect 11 0 9 0; #X connect 11 0 15 0; #X coords 0 -1 1 1 200 98 2 100 100; -#X restore 17 178 pd switch; -#X floatatom 211 451 5 0 0 0 - - - 0; +#X restore 20 147 pd switch; +#X floatatom 467 350 5 0 0 0 - - - 0; #N canvas 1075 -678 740 379 fade 0; #X obj 37 37 inlet; #X obj 37 102 dbtorms; @@ -101,62 +101,76 @@ sources are enabled, f 21; #X connect 7 2 9 0; #X connect 8 0 5 0; #X connect 9 0 8 1; -#X restore 211 471 pd fade; -#X text 126 461 residual; -#X text 20 490 resynthesised sinusoids, f 13; -#X text 231 247 The fluid.sines~ object attempts to reconstruct the -input signal as a bank of sinusoids. We might expect that for a pure -sine tone \, the algorithm has no problems. With these settings everything -in the sound is considered a sinusoid \, even short and quiet peaks. -Because the decomposition is a windowed process \, the detected sinusoidal -peaks are located in time based on the window of analysis. When the -oscillator changes even slowly over time we hear the artefact and failure -of the algorithm emerging in the residual output.; -#X obj 17 340 fluid.sines~ -detectionthreshold -144 -birthhighthreshold +#X restore 467 370 pd fade; +#X text 240 360 residual; +#X text 26 363 resynthesised sinusoids, f 13; +#X obj 20 309 fluid.sines~ -detectionthreshold -144 -birthhighthreshold -144 -birthlowthreshold -144 -mintracklen 1 -trackmagrange 200 -trackfreqrange -1000 -trackprob 0, f 25; -#X obj 16 598 fluid.out~ sineshelp; -#X obj 211 403 * 20; -#X connect 0 0 10 1; -#X connect 3 0 9 0; -#X connect 3 1 11 0; +1000 -trackprob 0, f 62; +#X obj 19 467 fluid.out~ sineshelp; +#X obj 467 307 * 20; +#X obj 21 125 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 22 124 1) Select the source; +#X obj 90 471 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 89 470 2) Audio on. The fluid.sines~ object attempts to reconstruct +the input signal as a bank of sinusoids. We might expect that for a +pure sine tone \, the algorithm has no problems. With these settings +everything in the sound is considered a sinusoid \, even short and +quiet peaks. Because the decomposition is a windowed process \, the +detected sinusoidal peaks are located in time based on the window of +analysis. When the oscillator changes even slowly over time we hear +the artefact and failure of the algorithm emerging in the residual +output., f 80; +#X connect 0 0 9 1; +#X connect 3 0 8 0; +#X connect 3 1 10 0; #X connect 4 0 5 0; #X connect 5 0 0 1; -#X connect 9 0 10 0; -#X connect 9 1 0 0; -#X connect 11 0 4 0; +#X connect 8 0 9 0; +#X connect 8 1 0 0; +#X connect 10 0 4 0; #X restore 476 894 pd a_little_more_explanation; #X obj 103 887 fluid.out~ sineshelp; -#X obj 161 845 loadbang; -#X msg 161 866 1; #X obj 103 765 +~; #X obj 103 830 +~; #X obj 17 556 fluid.sines~ -fftsettings 2048 -1 8192, f 49; -#X connect 0 0 33 0; +#X obj 18 140 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 20 139 1) Pick a sound source and start playing.; +#X obj 31 603 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 33 602 3) pick the component to monitor, f 21; +#X obj 171 891 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 173 890 2) Audio on.; +#X obj 361 283 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 363 282 4) try different settings; +#X connect 0 0 31 0; #X connect 1 0 0 1; -#X connect 2 0 33 1; +#X connect 2 0 31 1; #X connect 3 0 2 1; #X connect 4 0 10 0; #X connect 5 0 12 0; #X connect 6 0 5 0; -#X connect 7 0 34 1; +#X connect 7 0 32 1; #X connect 8 0 9 0; #X connect 9 0 7 1; #X connect 10 0 5 1; #X connect 12 0 7 0; #X connect 13 0 15 0; -#X connect 15 0 35 0; +#X connect 15 0 33 0; #X connect 20 0 11 0; -#X connect 20 0 35 0; -#X connect 24 0 35 0; -#X connect 25 0 35 0; -#X connect 26 0 35 0; -#X connect 27 0 35 0; +#X connect 20 0 33 0; +#X connect 24 0 33 0; +#X connect 25 0 33 0; +#X connect 26 0 33 0; +#X connect 27 0 33 0; #X connect 31 0 32 0; -#X connect 32 0 30 2; -#X connect 33 0 34 0; -#X connect 34 0 30 1; -#X connect 34 0 30 0; -#X connect 35 0 0 0; -#X connect 35 1 2 0; -#X connect 35 2 6 0; +#X connect 32 0 30 1; +#X connect 32 0 30 0; +#X connect 33 0 0 0; +#X connect 33 1 2 0; +#X connect 33 2 6 0; diff --git a/help/fluid.spectralshape~-help.pd b/help/fluid.spectralshape~-help.pd index b4a9151..05c809f 100644 --- a/help/fluid.spectralshape~-help.pd +++ b/help/fluid.spectralshape~-help.pd @@ -1,6 +1,6 @@ -#N canvas 71 46 695 857 12; -#X obj 134 579 noise~; -#X obj 138 716 *~; +#N canvas 74 88 695 857 12; +#X obj 175 616 noise~; +#X obj 174 716 *~; #X obj 17 13 cnv 15 660 42 empty empty fluid.spectralshape~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 509 60 fluid.referencelauncher fluid.spectralshape~.html reference/spectralshape/ @@ -14,7 +14,7 @@ a linear scale for both amplitude and frequency.; 20000 -fftsettings 1024 128; #X obj 523 697 cnv 15 152 65 empty empty More\\\ information 4 10 0 13 #e0e0e0 #404040 0; -#N canvas 278 170 785 861 logarithmic_scale 0; +#N canvas 204 145 697 705 logarithmic_scale 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.spectralshape~ 1 22 0 36 #4ba3fb #ffffff 0; #X obj 17 60 cnv 15 488 17 empty empty Seven\\\ Spectral\\\ Shape\\\ Descriptors\\\ in\\\ Real-Time @@ -24,7 +24,7 @@ done considering a logarithmic pitch scale as well as the power of the magnitudes. This yields values that are generally considered to be more in line with perception \, for instance where the shape is often drawn and described in logairhmic terms \, i.e. dB per octave. -; +, f 94; #X obj 172 225 loadbang; #X floatatom 172 276 5 0 0 0 - - - 0; #X obj 328 225 loadbang; @@ -71,7 +71,7 @@ unit is in semitones. To convert \, either divide by 12 to get the octave of one standard deviation \, or divide by 6 to get the width of the filter in octaves. One clear observation is that the width is now in a range that scales with what we hear \, growing fourfold as -the filter goes from resonating to more broadband., f 109; +the filter goes from resonating to more broadband., f 94; #X msg 328 249 0.5; #X obj 306 337 fluid.out~ spectralshapehelp; #N canvas 111 114 1362 961 biquad_filter_with_vcf_parameters 0; @@ -686,6 +686,13 @@ dirty 0; #X text 260 795 flatness(dB):; #X text 260 816 crest(dB):; #X obj 18 621 fluid.stats -history 50; +#X obj 16 99 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 17 96 1) Pick one source at a time \, and follow the tutorial +in the box, f 65; +#X obj 93 462 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 94 459 2) Audio on., f 65; #X connect 3 0 9 0; #X connect 4 0 2 0; #X connect 9 0 25 0; @@ -700,7 +707,7 @@ dirty 0; #X restore 526 739 pd more_detail; #X obj 231 532 line~; #X obj 231 556 mtof~; -#X obj 134 601 vcf~ 330 0.6, f 28; +#X obj 175 638 vcf~ 330 0.6, f 28; #X msg 327 508 \$1 5; #N canvas 374 491 450 300 semitones2Q 0; #X obj 37 37 inlet; @@ -733,13 +740,17 @@ dirty 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 9 0 5 0; -#X restore 156 692 pd envelopefollower; -#X obj 17 692 delwrite~ lat 1000; -#X obj 17 716 delread4~ lat 43; +#X restore 88 587 pd envelopefollower; +#X obj 17 708 delwrite~ lat 1000; +#X obj 17 732 delread4~ lat 43; #X obj 231 430 unpack 0 0 0 0 0 0 0; #X obj 17 815 fluid.out~ spectralshapehelp; -#X obj 141 769 loadbang; -#X msg 141 790 1; +#X obj 19 171 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 21 169 1) Select a sound source and start playing.; +#X obj 89 819 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 91 817 2) Audio on.; #X connect 0 0 13 0; #X connect 1 0 22 1; #X connect 6 0 7 0; @@ -748,14 +759,12 @@ dirty 0; #X connect 7 0 21 0; #X connect 11 0 12 0; #X connect 12 0 13 1; -#X connect 13 0 1 0; +#X connect 13 0 1 1; #X connect 14 0 16 0; #X connect 15 0 14 0; #X connect 16 0 13 2; #X connect 17 0 11 0; -#X connect 18 0 1 1; +#X connect 18 0 1 0; #X connect 20 0 22 0; #X connect 21 0 17 0; #X connect 21 1 15 0; -#X connect 23 0 24 0; -#X connect 24 0 22 2; diff --git a/help/fluid.transients~-help.pd b/help/fluid.transients~-help.pd index 51f0d8a..028394a 100644 --- a/help/fluid.transients~-help.pd +++ b/help/fluid.transients~-help.pd @@ -72,16 +72,6 @@ #X obj 138 640 *~; #X obj 152 622 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; -#N canvas 730 768 450 300 sum 0; -#X obj 32 33 inlet~; -#X obj 102 33 inlet~; -#X obj 32 57 +~; -#X obj 32 87 outlet~; -#X connect 0 0 2 0; -#X connect 1 0 2 1; -#X connect 2 0 3 0; -#X restore 28 678 pd sum; -#X f 16; #X text 234 454 <-- more parameters; #N canvas 1109 23 853 879 parameters 0; #X obj 29 737 r \$0-params; @@ -140,14 +130,17 @@ is constrained, f 33; #X connect 28 0 25 0; #X connect 29 0 26 0; #X restore 131 451 pd parameters; +#X obj 230 327 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 231 326 4) Explore the parameters; #X connect 4 0 16 0; #X connect 4 1 18 0; #X connect 9 0 4 0; #X connect 15 0 4 0; -#X connect 16 0 20 0; +#X connect 16 0 6 0; +#X connect 16 0 6 1; #X connect 17 0 16 1; -#X connect 18 0 20 1; +#X connect 18 0 6 0; +#X connect 18 0 6 1; #X connect 19 0 18 1; -#X connect 20 0 6 0; -#X connect 20 0 6 1; -#X connect 22 0 4 0; +#X connect 21 0 4 0; diff --git a/help/fluid.waveform-help.pd b/help/fluid.waveform-help.pd index 2b8a2c0..06d6392 100644 --- a/help/fluid.waveform-help.pd +++ b/help/fluid.waveform-help.pd @@ -17,10 +17,6 @@ help.wf.src.M; #X obj 455 265 array define help.wf.src.M; #X msg 16 414 waveform help.wf.src.M; #X msg 183 414 waveform help.wf.src.S; -#X text 14 203 1) Load a mono file in a normal array \, and a stereo -file in a 'fluid.multiarray', f 80; -#X text 14 393 2) Choose a waverform to visualise \, group normalised -around zero, f 64; #N canvas 683 23 694 522 features 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.waveform 1 22 0 36 #4ba3fb #ffffff 0; @@ -28,21 +24,27 @@ around zero, f 64; #X msg 17 113 waveform help.wf.src.M; #X obj 86 167 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X text 187 111 1) what are we describing?; -#X text 108 164 2) describe!; #X obj 18 473 clone fluid.multiarray 2 help.wf.features; #X obj 87 185 fluid.bufloudness -source help.wf.src.M -features help.wf.features , f 66; #X msg 87 241 features help.wf.features; -#X text 277 240 3) draw each feature stacked \, each individually normalised -for a better view, f 47; #X text 17 63 Display features as stacked lines; +#X obj 188 111 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 109 165 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 279 241 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 188 110 1) what are we describing?; +#X text 108 164 2) describe!; +#X text 279 239 3) draw each feature stacked \, each individually normalised +for a better view, f 47; #X connect 2 0 1 0; -#X connect 3 0 7 0; -#X connect 7 0 8 0; -#X connect 8 0 1 0; +#X connect 3 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 1 0; #X restore 467 677 pd features; -#N canvas 683 24 705 547 markers_for_indices 0; +#N canvas 683 24 696 513 markers_for_indices 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.waveform 1 22 0 36 #4ba3fb #ffffff 0; #X text 17 63 Display markers for slice indices; @@ -51,20 +53,26 @@ for a better view, f 47; #X msg 87 241 indices help.wf.indices; #X obj 86 167 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; +#X obj 18 473 array define help.wf.indices; +#X obj 87 185 fluid.bufonsetslice -source help.wf.src.M -indices help.wf.indices +-metric 9 -threshold 0.3; +#X obj 187 112 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 108 165 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 263 242 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; #X text 187 111 1) what are we segmenting? Needed to establish a timeframe for the slices; #X text 108 164 2) slice; #X text 262 241 3) draw the slices with the timeframe of waveform as reference; -#X obj 18 473 array define help.wf.indices; -#X obj 87 185 fluid.bufonsetslice -source help.wf.src.M -indices help.wf.indices --metric 9 -threshold 0.3; #X connect 3 0 2 0; #X connect 4 0 2 0; -#X connect 5 0 10 0; -#X connect 10 0 4 0; +#X connect 5 0 7 0; +#X connect 7 0 4 0; #X restore 467 655 pd markers_for_indices; -#N canvas 683 23 696 772 spectrograms 0; +#N canvas 683 23 696 746 spectrograms 0; #X obj 17 13 cnv 15 660 42 empty empty fluid.waveform 1 22 0 36 #4ba3fb #ffffff 0; #X text 17 63 Plot 3D data as colored 2D images; @@ -72,29 +80,37 @@ reference; #000000; #X obj 22 134 fluid.bufstft -source help.wf.src.M; #X obj 22 274 fluid.waveform 650 400 0 empty empty 0; -#X text 43 111 1) trigger the spectral analysis; #X msg 22 187 imagelogflag 1 \, imagecolorscheme 1 \, image \$1; #X msg 45 245 waveform help.wf.src.M; #X obj 342 113 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; -#X text 341 183 2) make use of the automatically managed multichannel -buffers here for dynamic channel count, f 42; -#X text 364 110 4) a spectrogram in melbands instead; -#X text 220 245 3) drawing the wave form above; #X obj 342 133 fluid.bufmelbands 40 -source help.wf.src.M -features help.wf.mels, f 42; #X obj 20 703 clone fluid.multiarray 40 help.wf.mels; +#X obj 45 112 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 364 112 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 342 186 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 223 247 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 43 111 1) trigger the spectral analysis; +#X text 342 184 2) make use of the automatically managed multichannel +buffers here for dynamic channel count, f 42; +#X text 364 110 4) a spectrogram in melbands instead; +#X text 223 245 3) drawing the wave form above; #X connect 2 0 3 0; -#X connect 3 0 6 0; +#X connect 3 0 5 0; +#X connect 5 0 4 0; #X connect 6 0 4 0; -#X connect 7 0 4 0; -#X connect 8 0 12 0; -#X connect 12 0 6 0; +#X connect 7 0 8 0; +#X connect 8 0 5 0; #X restore 467 699 pd spectrograms; -#N canvas 683 23 696 796 customisation 0; -#X obj 17 13 cnv 15 660 42 empty empty fluid.waveform 1 22 0 36 #4ba3fb +#N canvas 683 23 696 922 customisation 0; +#X obj 18 -32 cnv 15 660 42 empty empty fluid.waveform 1 22 0 36 #4ba3fb #ffffff 0; -#X text 17 63 Customisation of colors \, dimensions \, send \, receive +#X text 18 18 Customisation of colors \, dimensions \, send \, receive ; #N canvas 170 280 390 482 label 0; #X obj 102 62 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc @@ -134,7 +150,7 @@ help.wf.mels, f 42; #X connect 12 0 6 0; #X connect 13 0 9 0; #X coords 0 -1 1 1 77 151 2 50 50; -#X restore 25 282 pd label; +#X restore 26 237 pd label; #N canvas 170 280 390 482 label 0; #X obj 102 62 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1; @@ -173,7 +189,7 @@ help.wf.mels, f 42; #X connect 12 0 6 0; #X connect 13 0 9 0; #X coords 0 -1 1 1 77 151 2 50 50; -#X restore 153 282 pd label; +#X restore 154 237 pd label; #N canvas 170 280 390 482 label 0; #X obj 102 62 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1; @@ -212,28 +228,41 @@ help.wf.mels, f 42; #X connect 12 0 6 0; #X connect 13 0 9 0; #X coords 0 -1 1 1 77 151 2 50 50; -#X restore 280 281 pd label; -#X msg 25 438 waveformcolor \$1; -#X msg 153 438 indicescolor \$1; -#X msg 280 437 featurescolor \$1; -#X floatatom 414 415 5 1 300 0 - - - 0; -#X msg 414 437 linewidth \$1; -#X text 22 108 arguments can be one list (width height outline send +#X restore 281 236 pd label; +#X msg 26 393 waveformcolor \$1; +#X msg 154 393 indicescolor \$1; +#X msg 281 392 featurescolor \$1; +#X floatatom 415 370 5 1 300 0 - - - 0; +#X msg 415 392 linewidth \$1; +#X text 23 63 arguments can be one list (width height outline send receive latch) -outline - flag if the frame is drawn -latch - send a message on mouse up -send -receive They can all be edited in the 'property' window and are saved as state of the object, f 86; -#X obj 415 467 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 +#X obj 416 422 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; -#X msg 415 487 outline \$1; -#X obj 532 416 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 +#X msg 416 442 outline \$1; +#X obj 533 371 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; -#X msg 532 436 imagelogflag \$1; -#X obj 532 465 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 +#X msg 533 391 imagelogflag \$1; +#X obj 533 420 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; -#X msg 532 485 imagecolorscheme \$1; -#X obj 24 566 fluid.waveform 650 200 1 empty empty 0; -#X msg 305 520 waveform help.wf.src.M \, features help.wf.features +#X msg 533 440 imagecolorscheme \$1; +#X obj 26 590 fluid.waveform 650 200 1 empty empty 0; +#X msg 307 544 waveform help.wf.src.M \, features help.wf.features \, image help.wf.mels \, indices help.wf.indices, f 51; +#X obj 27 207 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 27 148 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 28 145 1) Make sure to run the other patchers to have all the +data at hand., f 68; +#X obj 414 345 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 28 204 2) Experiment with custom colour settings...; +#X text 415 342 ... and other graphic parameters; +#X obj 310 523 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 311 520 3) To see the impact \, redraw by clicking here.; #X connect 2 0 5 0; #X connect 3 0 6 0; #X connect 4 0 7 0; @@ -280,9 +309,13 @@ length; #X connect 6 0 1 0; #X restore 20 367 pd playback; #X obj 20 391 fluid.out~; -#X text 192 136 1) draw the waveform; -#X text 177 341 relative pixel of the click and drag position (0 0 -is bottom left), f 66; +#X obj 193 137 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 177 342 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 193 136 1) draw the waveform; +#X text 177 341 2) relative pixel of the click and drag position (0 +0 is bottom left), f 69; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 4 0 5 0; @@ -290,7 +323,15 @@ is bottom left), f 66; #X connect 5 0 6 1; #X restore 467 743 pd mousing; #X listbox 16 623 20 0 0 0 - - - 0; -#X connect 5 0 20 0; +#X obj 15 204 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X obj 15 394 cnv 15 15 15 empty empty empty 20 12 0 14 #c6ffc7 #404040 +0; +#X text 15 203 1) Load a mono file in a normal array \, and a stereo +file in a 'fluid.multiarray', f 80; +#X text 15 393 2) Choose a waverform to visualise \, group normalised +around zero, f 64; +#X connect 5 0 18 0; #X connect 8 0 6 0; #X connect 10 0 5 0; #X connect 11 0 5 0;