Просмотр исходного кода

added list-abs abstractions
added animation triggering

Etienne Landon 8 лет назад
Родитель
Сommit
7396874e5d
100 измененных файлов с 5637 добавлено и 0 удалено
  1. 128 0
      extra/animPlayer.pd
  2. 30 0
      extra/list-abs/LICENSE.txt
  3. 41 0
      extra/list-abs/OSCprepend-help.pd
  4. 30 0
      extra/list-abs/OSCprepend.pd
  5. 10 0
      extra/list-abs/README.txt
  6. 50 0
      extra/list-abs/compare-any-help.pd
  7. 54 0
      extra/list-abs/compare-any.pd
  8. 18 0
      extra/list-abs/examples/list-demux.pd
  9. 91 0
      extra/list-abs/examples/list-inter-example.pd
  10. 100 0
      extra/list-abs/examples/list-inter-gem-example.pd
  11. 112 0
      extra/list-abs/examples/list-sieve-example-2.pd
  12. 20 0
      extra/list-abs/last-x-help.pd
  13. 10 0
      extra/list-abs/last-x.pd
  14. 19 0
      extra/list-abs/list-abs-help.pd
  15. 8 0
      extra/list-abs/list-abs-meta.pd
  16. 23 0
      extra/list-abs/list-abs.pd
  17. 21 0
      extra/list-abs/list-accum-help.pd
  18. 22 0
      extra/list-abs/list-accum.pd
  19. 20 0
      extra/list-abs/list-add-help.pd
  20. 8 0
      extra/list-abs/list-add.pd
  21. 80 0
      extra/list-abs/list-apply-help.pd
  22. 29 0
      extra/list-abs/list-apply.pd
  23. 201 0
      extra/list-abs/list-centroid-help.pd
  24. 76 0
      extra/list-abs/list-centroid.pd
  25. 25 0
      extra/list-abs/list-clip-help.pd
  26. 26 0
      extra/list-abs/list-clip.pd
  27. 42 0
      extra/list-abs/list-compare-help.pd
  28. 74 0
      extra/list-abs/list-compare.pd
  29. 43 0
      extra/list-abs/list-delete-help.pd
  30. 28 0
      extra/list-abs/list-delete.pd
  31. 33 0
      extra/list-abs/list-dotprod-help.pd
  32. 40 0
      extra/list-abs/list-dotprod.pd
  33. 208 0
      extra/list-abs/list-drip-help.pd
  34. 47 0
      extra/list-abs/list-drip.pd
  35. 37 0
      extra/list-abs/list-drip2-help.pd
  36. 19 0
      extra/list-abs/list-drip2.pd
  37. 70 0
      extra/list-abs/list-dripslow-help.pd
  38. 21 0
      extra/list-abs/list-dripslow.pd
  39. 49 0
      extra/list-abs/list-emath-help.pd
  40. 53 0
      extra/list-abs/list-emath.pd
  41. 33 0
      extra/list-abs/list-enumerate-help.pd
  42. 35 0
      extra/list-abs/list-enumerate.pd
  43. 59 0
      extra/list-abs/list-equalize-help.pd
  44. 11 0
      extra/list-abs/list-equalize.pd
  45. 36 0
      extra/list-abs/list-extend-help.pd
  46. 13 0
      extra/list-abs/list-extend.pd
  47. 55 0
      extra/list-abs/list-fifo-delim-help.pd
  48. 56 0
      extra/list-abs/list-fifo-delim.pd
  49. 53 0
      extra/list-abs/list-fifo-help.pd
  50. 53 0
      extra/list-abs/list-fifo.pd
  51. 81 0
      extra/list-abs/list-filter-help.pd
  52. 41 0
      extra/list-abs/list-filter.pd
  53. 62 0
      extra/list-abs/list-find-help.pd
  54. 60 0
      extra/list-abs/list-find.pd
  55. 201 0
      extra/list-abs/list-geometric-mean-help.pd
  56. 54 0
      extra/list-abs/list-geometric-mean.pd
  57. 40 0
      extra/list-abs/list-group-help.pd
  58. 38 0
      extra/list-abs/list-group.pd
  59. 204 0
      extra/list-abs/list-harmonic-mean-help.pd
  60. 71 0
      extra/list-abs/list-harmonic-mean.pd
  61. 28 0
      extra/list-abs/list-idx-help.pd
  62. 14 0
      extra/list-abs/list-idx.pd
  63. 37 0
      extra/list-abs/list-insert-help.pd
  64. 63 0
      extra/list-abs/list-insert.pd
  65. 58 0
      extra/list-abs/list-inter-help.pd
  66. 103 0
      extra/list-abs/list-inter-many-help.pd
  67. 83 0
      extra/list-abs/list-inter-many.pd
  68. 48 0
      extra/list-abs/list-inter.pd
  69. 18 0
      extra/list-abs/list-invint-help.pd
  70. 22 0
      extra/list-abs/list-invint.pd
  71. 37 0
      extra/list-abs/list-iter-help.pd
  72. 37 0
      extra/list-abs/list-iter.pd
  73. 33 0
      extra/list-abs/list-l2s-help.pd
  74. 42 0
      extra/list-abs/list-l2s.pd
  75. 23 0
      extra/list-abs/list-lastx-help.pd
  76. 25 0
      extra/list-abs/list-lastx.pd
  77. 28 0
      extra/list-abs/list-len-help.pd
  78. 9 0
      extra/list-abs/list-len.pd
  79. 53 0
      extra/list-abs/list-lifo-help.pd
  80. 53 0
      extra/list-abs/list-lifo.pd
  81. 41 0
      extra/list-abs/list-makefilename-a-help.pd
  82. 37 0
      extra/list-abs/list-makefilename-a.pd
  83. 37 0
      extra/list-abs/list-makefilename-help.pd
  84. 42 0
      extra/list-abs/list-makefilename.pd
  85. 277 0
      extra/list-abs/list-map-help.pd
  86. 31 0
      extra/list-abs/list-map.pd
  87. 452 0
      extra/list-abs/list-map2-help.pd
  88. 39 0
      extra/list-abs/list-map2.pd
  89. 57 0
      extra/list-abs/list-math-help.pd
  90. 16 0
      extra/list-abs/list-math.pd
  91. 196 0
      extra/list-abs/list-mean-help.pd
  92. 52 0
      extra/list-abs/list-mean.pd
  93. 41 0
      extra/list-abs/list-minmax-help.pd
  94. 53 0
      extra/list-abs/list-minmax.pd
  95. 41 0
      extra/list-abs/list-moses-help.pd
  96. 32 0
      extra/list-abs/list-moses.pd
  97. 20 0
      extra/list-abs/list-mult-help.pd
  98. 8 0
      extra/list-abs/list-mult.pd
  99. 79 0
      extra/list-abs/list-normalize-help.pd
  100. 0 0
      extra/list-abs/list-normalize.pd

+ 128 - 0
extra/animPlayer.pd

@@ -0,0 +1,128 @@
+#N canvas 10 130 875 883 10;
+#X obj 101 119 cnv 15 218 218 empty \$0-cnv empty 20 12 0 14 -191407
+-262144 0;
+#X obj 129 150 flatgui/popup 124 25 #ffffff poses none tpose larm ZI
+ZO;
+#X obj 109 35 r poses-popup;
+#X obj 490 202 r poses-in;
+#X obj 490 224 route pose;
+#X obj 490 246 > 0.85;
+#X obj 490 288 route 1;
+#X floatatom 546 241 5 0 0 0 - - -, f 5;
+#X obj 268 375 s toUE4;
+#X obj 480 73 tgl 15 0 empty \$0-state On/Off -40 7 0 10 -262144 -1
+-1 0 1;
+#X floatatom 169 124 5 0 0 0 threshold - #0-threshold, f 5;
+#X obj 169 55 loadbang;
+#X msg 169 77 0.83;
+#X obj 778 117 route 0 1;
+#X obj 777 95 loadbang;
+#X msg 778 139 color 3;
+#X msg 806 159 color 6;
+#X obj 778 190 s \$0-cnv;
+#X msg 268 343 /avatar/animIndex \$1;
+#X text 107 154 0;
+#X msg 490 310 0;
+#X obj 490 332 s \$0-animIndex;
+#X obj 129 184 flatgui/popup 124 25 #ffffff poses none tpose larm ZI
+ZO;
+#X obj 620 336 r poses-in;
+#X obj 620 358 route pose;
+#X obj 620 422 route 1;
+#X obj 620 466 s \$0-animIndex;
+#X obj 129 220 flatgui/popup 124 25 #ffffff poses none tpose larm ZI
+ZO;
+#X obj 490 392 r poses-in;
+#X obj 490 414 route pose;
+#X obj 490 478 route 1;
+#X obj 490 522 s \$0-animIndex;
+#X obj 129 254 flatgui/popup 124 25 #ffffff poses none tpose larm ZI
+ZO;
+#X obj 620 526 r poses-in;
+#X obj 620 548 route pose;
+#X obj 620 612 route 1;
+#X obj 620 656 s \$0-animIndex;
+#X msg 620 444 1;
+#X msg 490 500 2;
+#X msg 620 634 3;
+#X obj 129 290 flatgui/popup 124 25 #ffffff poses none tpose larm ZI
+ZO;
+#X obj 490 562 r poses-in;
+#X obj 490 584 route pose;
+#X obj 490 648 route 1;
+#X floatatom 546 621 5 0 0 0 - - -, f 5;
+#X obj 490 692 s \$0-animIndex;
+#X msg 490 670 4;
+#X obj 268 149 vradio 33 1 0 5 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 278 67 r \$0-animIndex;
+#X text 107 188 1;
+#X text 107 224 2;
+#X text 107 258 3;
+#X text 107 294 4;
+#X obj 490 268 change;
+#X obj 620 379 > 0.85;
+#X floatatom 676 374 5 0 0 0 - - -, f 5;
+#X obj 620 401 change;
+#X obj 490 436 > 0.85;
+#X floatatom 546 431 5 0 0 0 - - -, f 5;
+#X obj 490 458 change;
+#X obj 620 568 > 0.85;
+#X floatatom 676 563 5 0 0 0 - - -, f 5;
+#X obj 620 590 change;
+#X obj 490 606 > 0.85;
+#X floatatom 546 601 5 0 0 0 - - -, f 5;
+#X obj 490 628 change;
+#X connect 1 1 4 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 53 0;
+#X connect 6 0 20 0;
+#X connect 7 0 5 1;
+#X connect 9 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 0;
+#X connect 13 0 15 0;
+#X connect 13 1 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 16 0 17 0;
+#X connect 18 0 8 0;
+#X connect 20 0 21 0;
+#X connect 22 1 24 1;
+#X connect 23 0 24 0;
+#X connect 24 0 54 0;
+#X connect 25 0 37 0;
+#X connect 27 1 29 1;
+#X connect 28 0 29 0;
+#X connect 29 0 57 0;
+#X connect 30 0 38 0;
+#X connect 32 1 34 1;
+#X connect 33 0 34 0;
+#X connect 34 0 60 0;
+#X connect 35 0 39 0;
+#X connect 37 0 26 0;
+#X connect 38 0 31 0;
+#X connect 39 0 36 0;
+#X connect 40 1 42 1;
+#X connect 41 0 42 0;
+#X connect 42 0 63 0;
+#X connect 43 0 46 0;
+#X connect 46 0 45 0;
+#X connect 47 0 18 0;
+#X connect 48 0 47 0;
+#X connect 53 0 6 0;
+#X connect 54 0 56 0;
+#X connect 55 0 54 1;
+#X connect 56 0 25 0;
+#X connect 57 0 59 0;
+#X connect 58 0 57 1;
+#X connect 59 0 30 0;
+#X connect 60 0 62 0;
+#X connect 61 0 60 1;
+#X connect 62 0 35 0;
+#X connect 63 0 65 0;
+#X connect 64 0 63 1;
+#X connect 65 0 43 0;
+#X coords 0 -1 1 1 220 240 1 100 100;

+ 30 - 0
extra/list-abs/LICENSE.txt

@@ -0,0 +1,30 @@
+This software is copyrighted by Frank Barknecht and others.  The following
+terms (the "Standard Improved BSD License") apply to all files associated with
+the software unless explicitly disclaimed in individual files:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above  
+   copyright notice, this list of conditions and the following 
+   disclaimer in the documentation and/or other materials provided
+   with the distribution.
+3. The name of the author may not be used to endorse or promote
+   products derived from this software without specific prior 
+   written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.

+ 41 - 0
extra/list-abs/OSCprepend-help.pd

@@ -0,0 +1,41 @@
+#N canvas 0 31 565 415 10;
+#X msg 121 238 /a 1 c 3;
+#X obj 121 350 print OSC;
+#X text 52 262 ignored:;
+#X text 72 238 okay:;
+#X obj 121 323 OSCprepend /synth/ha;
+#X msg 256 231 /osc;
+#X text 304 230 change OSC-messages;
+#X msg 256 257 /freq/1;
+#X obj 104 31 cnv 15 220 30 empty empty OSCprepend 20 12 0 14 -233017
+-66577 0;
+#X text 98 76 "Prepends" first argument to an OSC message list.;
+#X text 106 140 Right inlet lets you change the prepended argument
+;
+#X msg 121 262 900 2 3 4 a b c;
+#X text 104 103 Example: with ARG_1 being "/synth" the message "/set
+x 1 2" will become "/synth/set x 1 2".;
+#X text 107 166 Lists not starting with a symbol are filtered out.
+;
+#X msg 325 285 1;
+#X text 359 287 oops...;
+#X symbolatom 324 260 10 0 0 1 type-here - -;
+#N canvas 462 89 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION "Prepends" first argument to an OSC message
+list;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X text 12 105 OUTLET_0 anything;
+#X restore 504 381 pd META;
+#X connect 0 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
+#X connect 7 0 4 1;
+#X connect 11 0 4 0;
+#X connect 14 0 4 1;
+#X connect 16 0 4 1;

+ 30 - 0
extra/list-abs/OSCprepend.pd

@@ -0,0 +1,30 @@
+#N canvas 511 144 636 444 10;
+#X obj 45 131 list split 1;
+#X msg 94 90 /a 1 2 3;
+#X obj 45 276 list append;
+#X obj 45 299 list trim;
+#X obj 45 239 makefilename \$1%s;
+#X obj 45 188 route symbol;
+#X obj 45 89 inlet;
+#X obj 45 319 outlet;
+#X text 215 99 "Prepends" first argument to an OSC message list.;
+#X text 221 126 Example: with \$1 being "/synth" the message "/set
+x 1 2" will become "/synth/set x 1 2".;
+#X text 223 163 Right inlet lets you change the prepended argument
+;
+#X msg 146 209 set \$1%s;
+#X obj 146 185 symbol;
+#X obj 146 163 inlet;
+#X text 224 189 Lists not starting with a symbol are filtered out!
+;
+#X connect 0 0 5 0;
+#X connect 0 1 2 1;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X connect 11 0 4 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;

+ 10 - 0
extra/list-abs/README.txt

@@ -0,0 +1,10 @@
+list-abs
+--------
+
+A collection of list-processing abstractions for Pd. 
+
+For a list of included objects open list-abs-intro.pd or list-abs-intro.txt
+
+Maintainer: Frank Barknecht <fbar a footils.org>
+
+-- 

+ 50 - 0
extra/list-abs/compare-any-help.pd

@@ -0,0 +1,50 @@
+#N canvas 0 26 528 377 10;
+#X msg 246 131 symbol x;
+#X msg 255 154 symbol y;
+#X msg 116 137 symbol x;
+#X msg 125 160 symbol y;
+#X obj 96 254 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 236 109 2.3;
+#X msg 106 114 2.3;
+#X msg 131 180 i;
+#X msg 140 201 j;
+#X msg 258 175 i;
+#X msg 264 196 j;
+#X obj 96 278 print;
+#X text 37 14 [compare-any];
+#X text 81 37 Test if two anythings are the same. Out: 1 if equal \,
+0 if not equal.;
+#X msg 96 92 1;
+#X msg 226 87 1;
+#X obj 96 231 compare-any;
+#X msg 221 66 0;
+#X msg 86 71 0;
+#N canvas 520 35 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 135 AUTHOR Frank Barknecht;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 75 INLET_0 anything;
+#X text 12 95 INLET_1 anything;
+#X text 12 115 OUTLET_0 float;
+#X text 12 5 KEYWORDS control anything_op;
+#X text 12 45 DESCRIPTION test if two anythings are the same. Out:
+1 if equal \, 0 if not equal;
+#X restore 474 347 pd META;
+#X connect 0 0 16 1;
+#X connect 1 0 16 1;
+#X connect 2 0 16 0;
+#X connect 3 0 16 0;
+#X connect 4 0 11 0;
+#X connect 5 0 16 1;
+#X connect 6 0 16 0;
+#X connect 7 0 16 0;
+#X connect 8 0 16 0;
+#X connect 9 0 16 1;
+#X connect 10 0 16 1;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 4 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;

+ 54 - 0
extra/list-abs/compare-any.pd

@@ -0,0 +1,54 @@
+#N canvas 460 148 653 646 10;
+#X obj 118 28 inlet;
+#X obj 118 451 outlet;
+#X obj 118 336 ==;
+#X obj 118 358 select 1;
+#N canvas 272 259 450 300 demux 0;
+#X obj 76 87 inlet;
+#X obj 169 86 inlet;
+#X obj 76 145 list prepend 0;
+#X obj 76 186 route 0 1;
+#X obj 76 242 outlet;
+#X obj 105 213 outlet;
+#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 1 5 0;
+#X restore 118 230 pd demux;
+#X msg 169 207 0;
+#X msg 200 206 1;
+#X obj 118 295 route float;
+#X obj 219 293 route symbol;
+#X obj 359 199 print HUH?;
+#X obj 219 272 list;
+#X obj 238 164 route float symbol;
+#X obj 238 136 list;
+#X msg 118 423 1;
+#X msg 190 418 0;
+#X obj 238 28 inlet;
+#X obj 219 356 select [DUMMY-SYMBOL];
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 13 0;
+#X connect 3 1 14 0;
+#X connect 4 0 7 0;
+#X connect 4 1 10 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 1;
+#X connect 7 0 2 0;
+#X connect 7 1 14 0;
+#X connect 8 0 16 0;
+#X connect 8 1 14 0;
+#X connect 10 0 8 0;
+#X connect 11 0 2 1;
+#X connect 11 0 5 0;
+#X connect 11 1 6 0;
+#X connect 11 1 16 1;
+#X connect 11 2 9 0;
+#X connect 12 0 11 0;
+#X connect 13 0 1 0;
+#X connect 14 0 1 0;
+#X connect 15 0 12 0;
+#X connect 16 0 13 0;
+#X connect 16 1 14 0;

+ 18 - 0
extra/list-abs/examples/list-demux.pd

@@ -0,0 +1,18 @@
+#N canvas 0 0 450 300 10;
+#X obj 131 118 list prepend 0;
+#X obj 224 95 hradio 15 1 0 4 empty empty empty 0 -6 0 8 -262144 -1
+-1 3;
+#X obj 131 146 route 0 1 2 3;
+#X obj 131 251 print d1;
+#X obj 195 177 print d4;
+#X obj 174 202 print d3;
+#X obj 152 224 print d2;
+#X floatatom 131 81 5 0 0 0 - - -;
+#X text 111 39 "demux" with lists;
+#X connect 0 0 2 0;
+#X connect 1 0 0 1;
+#X connect 2 0 3 0;
+#X connect 2 1 6 0;
+#X connect 2 2 5 0;
+#X connect 2 3 4 0;
+#X connect 7 0 0 0;

+ 91 - 0
extra/list-abs/examples/list-inter-example.pd

@@ -0,0 +1,91 @@
+#N canvas 331 120 783 579 10;
+#X obj 118 233 list-inter;
+#X obj 118 166 list split 1;
+#X obj 201 234 t l;
+#X obj 118 193 expr 1-$f1;
+#X obj 461 377 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 9377 1;
+#X obj 118 303 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 6198 1;
+#X obj 157 303 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 3953 1;
+#X obj 197 303 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4387 1;
+#X floatatom 118 277 5 0 0 0 - - -;
+#X floatatom 157 277 5 0 0 0 - - -;
+#X floatatom 197 277 5 0 0 0 - - -;
+#X obj 118 255 unpack 0 0 0;
+#X obj 461 400 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 2363 1;
+#X obj 461 423 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 960 1;
+#X obj 447 143 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 447 166 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 3200 1;
+#X obj 447 189 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 1300 1;
+#X msg 459 107 1;
+#X msg 118 136 \$1 5 2 3 \, \$2 4 5 6 \, \$3 6 7 1;
+#N canvas 0 0 753 456 normalize 0;
+#X obj 369 105 pack 0 0 0;
+#X obj 332 175 list-math /;
+#X obj 438 76 t b f;
+#X obj 391 78 t b f;
+#X obj 403 154 list-accum;
+#X obj 361 135 t a a;
+#X obj 330 202 unpack 0 0 0;
+#X msg 305 259 set \$1;
+#X msg 365 260 set \$1;
+#X msg 437 269 set \$1;
+#X obj 360 47 inlet;
+#X obj 403 48 inlet;
+#X obj 450 49 inlet;
+#X obj 328 327 outlet;
+#X obj 380 328 outlet;
+#X obj 438 324 outlet;
+#X obj 190 246 outlet;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 1 0 16 0;
+#X connect 2 0 0 0;
+#X connect 2 1 0 2;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 4 0 1 1;
+#X connect 5 0 1 0;
+#X connect 5 1 4 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 6 2 9 0;
+#X connect 7 0 13 0;
+#X connect 8 0 14 0;
+#X connect 9 0 15 0;
+#X connect 10 0 0 0;
+#X connect 11 0 3 0;
+#X connect 12 0 2 0;
+#X restore 342 339 pd normalize;
+#X obj 342 369 s \$0-list;
+#X obj 118 107 r \$0-list;
+#X connect 0 0 11 0;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 2;
+#X connect 3 0 0 0;
+#X connect 8 0 5 0;
+#X connect 9 0 6 0;
+#X connect 10 0 7 0;
+#X connect 11 0 8 0;
+#X connect 11 1 9 0;
+#X connect 11 2 10 0;
+#X connect 14 0 19 0;
+#X connect 15 0 19 1;
+#X connect 16 0 19 2;
+#X connect 17 0 14 0;
+#X connect 18 0 1 0;
+#X connect 19 0 20 0;
+#X connect 19 1 4 0;
+#X connect 19 2 12 0;
+#X connect 19 3 13 0;
+#X connect 21 0 18 0;

+ 100 - 0
extra/list-abs/examples/list-inter-gem-example.pd

@@ -0,0 +1,100 @@
+#N canvas 402 9 678 693 10;
+#X obj 459 490 gemwin;
+#X msg 459 452 reset \, create \, 1;
+#X msg 488 469 0 \, destroy;
+#X obj 57 199 translateXYZ;
+#X obj 58 161 gemhead;
+#X obj 48 381 gemhead;
+#X obj 249 202 translateXYZ;
+#X obj 248 167 gemhead;
+#X obj 426 203 translateXYZ;
+#X obj 425 168 gemhead;
+#X obj 151 313 t b a;
+#X obj 152 338 f;
+#X obj 90 99 hsl 128 15 0 1 0 0 empty empty factor_(0-1) -2 -6 0 10
+-262144 -1 -1 7100 1;
+#X obj 377 105 hsl 128 15 0 1 0 0 empty empty factor_(0-1) -2 -6 0
+10 -262144 -1 -1 7000 1;
+#X obj 253 114 t b b b;
+#X msg 259 93 bang;
+#X obj 97 290 list-inter;
+#X obj 163 357 list-inter;
+#X obj 62 234 color 1 0 0;
+#X obj 248 242 color 0 1 0;
+#X obj 422 246 color 0 0 1;
+#X obj 54 491 color 1 1 1;
+#X obj 483 170 unpack 0 0 0 0 0;
+#X obj 306 169 unpack 0 0 0 0 0;
+#X obj 116 163 unpack 0 0 0 0 0;
+#X obj 154 195 pack 0 0 0;
+#X msg 309 142 3 1 0 1 0;
+#X obj 336 218 pack 0 0 0;
+#X obj 519 205 pack 0 0 0;
+#X obj 106 383 unpack 0 0 0 0 0;
+#X obj 187 423 pack 0 0 0;
+#X msg 487 147 -2 -3 1 0.3 0.5;
+#X msg 119 135 -1 2 1 0 0;
+#X obj 57 264 circle 0.1;
+#X obj 251 277 circle 0.1;
+#X obj 420 283 circle 0.1;
+#X obj 35 421 translateXYZ 0 0 -0.1;
+#X obj 252 72 loadbang;
+#X obj 52 511 square 0.2;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 18 0;
+#X connect 4 0 3 0;
+#X connect 5 0 36 0;
+#X connect 6 0 19 0;
+#X connect 7 0 6 0;
+#X connect 8 0 20 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 10 1 17 1;
+#X connect 11 0 17 0;
+#X connect 12 0 16 0;
+#X connect 13 0 11 0;
+#X connect 14 0 32 0;
+#X connect 14 1 26 0;
+#X connect 14 2 31 0;
+#X connect 15 0 14 0;
+#X connect 16 0 10 0;
+#X connect 17 0 29 0;
+#X connect 18 0 33 0;
+#X connect 19 0 34 0;
+#X connect 20 0 35 0;
+#X connect 21 0 38 0;
+#X connect 22 0 8 1;
+#X connect 22 1 8 2;
+#X connect 22 2 28 0;
+#X connect 22 3 28 1;
+#X connect 22 4 28 2;
+#X connect 23 0 6 1;
+#X connect 23 1 6 2;
+#X connect 23 2 27 0;
+#X connect 23 3 27 1;
+#X connect 23 4 27 2;
+#X connect 24 0 3 1;
+#X connect 24 1 3 2;
+#X connect 24 2 25 0;
+#X connect 24 3 25 1;
+#X connect 24 4 25 2;
+#X connect 25 0 18 1;
+#X connect 26 0 16 2;
+#X connect 26 0 23 0;
+#X connect 27 0 19 1;
+#X connect 28 0 20 1;
+#X connect 29 0 36 1;
+#X connect 29 1 36 2;
+#X connect 29 2 30 0;
+#X connect 29 3 30 1;
+#X connect 29 4 30 2;
+#X connect 30 0 21 1;
+#X connect 31 0 17 2;
+#X connect 31 0 22 0;
+#X connect 32 0 16 1;
+#X connect 32 0 24 0;
+#X connect 36 0 21 0;
+#X connect 37 0 14 0;
+#X connect 37 0 13 0;
+#X connect 37 0 12 0;

+ 112 - 0
extra/list-abs/examples/list-sieve-example-2.pd

@@ -0,0 +1,112 @@
+#N canvas 630 119 650 767 10;
+#X obj 272 233 list-sieve;
+#X msg 207 155 0 5 7;
+#X msg 272 186 2 4 9;
+#X msg 337 206 11;
+#X obj 207 129 t b b b;
+#X obj 142 111 mod 12;
+#X floatatom 142 60 5 0 0 0 - - -;
+#X obj 142 83 t f f;
+#X obj 448 178 div 12;
+#X obj 448 204 * 12;
+#X msg 207 108 bang;
+#X obj 205 78 loadbang;
+#X obj 142 386 + 24;
+#X obj 142 360 list-drip;
+#X obj 448 270 t f;
+#X obj 448 97 t f;
+#X msg 193 300 0 4 7;
+#X msg 264 301 0 3 7;
+#X msg 332 302 0 3 6;
+#X obj 241 272 b;
+#X obj 140 484 rrad.fluid~ /fl;
+#X obj 148 432 pack 0 0;
+#X obj 144 457 list prepend 1;
+#X obj 148 676 output~;
+#X obj 142 185 list-sieve;
+#X obj 207 212 list-sieve;
+#X obj 152 408 makenote 90 200;
+#X floatatom 151 142 5 0 0 0 - - -;
+#N canvas 0 0 450 300 add 0;
+#X obj 116 150 list-math +;
+#X obj 116 89 t b f;
+#X obj 116 121 list;
+#X obj 116 186 outlet;
+#X obj 175 86 inlet;
+#X obj 116 67 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 4 0 2 1;
+#X connect 5 0 1 0;
+#X restore 320 329 pd add;
+#N canvas 0 0 450 300 add 0;
+#X obj 116 150 list-math +;
+#X obj 116 89 t b f;
+#X obj 116 121 list;
+#X obj 116 186 outlet;
+#X obj 175 86 inlet;
+#X obj 116 67 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 4 0 2 1;
+#X connect 5 0 1 0;
+#X restore 218 329 pd add;
+#N canvas 0 0 450 300 add 0;
+#X obj 116 150 list-math +;
+#X obj 116 89 t b f;
+#X obj 116 121 list;
+#X obj 116 186 outlet;
+#X obj 175 86 inlet;
+#X obj 116 67 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 4 0 2 1;
+#X connect 5 0 1 0;
+#X restore 142 323 pd add;
+#X connect 0 0 28 0;
+#X connect 0 1 13 0;
+#X connect 1 0 24 1;
+#X connect 2 0 25 1;
+#X connect 3 0 0 1;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
+#X connect 4 2 3 0;
+#X connect 4 2 19 0;
+#X connect 5 0 24 0;
+#X connect 5 0 27 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 0;
+#X connect 7 1 15 0;
+#X connect 8 0 9 0;
+#X connect 9 0 14 0;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 26 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 1;
+#X connect 15 0 8 0;
+#X connect 16 0 30 1;
+#X connect 17 0 29 1;
+#X connect 18 0 28 1;
+#X connect 19 0 16 0;
+#X connect 19 0 17 0;
+#X connect 19 0 18 0;
+#X connect 20 0 23 0;
+#X connect 20 1 23 1;
+#X connect 21 0 22 0;
+#X connect 22 0 20 0;
+#X connect 24 0 30 0;
+#X connect 24 1 25 0;
+#X connect 25 0 29 0;
+#X connect 25 1 0 0;
+#X connect 26 0 21 0;
+#X connect 26 1 21 1;
+#X connect 28 0 13 0;
+#X connect 29 0 13 0;
+#X connect 30 0 13 0;

+ 20 - 0
extra/list-abs/last-x-help.pd

@@ -0,0 +1,20 @@
+#N canvas 0 26 569 323 10;
+#X obj 188 143 last-x 4;
+#X floatatom 188 118 5 0 0 0 - - -;
+#X obj 188 174 print last_x;
+#X text 124 52 last-x: make a list of the last x floats.;
+#X floatatom 239 119 5 0 0 2 change-size - -;
+#N canvas 520 35 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION make a list of the last x floats;
+#X text 12 65 INLET_0 float;
+#X text 12 105 OUTLET_0 list;
+#X text 12 85 INLET_1 float;
+#X restore 511 292 pd META;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 4 0 0 1;

+ 10 - 0
extra/list-abs/last-x.pd

@@ -0,0 +1,10 @@
+#N canvas 417 318 464 379 10;
+#X obj 265 147 inlet;
+#X obj 179 149 inlet;
+#X obj 179 253 outlet;
+#X text 54 77 This is just a backwards compatibility wrapper around
+list-lastx;
+#X obj 179 206 list-lastx \$1;
+#X connect 0 0 4 1;
+#X connect 1 0 4 0;
+#X connect 4 0 2 0;

+ 19 - 0
extra/list-abs/list-abs-help.pd

@@ -0,0 +1,19 @@
+#N canvas 0 26 475 311 10;
+#X obj 147 204 print;
+#X msg 147 109 1 2 -3 -4 5 and -6;
+#X text 55 66 list-abs: apply abs() on float elements of a list.;
+#X obj 147 158 list-abs;
+#N canvas 416 170 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 115 AUTHOR Frank Barknecht;
+#X text 12 45 DESCRIPTION list-abs: apply abs() on float elements of
+a list.;
+#X text 12 75 INLET_0 list;
+#X text 12 95 OUTLET_0 list;
+#X text 12 135 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op needs_work (object won't create)
+;
+#X restore 397 277 pd META;
+#X connect 1 0 3 0;
+#X connect 3 0 0 0;

+ 8 - 0
extra/list-abs/list-abs-meta.pd

@@ -0,0 +1,8 @@
+#N canvas 10 10 200 200 10;
+#N canvas 20 20 420 300 META 0;
+#X text 10 30 NAME list-abs;
+#X text 10 50 AUTHOR Frank Barknecht;
+#X text 10 70 LICENSE SIBSD;
+#X text 10 90 DESCRIPTION a collection of objects for manipulating lists. Requires pd>=0.39;
+#X text 10 110 VERSION 0.1;
+#X restore 10 10 pd META;

+ 23 - 0
extra/list-abs/list-abs.pd

@@ -0,0 +1,23 @@
+#N canvas 228 307 502 424 10;
+#X obj 130 59 inlet;
+#X obj 130 86 t b a b;
+#X obj 152 145 list-drip;
+#X obj 152 190 abs;
+#X obj 152 168 route float;
+#X obj 152 244 list prepend;
+#X obj 245 244 t l;
+#X obj 129 274 list;
+#X obj 129 302 outlet;
+#X text 92 30 list-abs: apply abs() on float elements of a list.;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 1 1 2 0;
+#X connect 1 2 5 1;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;

+ 21 - 0
extra/list-abs/list-accum-help.pd

@@ -0,0 +1,21 @@
+#N canvas 0 26 470 313 10;
+#X obj 164 160 list-accum;
+#X floatatom 164 199 5 0 0 0 - - -;
+#X msg 164 119 1 2 3;
+#X obj 120 197 print;
+#X msg 217 120 1 2 3 and 4;
+#X text 94 61 list-accum: add all floats in a list;
+#N canvas 466 163 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 85 OUTLET_0 list;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 65 INLET_0 anything;
+#X text 12 45 DESCRIPTION add all floats in a list;
+#X restore 397 277 pd META;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 2 0 0 0;
+#X connect 4 0 0 0;

+ 22 - 0
extra/list-abs/list-accum.pd

@@ -0,0 +1,22 @@
+#N canvas 0 0 450 300 10;
+#X obj 212 193 f 0;
+#X obj 182 192 + 1;
+#X obj 182 114 list-drip;
+#X obj 212 168 0;
+#X obj 182 53 inlet;
+#X obj 182 81 t a b;
+#X obj 182 140 route float;
+#X obj 166 245 outlet;
+#X obj 166 220 f;
+#X text 116 23 list-accum: add all floats in a list;
+#X connect 0 0 1 1;
+#X connect 1 0 0 0;
+#X connect 1 0 8 1;
+#X connect 2 0 6 0;
+#X connect 2 1 8 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 6 0 1 0;
+#X connect 8 0 7 0;

+ 20 - 0
extra/list-abs/list-add-help.pd

@@ -0,0 +1,20 @@
+#N canvas 0 26 450 300 10;
+#X msg 145 116 5 5 5 NOPE 5;
+#X obj 145 217 print;
+#X msg 196 140 1 2 3 0 -1;
+#X text 108 67 Substract two lists element by element;
+#X obj 145 177 list-add;
+#N canvas 460 150 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 105 OUTLET_0 list;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X text 12 45 DESCRIPTION substract two lists element by element;
+#X restore 397 277 pd META;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 4 0 1 0;

+ 8 - 0
extra/list-abs/list-add.pd

@@ -0,0 +1,8 @@
+#N canvas 256 135 500 518 10;
+#X obj 59 31 inlet;
+#X obj 138 34 inlet;
+#X obj 59 117 outlet;
+#X obj 59 85 list-emath +;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;

+ 80 - 0
extra/list-abs/list-apply-help.pd

@@ -0,0 +1,80 @@
+#N canvas 0 26 802 590 10;
+#X obj 78 317 list-apply + 1;
+#X msg 78 285 1 2 3 4;
+#X obj 78 344 print;
+#X msg 233 285 1 2 3 4;
+#X obj 233 347 print;
+#X text 29 23 list-apply: apply the object created by [arg1 arg2] on
+every list element and return the modified list.;
+#X floatatom 171 287 5 0 0 2 add_x - -;
+#X msg 360 264 set /synth%d/freq;
+#X text 129 126 Inlets:;
+#X text 165 168 2) inlet connected to the apply-operation's first inlet.
+;
+#X text 164 191 3) inlet connected to the apply-operation's second
+inlet \, if possible. (Not connected if there is no second inlet as
+is the case with for example makefilename.;
+#X msg 360 285 set count_%d...;
+#X msg 487 286 not used with makefilename;
+#X msg 77 396 1 2 3 4;
+#X obj 77 438 print;
+#X msg 288 397 1 2 3 4;
+#X obj 288 439 print;
+#X obj 388 379 hradio 15 1 0 4 empty empty empty 0 -6 0 8 -262144 -1
+-1 0;
+#X obj 388 396 + 1;
+#X floatatom 198 398 5 0 0 2 moses-arg - -;
+#X text 128 74 Arguments:;
+#X text 163 92 Arg1 and arg2 are used to create the object whose operation
+is applied to the list elements.;
+#X text 164 148 1) the list to modify.;
+#X text 24 248 EXAMPLES:;
+#X obj 503 446 print;
+#X msg 503 366 1 2 3 3 3 4;
+#X msg 560 392 set 1;
+#X obj 645 447 print;
+#X msg 645 387 45 57 69;
+#X obj 79 551 print;
+#X msg 79 507 1 2 3 4;
+#X text 286 530 prepent is part of list-abs;
+#X obj 233 317 list-apply makefilename /synth%d/freq;
+#X obj 77 417 list-apply moses 3;
+#X obj 288 418 list-apply == 4;
+#X obj 503 418 list-apply change;
+#X obj 645 418 list-apply mtof;
+#X obj 79 528 list-apply prepent whatever;
+#N canvas 460 150 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 AUTHOR Frank Barknecht;
+#X text 12 135 OUTLET_0 list;
+#X text 12 175 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 95 INLET_1 anything;
+#X text 12 75 INLET_0 anything;
+#X text 12 45 DESCRIPTION apply the object created by [arg1 arg2] on
+every list element and return the modified list.;
+#X text 12 115 INLET_2 anything;
+#X restore 737 557 pd META;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 32 0;
+#X connect 6 0 0 2;
+#X connect 7 0 32 1;
+#X connect 11 0 32 1;
+#X connect 12 0 32 2;
+#X connect 13 0 33 0;
+#X connect 15 0 34 0;
+#X connect 17 0 18 0;
+#X connect 18 0 34 2;
+#X connect 19 0 33 2;
+#X connect 25 0 35 0;
+#X connect 26 0 35 1;
+#X connect 28 0 36 0;
+#X connect 30 0 37 0;
+#X connect 32 0 4 0;
+#X connect 33 0 14 0;
+#X connect 34 0 16 0;
+#X connect 35 0 24 0;
+#X connect 36 0 27 0;
+#X connect 37 0 29 0;

+ 29 - 0
extra/list-abs/list-apply.pd

@@ -0,0 +1,29 @@
+#N canvas 0 0 554 590 10;
+#X obj 77 499 list;
+#X obj 100 385 list prepend;
+#X obj 78 150 t b a b;
+#X text 260 177 clear result list;
+#X text 175 242 "Drip" (serialize) the list;
+#X text 124 496 Final result is built here;
+#X obj 78 81 inlet;
+#X obj 210 271 inlet;
+#X obj 77 530 outlet;
+#X obj 100 307 \$1 \$2;
+#X text 164 307 do \$1 \$2 with each element;
+#X text 258 389 Repack the list;
+#X obj 196 386 t a;
+#X obj 163 270 inlet;
+#X text 276 272 two inlets for the apply-operation;
+#X obj 100 242 list-drip;
+#X connect 0 0 8 0;
+#X connect 1 0 0 1;
+#X connect 1 0 12 0;
+#X connect 2 0 0 0;
+#X connect 2 1 15 0;
+#X connect 2 2 1 1;
+#X connect 6 0 2 0;
+#X connect 7 0 9 1;
+#X connect 9 0 1 0;
+#X connect 12 0 1 1;
+#X connect 13 0 9 0;
+#X connect 15 0 9 0;

+ 201 - 0
extra/list-abs/list-centroid-help.pd

@@ -0,0 +1,201 @@
+#N struct 1031-centroid float x;
+#N canvas 0 26 626 572 10;
+#X floatatom 129 468 5 0 0 0 centroid - -;
+#X msg 129 363 1 1 1 1;
+#X msg 245 260 0 0 0 0;
+#X msg 245 279 -1 1;
+#X obj 215 469 bng 15 250 50 0 empty empty result_undefined 17 7 1
+10 -262144 -1 -1;
+#X msg 129 245 0 1 0;
+#X obj 129 439 list-centroid;
+#X text 63 25 [list-centroid];
+#X text 93 90 centroid = sum(mi * i) / sum(mi);
+#X text 71 49 Calculates the centroid or center of mass of a list of
+floats according to:;
+#X text 67 115 where the index i starts from 0;
+#X msg 247 344 -1 3;
+#X msg 129 287 1 2 3;
+#X text 314 270 these two are undefined!;
+#X msg 129 341 5 5 5;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 193 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 112 73 + 1;
+#X obj 112 53 random 10;
+#X obj 134 151 random 10;
+#X obj 134 171 - 5;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X restore 295 337 pd randlist;
+#X msg 295 363 4;
+#X msg 295 315 bang;
+#X msg 129 306 10 20 30;
+#X msg 129 267 0 2 0 0 0 1;
+#X msg 248 325 -1 2;
+#X msg 248 407 -10 9;
+#X text 305 406 Note: a centroid can be negative!;
+#X text 75 520 2007 Frank Barknecht;
+#X text 67 146 Negative values are possible.;
+#X text 65 174 If all floats add up to 0 \, the result is undefined.
+In this case \, no result will be sent to the first outlet \, instead
+the second outlet will bang and a console warning will be issued.;
+#N canvas 318 53 641 556 graphical-centroid 0;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 193 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 134 151 random 100;
+#X obj 134 171 / 100;
+#X msg 112 59 10;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X restore 79 388 pd randlist;
+#X msg 79 366 bang;
+#X obj 79 447 list prepend 0;
+#X obj 79 470 s \$0-tab;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-tab 10 float 0;
+#X coords 0 1 9 0 200 140 1;
+#X restore 79 105 graph;
+#N canvas 0 0 694 427 \$0-c 0;
+#X scalar 1031-centroid 0 \;;
+#X coords 0 0 18 140 200 140 1;
+#X restore 79 105 pd \$0-c;
+#X floatatom 339 346 5 0 0 0 - - -;
+#X obj 339 313 list-centroid;
+#N canvas 336 319 712 355 \$0-centroid 0;
+#X obj 19 329 outlet;
+#X obj 19 86 route change;
+#X obj 19 62 struct \$0-centroid float x;
+#X obj 228 62 drawpolygon 900 2 x 0 x 140;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 453 315 pd \$0-centroid;
+#X obj 339 367 set \$0-centroid x;
+#N canvas 0 0 503 429 create 0;
+#X msg 242 258 traverse pd-\$1 \, bang;
+#X obj 242 238 symbol \$0-c;
+#X msg 107 79 0;
+#X obj 242 278 pointer;
+#X msg 243 178 clear;
+#X obj 243 205 s pd-\$0-c;
+#X obj 107 302 append \$0-centroid x;
+#X obj 107 114 t a b b;
+#X obj 107 50 loadbang;
+#X obj 107 326 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 7 1 1 0;
+#X connect 7 2 4 0;
+#X connect 8 0 2 0;
+#X restore 468 339 pd create;
+#X obj 339 127 metro 50;
+#X obj 339 102 tgl 15 0 empty empty show-centroid 17 7 1 10 -258699
+-262144 -1 0 1;
+#N canvas 473 338 450 300 countto 0;
+#X obj 131 154 f 0;
+#X obj 156 153 + 1;
+#X msg 174 113 0;
+#X obj 131 183 outlet;
+#X obj 131 59 inlet;
+#X obj 131 116 until;
+#X obj 131 96 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 6 1 2 0;
+#X restore 362 195 pd countto;
+#X obj 362 219 tabread \$0-tab;
+#X obj 362 249 list prepend;
+#X obj 452 249 t a;
+#X msg 362 175 10;
+#X obj 339 148 t b b b;
+#X obj 339 274 list;
+#X text 77 30 Switch on the "show-centroid"-metro and play with the
+values in the array.;
+#X obj 79 344 loadbang;
+#X msg 79 414 0.56 0.59 0.8 0.98 0.3 0.64 0.96 0.57 0.55 0.08;
+#X connect 0 0 22 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 1;
+#X connect 10 0 9 1;
+#X connect 11 0 18 0;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 0 19 1;
+#X connect 16 0 15 1;
+#X connect 17 0 13 0;
+#X connect 18 0 19 0;
+#X connect 18 1 17 0;
+#X connect 18 2 15 1;
+#X connect 19 0 7 0;
+#X connect 21 0 1 0;
+#X connect 22 0 2 0;
+#X restore 392 510 pd graphical-centroid;
+#X text 321 510 Also see:;
+#N canvas 520 35 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 135 AUTHOR Frank Barknecht;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 75 INLET_0 list;
+#X text 12 95 OUTLET_0 float;
+#X text 12 115 OUTLET_1 bang;
+#X text 12 45 DESCRIPTION calculate the centroid or center of mass
+of a list of floats;
+#X restore 544 540 pd META;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 1 4 0;
+#X connect 11 0 6 0;
+#X connect 12 0 6 0;
+#X connect 14 0 6 0;
+#X connect 15 0 16 0;
+#X connect 16 0 6 0;
+#X connect 17 0 15 0;
+#X connect 18 0 6 0;
+#X connect 19 0 6 0;
+#X connect 20 0 6 0;
+#X connect 21 0 6 0;

+ 76 - 0
extra/list-abs/list-centroid.pd

@@ -0,0 +1,76 @@
+#N canvas 204 70 675 629 10;
+#X obj 127 475 f;
+#X obj 127 65 inlet;
+#X obj 127 561 outlet;
+#X obj 163 170 list-enumerate;
+#X obj 163 197 t a a;
+#X obj 261 406 /;
+#X obj 261 376 swap;
+#X obj 210 345 select 0;
+#N canvas 286 344 401 287 sum(mi*i) 0;
+#X obj 126 138 +;
+#X obj 153 139 f;
+#X msg 168 88 0;
+#X obj 126 66 inlet;
+#X obj 168 66 inlet;
+#X obj 126 171 outlet;
+#X obj 126 103 *;
+#X connect 0 0 1 0;
+#X connect 0 0 5 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 6 0 0 0;
+#X restore 284 255 pd sum(mi*i);
+#N canvas 573 330 450 328 sum(mi) 0;
+#X obj 179 137 +;
+#X obj 206 138 f;
+#X msg 296 77 0;
+#X obj 179 55 inlet;
+#X obj 296 55 inlet;
+#X obj 179 170 outlet;
+#X text 143 34 in: (idx value);
+#X text 40 89 swap to: (val idx);
+#X text 67 172 sum of values;
+#X obj 179 89 swap;
+#X connect 0 0 1 0;
+#X connect 0 0 5 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 9 0;
+#X connect 4 0 2 0;
+#X connect 9 0 0 0;
+#X restore 163 253 pd sum(mi);
+#X obj 210 559 outlet;
+#X obj 127 399 spigot 1;
+#X obj 145 285 f;
+#X obj 240 528 print list-centroid;
+#X obj 210 468 t b b;
+#X msg 240 503 warning: sum of items equals 0: centroid is undefined!
+;
+#X obj 127 89 t b b a b b;
+#X text 69 26 centroid (center of mass) = sum(mi * i) / sum(mi);
+#X connect 0 0 2 0;
+#X connect 1 0 16 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 4 1 8 0;
+#X connect 5 0 0 1;
+#X connect 6 0 5 0;
+#X connect 6 1 5 1;
+#X connect 7 0 14 0;
+#X connect 7 1 6 0;
+#X connect 8 0 6 1;
+#X connect 9 0 12 1;
+#X connect 11 0 0 0;
+#X connect 12 0 7 0;
+#X connect 12 0 11 1;
+#X connect 14 0 10 0;
+#X connect 14 1 15 0;
+#X connect 15 0 13 0;
+#X connect 16 0 11 0;
+#X connect 16 1 12 0;
+#X connect 16 2 3 0;
+#X connect 16 3 9 1;
+#X connect 16 4 8 1;

+ 25 - 0
extra/list-abs/list-clip-help.pd

@@ -0,0 +1,25 @@
+#N canvas 0 0 450 300 10;
+#X obj 122 170 list-clip 2 8;
+#X obj 122 204 print;
+#X text 101 47 list-clip:;
+#X obj 189 49 clip;
+#X text 231 50 for lists;
+#X msg 122 102 1 2 3 SYMBOL 4 5 6 7 8 9 10;
+#X floatatom 165 144 5 0 0 0 - - -;
+#X floatatom 208 145 5 0 0 0 - - -;
+#N canvas 416 170 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 145 AUTHOR Frank Barknecht;
+#X text 12 125 OUTLET_0 list;
+#X text 12 165 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION clip for lists;
+#X text 12 85 INLET_1 float;
+#X text 12 105 INLET_2 float;
+#X text 12 65 INLET_0 anything;
+#X restore 387 267 pd META;
+#X connect 0 0 1 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 1;
+#X connect 7 0 0 2;

+ 26 - 0
extra/list-abs/list-clip.pd

@@ -0,0 +1,26 @@
+#N canvas 220 202 450 335 10;
+#X obj 109 49 inlet;
+#X obj 141 155 inlet;
+#X obj 174 171 inlet;
+#X obj 109 201 clip \$1 \$2;
+#X obj 109 136 route float;
+#X obj 109 100 list-drip;
+#X obj 109 249 list prepend;
+#X obj 200 249 t a;
+#X obj 86 298 outlet;
+#X obj 86 274 list;
+#X obj 109 75 t a b;
+#X connect 0 0 10 0;
+#X connect 1 0 3 1;
+#X connect 2 0 3 2;
+#X connect 3 0 6 0;
+#X connect 4 0 3 0;
+#X connect 4 1 6 0;
+#X connect 5 0 4 0;
+#X connect 5 1 9 0;
+#X connect 6 0 7 0;
+#X connect 6 0 9 1;
+#X connect 7 0 6 1;
+#X connect 9 0 8 0;
+#X connect 10 0 5 0;
+#X connect 10 1 6 1;

+ 42 - 0
extra/list-abs/list-compare-help.pd

@@ -0,0 +1,42 @@
+#N canvas 0 26 529 463 10;
+#X floatatom 149 244 5 0 0 0 - - -;
+#X obj 213 244 loadbang;
+#X msg 149 217 0;
+#X msg 179 217 4;
+#X msg 134 169 seven;
+#X msg 134 196 symbol eight;
+#X obj 134 316 list-compare;
+#X obj 134 354 tgl 24 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 134 389 print EQUAL?;
+#X text 69 21 [list-compare];
+#X text 108 42 Compare two lists element by element.;
+#X floatatom 228 295 5 0 0 0 - - -;
+#X text 134 90 Out: 1 if equal \, 0 if not equal.;
+#X text 134 66 In: two lists to compare.;
+#X msg 134 115 0 1 2 3 4 5 6 seven eight;
+#X msg 134 142 0 1 2 3 4 5 6 seventy eight;
+#X msg 213 271 0 1 2 3 4 5 6 seven eight;
+#N canvas 416 170 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 105 OUTLET_0 float;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X text 12 45 DESCRIPTION compare two lists element by element;
+#X restore 456 427 pd META;
+#X connect 0 0 6 0;
+#X connect 1 0 16 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 11 0 6 1;
+#X connect 14 0 6 0;
+#X connect 15 0 6 0;
+#X connect 16 0 6 1;

+ 74 - 0
extra/list-abs/list-compare.pd

@@ -0,0 +1,74 @@
+#N canvas 368 289 390 300 10;
+#X obj 222 58 inlet;
+#X obj 94 57 inlet;
+#X obj 94 199 outlet;
+#N canvas 380 394 492 461 compare-elements 0;
+#X obj 83 135 list-dripslow;
+#X obj 83 226 compare-any;
+#X obj 83 157 t a b;
+#X obj 264 48 inlet;
+#X obj 65 36 inlet;
+#X obj 241 111 list;
+#X obj 83 112 until;
+#X obj 83 256 select 0;
+#X obj 83 288 t b b;
+#X msg 83 317 0;
+#X obj 65 379 outlet;
+#X obj 65 356 f 1;
+#X obj 65 59 t b b a b b;
+#X msg 125 319 1;
+#X obj 155 192 list-dripslow;
+#X connect 0 0 2 0;
+#X connect 0 1 6 1;
+#X connect 1 0 7 0;
+#X connect 2 0 1 0;
+#X connect 2 1 14 0;
+#X connect 3 0 5 1;
+#X connect 4 0 12 0;
+#X connect 5 0 14 1;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 6 1;
+#X connect 9 0 11 1;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 12 1 6 0;
+#X connect 12 2 0 1;
+#X connect 12 3 5 0;
+#X connect 12 4 13 0;
+#X connect 13 0 11 1;
+#X connect 14 0 1 1;
+#X restore 94 136 pd compare-elements;
+#X msg 216 167 0;
+#N canvas 446 369 450 300 compare-lengths 0;
+#X obj 45 102 ==;
+#X obj 45 123 select 1 0;
+#X obj 144 35 inlet;
+#X obj 45 20 inlet;
+#X obj 45 203 outlet;
+#X obj 77 182 outlet;
+#X obj 45 45 t a a;
+#X obj 45 154 list;
+#X text 39 237 if equal \, send list out to first outlet \, else bang
+second outlet;
+#X obj 144 68 list-len;
+#X obj 45 67 list-len;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 1 1 5 0;
+#X connect 2 0 9 0;
+#X connect 3 0 6 0;
+#X connect 6 0 10 0;
+#X connect 6 1 7 1;
+#X connect 7 0 4 0;
+#X connect 9 0 0 1;
+#X connect 10 0 0 0;
+#X restore 94 93 pd compare-lengths;
+#X connect 0 0 5 1;
+#X connect 0 0 3 1;
+#X connect 1 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;

+ 43 - 0
extra/list-abs/list-delete-help.pd

@@ -0,0 +1,43 @@
+#N canvas 0 26 572 423 10;
+#X obj 85 190 hradio 15 1 0 8 empty empty POS_(zero-based) 0 -6 0 8
+-262144 -1 -1 0;
+#X floatatom 85 210 5 0 0 0 - - -;
+#X msg 49 160 0 1 2 3 4;
+#X obj 49 288 print;
+#X text 36 55 Negative POS counts from the end of the list.;
+#X text 35 26 list-delete: delete element at position POS from list.
+;
+#X floatatom 121 239 5 0 0 1 how_many - -;
+#X msg 293 170 0 1 2 3 4;
+#X obj 293 288 print;
+#X text 322 211 arguments: <pos> <bodycount>;
+#X obj 49 258 list-delete;
+#X text 38 79 Arguments;
+#X text 51 102 1: Default POS to delete.;
+#X text 51 123 2: How many items to delete (cannot be less than 1)
+;
+#X floatatom 343 239 5 0 0 0 - - -;
+#X floatatom 393 240 5 0 0 0 - - -;
+#X obj 293 259 list-delete 2 3;
+#N canvas 520 35 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 145 AUTHOR Frank Barknecht;
+#X text 12 165 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 65 INLET_0 list;
+#X text 12 45 DESCRIPTION delete element at position POS from list
+;
+#X text 12 85 INLET_1 float;
+#X text 12 105 INLET_2 float;
+#X text 12 125 OUTLET_0 list;
+#X restore 507 387 pd META;
+#X connect 0 0 1 0;
+#X connect 1 0 10 1;
+#X connect 2 0 10 0;
+#X connect 6 0 10 2;
+#X connect 7 0 16 0;
+#X connect 10 0 3 0;
+#X connect 14 0 16 1;
+#X connect 15 0 16 2;
+#X connect 16 0 8 0;

+ 28 - 0
extra/list-abs/list-delete.pd

@@ -0,0 +1,28 @@
+#N canvas 18 49 525 309 10;
+#X obj 151 149 list-splat \$1;
+#X obj 237 50 inlet;
+#X text 235 30 pos;
+#X obj 151 51 inlet;
+#X text 135 29 orig. list;
+#X obj 194 217 list split 1;
+#X obj 151 256 list;
+#X obj 151 285 outlet;
+#X obj 302 127 moses 1;
+#X obj 302 50 inlet;
+#X obj 327 78 loadbang;
+#X text 299 30 how many items to delete;
+#X obj 302 106 f \$2;
+#X msg 302 149 1;
+#X connect 0 0 6 0;
+#X connect 0 1 5 0;
+#X connect 0 2 7 0;
+#X connect 1 0 0 1;
+#X connect 3 0 0 0;
+#X connect 5 1 6 1;
+#X connect 6 0 7 0;
+#X connect 8 0 13 0;
+#X connect 8 1 5 1;
+#X connect 9 0 12 0;
+#X connect 10 0 12 0;
+#X connect 12 0 8 0;
+#X connect 13 0 5 1;

+ 33 - 0
extra/list-abs/list-dotprod-help.pd

@@ -0,0 +1,33 @@
+#N canvas 0 26 483 343 10;
+#X obj 59 150 list-dotprod;
+#X msg 138 118 3 1;
+#X text 40 32 list-dotprod;
+#X text 60 53 dot-product of two lists: res = sum(Xi*Yi);
+#X obj 290 188 list-mult;
+#X obj 290 215 list-accum;
+#X msg 348 160 3 1;
+#X floatatom 59 179 5 0 0 0 - - -;
+#X floatatom 290 240 5 0 0 0 - - -;
+#X text 240 137 a bit faster \, but the same as;
+#X msg 59 119 2 4;
+#X msg 290 161 2 4;
+#X text 57 209 2*3 + 4*1 = 10;
+#N canvas 520 35 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 65 INLET_0 list;
+#X text 12 85 INLET_1 list;
+#X text 12 105 OUTLET_0 list;
+#X text 12 45 DESCRIPTION dot-product of two lists : res = sum(Xi*Yi)
+;
+#X restore 421 312 pd META;
+#X connect 0 0 7 0;
+#X connect 1 0 0 1;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 4 1;
+#X connect 10 0 0 0;
+#X connect 11 0 4 0;

+ 40 - 0
extra/list-abs/list-dotprod.pd

@@ -0,0 +1,40 @@
+#N canvas 0 0 750 558 10;
+#X obj 59 31 inlet;
+#X obj 280 39 inlet;
+#X obj 59 469 outlet;
+#X obj 78 138 list-drip;
+#X obj 257 231 list;
+#X obj 171 259 list-dripslow;
+#X obj 78 258 route float;
+#X obj 171 286 route float;
+#X obj 137 87 s \$0-reset;
+#X obj 108 359 r \$0-reset;
+#X obj 59 58 t b a b b;
+#X text 305 153 list-dotprod;
+#X text 325 174 dot-product of two lists: res = sum(Xi*Yi);
+#X obj 108 409 f 0;
+#X obj 108 384 0;
+#X obj 59 436 f;
+#X obj 78 408 +;
+#X obj 78 322 *;
+#X obj 78 162 t a b;
+#X connect 0 0 10 0;
+#X connect 1 0 4 1;
+#X connect 3 0 18 0;
+#X connect 4 0 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 17 0;
+#X connect 7 0 17 1;
+#X connect 9 0 14 0;
+#X connect 10 0 15 0;
+#X connect 10 1 3 0;
+#X connect 10 2 4 0;
+#X connect 10 3 8 0;
+#X connect 13 0 16 1;
+#X connect 14 0 13 0;
+#X connect 15 0 2 0;
+#X connect 16 0 13 0;
+#X connect 16 0 15 1;
+#X connect 17 0 16 0;
+#X connect 18 0 6 0;
+#X connect 18 1 5 0;

+ 208 - 0
extra/list-abs/list-drip-help.pd

@@ -0,0 +1,208 @@
+#N canvas 0 26 635 655 10;
+#X obj 70 93 list-drip;
+#X msg 70 66 1 2 3 a b c;
+#X obj 70 124 print;
+#X obj 151 120 bng 15 250 50 0 empty empty end 0 -6 0 8 -262144 -1
+-1;
+#X msg 297 70 1 2 3 a b c;
+#X obj 382 129 bng 15 250 50 0 empty empty end 0 -6 0 8 -262144 -1
+-1;
+#X obj 297 178 print first;
+#X obj 329 154 print second;
+#X obj 212 390 bng 15 250 50 0 empty empty end 0 -6 0 8 -262144 -1
+-1;
+#X text 71 217 Use list-drip2 to combine two lists into one \, for
+example by addition:;
+#X obj 219 550 list;
+#X obj 123 549 list prepend;
+#X obj 42 584 list;
+#X obj 42 612 print RESULT;
+#X obj 123 289 t b b;
+#X msg 123 269 bang;
+#X obj 123 346 t l b;
+#X text 190 302 Add these lists by element. Be careful with their lengths
+;
+#X text 70 18 list-drip: drips or serializes a list \, that is \, it
+sends all elements one after another.;
+#X text 434 105 Drip two lists in sync.;
+#X text 285 429 filter out floats;
+#X obj 42 552 r \$0-end;
+#X obj 212 409 s \$0-end;
+#X text 200 508 reset first;
+#X obj 123 478 +;
+#N canvas 315 75 709 522 add-lots-of-lists 0;
+#X obj 273 211 bng 15 250 50 0 empty empty end 0 -6 0 8 -262144 -1
+-1;
+#X obj 184 167 t l b;
+#X text 138 51 Add many lists by routing the result back to the second
+inlet of list-drip2;
+#X obj 154 142 t b a;
+#X obj 103 433 print CURRENT-RESULT;
+#X msg 68 145 bang;
+#X text 65 125 Reset;
+#X msg 232 103 0.1 0.2 0.3 0.4;
+#X msg 354 103 0.01 0.02 0.03 0.04;
+#X obj 184 370 list prepend;
+#X obj 280 371 list;
+#X obj 103 405 list;
+#X obj 184 299 +;
+#X msg 154 105 1 3 4 7;
+#X msg 84 219 0;
+#X obj 88 176 t b b b;
+#N canvas 347 135 671 625 weighted 0;
+#X obj 435 225 list split 1;
+#X text 59 90 weighted sum of lists;
+#X obj 435 294 list-math *;
+#X obj 435 270 list;
+#X obj 435 248 t b f;
+#X msg 361 184 \$1 0 0 1;
+#X msg 435 184 \$1 0 1 0;
+#X obj 380 83 hsl 64 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 454 83 hsl 64 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 530 83 hsl 64 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 353 486 list;
+#X obj 361 149 f;
+#X obj 435 151 f;
+#X obj 511 153 f;
+#N canvas 0 0 516 490 list-accum 0;
+#X obj 319 215 bng 15 250 50 0 empty empty end 0 -6 0 8 -262144 -1
+-1;
+#X obj 230 171 t l b;
+#X obj 200 146 t b a;
+#X msg 399 128 bang;
+#X text 396 108 Reset;
+#X obj 230 374 list prepend;
+#X obj 326 375 list;
+#X obj 149 409 list;
+#X obj 230 303 +;
+#X msg 375 214 0;
+#X obj 379 171 t b b b;
+#X obj 149 437 outlet;
+#X obj 199 104 inlet;
+#X obj 343 106 inlet;
+#X obj 230 213 list-drip2;
+#X connect 1 0 14 0;
+#X connect 1 1 5 1;
+#X connect 2 0 7 0;
+#X connect 2 1 1 0;
+#X connect 3 0 10 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 11 0;
+#X connect 7 0 14 1;
+#X connect 8 0 5 0;
+#X connect 9 0 8 1;
+#X connect 10 0 9 0;
+#X connect 10 1 14 0;
+#X connect 10 2 14 1;
+#X connect 12 0 2 0;
+#X connect 13 0 10 0;
+#X connect 14 0 8 0;
+#X connect 14 1 8 1;
+#X connect 14 2 0 0;
+#X restore 376 444 pd list-accum;
+#X obj 354 509 print W_SUM;
+#X msg 266 81 bang;
+#X obj 269 104 t b b b;
+#X msg 511 183 \$1 1 1 0;
+#X obj 376 38 hsl 64 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 375 59 t b f;
+#X connect 0 0 4 0;
+#X connect 0 1 3 1;
+#X connect 2 0 14 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 2 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 11 1;
+#X connect 8 0 12 1;
+#X connect 9 0 13 1;
+#X connect 10 0 15 0;
+#X connect 11 0 5 0;
+#X connect 12 0 6 0;
+#X connect 13 0 18 0;
+#X connect 14 0 10 1;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
+#X connect 17 1 11 0;
+#X connect 17 1 12 0;
+#X connect 17 1 13 0;
+#X connect 17 2 14 1;
+#X connect 18 0 0 0;
+#X connect 19 0 20 0;
+#X connect 20 0 17 0;
+#X connect 20 1 11 1;
+#X restore 434 245 pd weighted;
+#X obj 184 209 list-drip2;
+#X text 419 223 Add lists weighted:;
+#X connect 1 0 17 0;
+#X connect 1 1 9 1;
+#X connect 3 0 11 0;
+#X connect 3 1 1 0;
+#X connect 5 0 15 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 9 0 10 0;
+#X connect 9 0 11 1;
+#X connect 10 0 9 1;
+#X connect 11 0 4 0;
+#X connect 11 0 17 1;
+#X connect 12 0 9 0;
+#X connect 13 0 3 0;
+#X connect 14 0 12 1;
+#X connect 15 0 14 0;
+#X connect 15 1 17 0;
+#X connect 15 2 17 1;
+#X connect 17 0 12 0;
+#X connect 17 1 12 1;
+#X connect 17 2 0 0;
+#X restore 415 583 pd add-lots-of-lists;
+#X text 418 557 Another example:;
+#X obj 297 97 list-drip2;
+#X obj 123 388 list-drip2;
+#X msg 124 326 1 2 3 4;
+#X msg 196 326 5 6 7 8;
+#X msg 396 70 4 5 6 d e f ignored;
+#N canvas 431 110 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION drip or serialize a list \, that is \, send
+all elements one after another.;
+#X text 12 75 INLET_0 anything;
+#X text 12 95 OUTLET_0 symbol float pointer;
+#X text 12 115 OUTLET_1 bang;
+#X text 12 135 AUTHOR Frank Barknecht \, Mathieu Bouchard;
+#X restore 567 624 pd META;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 1 0 0 0;
+#X connect 4 0 27 0;
+#X connect 8 0 22 0;
+#X connect 10 0 11 1;
+#X connect 11 0 10 0;
+#X connect 11 0 12 1;
+#X connect 12 0 13 0;
+#X connect 14 0 29 0;
+#X connect 14 1 30 0;
+#X connect 15 0 14 0;
+#X connect 16 0 28 0;
+#X connect 16 1 11 1;
+#X connect 21 0 12 0;
+#X connect 24 0 11 0;
+#X connect 27 0 6 0;
+#X connect 27 1 7 0;
+#X connect 27 2 5 0;
+#X connect 28 0 24 0;
+#X connect 28 1 24 1;
+#X connect 28 2 8 0;
+#X connect 29 0 16 0;
+#X connect 30 0 28 1;
+#X connect 31 0 27 1;

+ 47 - 0
extra/list-abs/list-drip.pd

@@ -0,0 +1,47 @@
+#N canvas 218 94 842 634 10;
+#X obj 63 84 t a a;
+#X obj 63 241 spigot;
+#X obj 102 149 bang;
+#X obj 102 168 1;
+#X obj 223 149 route bang;
+#X obj 183 150 bang;
+#X obj 183 169 0;
+#X obj 102 114 list split 2;
+#X obj 232 379 list split;
+#X obj 299 328 list length;
+#X obj 299 350 >> 1;
+#X obj 63 260 t a a a a;
+#X obj 63 446 list split;
+#X obj 130 398 list length;
+#X obj 130 423 >> 1;
+#X obj 31 19 inlet;
+#X obj 290 175 outlet;
+#X text 73 19 Copyright 2009 by Mathieu Bouchard;
+#X obj 31 53 t b a;
+#X obj 465 119 outlet;
+#X text 520 121 signal end of list;
+#X text 381 23 made compatible with [list-drip]: fbar 2009;
+#X connect 0 0 1 0;
+#X connect 0 1 7 0;
+#X connect 1 0 11 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 1;
+#X connect 4 1 16 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 7 0 2 0;
+#X connect 7 2 4 0;
+#X connect 7 2 5 0;
+#X connect 8 0 0 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 1;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 11 2 8 0;
+#X connect 11 3 9 0;
+#X connect 12 1 0 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 1;
+#X connect 15 0 18 0;
+#X connect 18 0 19 0;
+#X connect 18 1 0 0;

+ 37 - 0
extra/list-abs/list-drip2-help.pd

@@ -0,0 +1,37 @@
+#N canvas 0 26 588 432 10;
+#X obj 146 235 list-drip2;
+#X text 72 58 Drips two lists in sync \, as long as the first list
+lasts.;
+#X text 42 25 list-drip2;
+#X msg 213 208 a b c d;
+#X obj 213 258 bng 15 250 50 0 empty empty End_of_1st_list 17 7 1 10
+-262144 -1 -1;
+#X obj 179 306 print 2nd;
+#X obj 146 334 print 1st;
+#X msg 146 122 1 2 3 4;
+#X msg 146 100 1 2 3;
+#X msg 146 145 1 2 3 4 5;
+#X obj 146 199 t a b;
+#N canvas 436 26 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 175 AUTHOR Frank Barknecht;
+#X text 12 195 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION drip two lists in sync \, as long as the
+first list lasts;
+#X text 12 95 INLET_1 anything;
+#X text 12 75 INLET_0 anything;
+#X text 12 135 OUTLET_1 float symbol;
+#X text 12 115 OUTLET_0 float symbol;
+#X text 12 155 OUTLET_2 bang;
+#X restore 517 397 pd META;
+#X connect 0 0 6 0;
+#X connect 0 1 5 0;
+#X connect 0 2 4 0;
+#X connect 3 0 0 1;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 0 0;
+#X connect 10 1 3 0;

+ 19 - 0
extra/list-abs/list-drip2.pd

@@ -0,0 +1,19 @@
+#N canvas 161 215 536 406 10;
+#X text 81 50 Drips two lists in sync \, as long as the first list
+lasts.;
+#X obj 96 273 outlet;
+#X obj 96 87 inlet;
+#X obj 189 270 outlet;
+#X obj 257 272 outlet;
+#X obj 353 125 inlet;
+#X text 304 270 End;
+#X obj 96 163 list-drip;
+#X obj 96 186 t a b;
+#X obj 189 222 list-dripslow;
+#X connect 2 0 7 0;
+#X connect 5 0 9 1;
+#X connect 7 0 8 0;
+#X connect 7 1 4 0;
+#X connect 8 0 1 0;
+#X connect 8 1 9 0;
+#X connect 9 0 3 0;

+ 70 - 0
extra/list-abs/list-dripslow-help.pd

@@ -0,0 +1,70 @@
+#N canvas 0 26 488 309 10;
+#X msg 208 152 1 2 3 4;
+#X obj 122 229 print element;
+#X obj 208 202 print EOL;
+#X msg 122 146 bang;
+#X text 60 30 list-dripslow: Serialize a list on demand.;
+#X text 56 69 First set list through right inlet \, then on each bang
+into left inlet \, one element will be output through left outlet.
+Right outlet bangs at list's end.;
+#N canvas 401 196 593 450 drip-many-example 0;
+#X obj 122 171 list-drip;
+#X obj 122 194 t a b;
+#X obj 122 323 print L1;
+#X obj 207 324 print L2;
+#X obj 297 326 print L3;
+#X obj 207 249 t a b;
+#X obj 122 121 t b b b;
+#X text 160 39 Drip many lists in sync;
+#X msg 122 92 bang;
+#X msg 383 187 A B C;
+#X msg 293 187 1 2 3;
+#X msg 122 149 x y z;
+#X obj 207 225 list-dripslow;
+#X obj 297 283 list-dripslow;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 12 0;
+#X connect 5 0 3 0;
+#X connect 5 1 13 0;
+#X connect 6 0 11 0;
+#X connect 6 1 10 0;
+#X connect 6 2 9 0;
+#X connect 8 0 6 0;
+#X connect 9 0 13 1;
+#X connect 10 0 12 1;
+#X connect 11 0 0 0;
+#X connect 12 0 5 0;
+#X connect 13 0 4 0;
+#X restore 332 185 pd drip-many-example;
+#N canvas 606 157 450 300 drip-emulation 0;
+#X obj 140 194 list-dripslow;
+#X obj 140 117 t b l;
+#X obj 140 167 until;
+#X obj 140 224 print;
+#X msg 140 82 1 2 3 4 5 6 7 achtung;
+#X text 135 49 drip fast with dripslow;
+#X connect 0 0 3 0;
+#X connect 0 1 2 1;
+#X connect 1 0 2 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 4 0 1 0;
+#X restore 332 219 pd drip-emulation;
+#X obj 122 180 list-dripslow;
+#N canvas 416 170 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 145 AUTHOR Frank Barknecht;
+#X text 12 165 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION serialize a list on demand;
+#X text 12 65 INLET_0 bang;
+#X text 12 85 INLET_1 anything;
+#X text 12 105 INLET_2 float symbol pointer;
+#X text 12 125 OUTLET_0 bang;
+#X restore 437 287 pd META;
+#X connect 0 0 8 1;
+#X connect 3 0 8 0;
+#X connect 8 0 1 0;
+#X connect 8 1 2 0;

+ 21 - 0
extra/list-abs/list-dripslow.pd

@@ -0,0 +1,21 @@
+#N canvas 592 504 407 292 10;
+#X obj 148 186 list split 1;
+#X obj 148 161 list append;
+#X obj 148 237 outlet;
+#X obj 148 37 inlet;
+#X obj 229 237 outlet;
+#X obj 222 35 inlet;
+#X obj 148 72 b;
+#X text 265 36 list;
+#X text 103 37 bang;
+#X text 273 237 EOL;
+#X text 89 236 element;
+#X obj 229 207 b;
+#X connect 0 0 2 0;
+#X connect 0 1 1 1;
+#X connect 0 2 11 0;
+#X connect 1 0 0 0;
+#X connect 3 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 11 0 4 0;

+ 49 - 0
extra/list-abs/list-emath-help.pd

@@ -0,0 +1,49 @@
+#N canvas 0 26 538 413 10;
+#X obj 87 209 print add;
+#X msg 87 138 5 5 5 5 x;
+#X text 79 22 list-emath: Do math on lists element by element;
+#X msg 350 141 0 1 2 3 4;
+#X msg 271 140 5 5 5 5 x;
+#X msg 88 256 5 5 5 5 x;
+#X msg 269 262 5 5 5 5 x;
+#X obj 271 211 print mult;
+#X obj 88 327 print sub;
+#X obj 269 333 print div;
+#X obj 269 294 list-emath /;
+#X obj 87 171 list-emath +;
+#X obj 271 173 list-emath *;
+#X obj 88 289 list-emath -;
+#X msg 348 263 0 1 x 3 4;
+#X msg 167 257 0 1 2 x 4;
+#X msg 166 139 0 1 2 x 4;
+#X text 80 55 Non-floats in second list will be replaced by 0 for +
+and - \, and by 1 for * and /.;
+#X msg 430 262 0 0 0 0 0;
+#X text 428 243 Just say no!;
+#X text 80 91 Symbols in first list will pass unchanged.;
+#X text 83 376 Also see list-add \, list-mult \, list-sub for shortcuts.
+;
+#N canvas 416 170 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION do math on lists element by element;
+#X text 12 65 INLET_0 list;
+#X text 12 85 INLET_1 list;
+#X text 12 105 OUTLET_0 list;
+#X restore 483 386 pd META;
+#X connect 1 0 11 0;
+#X connect 3 0 12 1;
+#X connect 4 0 12 0;
+#X connect 5 0 13 0;
+#X connect 6 0 10 0;
+#X connect 10 0 9 0;
+#X connect 11 0 0 0;
+#X connect 12 0 7 0;
+#X connect 13 0 8 0;
+#X connect 14 0 10 1;
+#X connect 15 0 13 1;
+#X connect 16 0 11 1;
+#X connect 18 0 10 1;

+ 53 - 0
extra/list-abs/list-emath.pd

@@ -0,0 +1,53 @@
+#N canvas 256 135 500 518 10;
+#X obj 59 31 inlet;
+#X obj 287 28 inlet;
+#X obj 59 437 outlet;
+#X obj 78 138 list-drip;
+#X obj 264 131 list;
+#X obj 178 234 list-dripslow;
+#X obj 78 287 route float;
+#X obj 178 261 route float;
+#X obj 78 162 t a b b;
+#X obj 78 379 list prepend;
+#X obj 176 379 t a;
+#X obj 59 404 list;
+#X obj 136 57 s \$0-reset;
+#X obj 157 343 r \$0-reset;
+#X obj 59 58 t b a b b;
+#X obj 341 49 loadbang;
+#X obj 341 99 select + - * /;
+#X msg 341 129 0;
+#X msg 387 128 1;
+#X obj 341 76 symbol \$1;
+#X obj 325 232 f;
+#X obj 78 322 \$1;
+#X connect 0 0 14 0;
+#X connect 1 0 4 1;
+#X connect 3 0 8 0;
+#X connect 4 0 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 21 0;
+#X connect 6 1 9 0;
+#X connect 7 0 21 1;
+#X connect 8 0 6 0;
+#X connect 8 1 5 0;
+#X connect 8 2 20 0;
+#X connect 9 0 10 0;
+#X connect 9 0 11 1;
+#X connect 10 0 9 1;
+#X connect 11 0 2 0;
+#X connect 13 0 9 1;
+#X connect 14 0 11 0;
+#X connect 14 1 3 0;
+#X connect 14 2 4 0;
+#X connect 14 3 12 0;
+#X connect 15 0 19 0;
+#X connect 16 0 17 0;
+#X connect 16 1 17 0;
+#X connect 16 2 18 0;
+#X connect 16 3 18 0;
+#X connect 17 0 20 1;
+#X connect 18 0 20 1;
+#X connect 19 0 16 0;
+#X connect 20 0 21 1;
+#X connect 21 0 9 0;

+ 33 - 0
extra/list-abs/list-enumerate-help.pd

@@ -0,0 +1,33 @@
+#N canvas 0 26 540 454 10;
+#X obj 152 196 list-enumerate;
+#X obj 152 274 list trim;
+#X obj 152 254 list prepend add;
+#X text 41 39 [list-enumerate];
+#X text 57 73 serialize a list and put numbers in front of every element
+;
+#X msg 225 275 set;
+#X obj 152 158 t a b;
+#X msg 152 137 a b c d 0 1 2 3;
+#X obj 243 216 bng 15 250 50 0 empty empty EOL 17 7 1 10 -262144 -1
+-1;
+#N canvas 416 170 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 135 AUTHOR Frank Barknecht;
+#X text 12 95 OUTLET_0 list;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION serialize a list and put numbers in front
+of every element;
+#X text 12 75 INLET_0 anything;
+#X text 12 115 OUTLET_1 bang;
+#X restore 477 417 pd META;
+#X msg 152 303;
+#X connect 0 0 2 0;
+#X connect 0 1 8 0;
+#X connect 1 0 10 0;
+#X connect 2 0 1 0;
+#X connect 5 0 10 0;
+#X connect 6 0 0 0;
+#X connect 6 1 5 0;
+#X connect 7 0 6 0;

+ 35 - 0
extra/list-abs/list-enumerate.pd

@@ -0,0 +1,35 @@
+#N canvas 596 471 450 300 10;
+#X obj 152 100 list-drip;
+#X obj 152 78 t a b;
+#N canvas 473 338 450 300 count 0;
+#X obj 131 154 f 0;
+#X obj 156 153 + 1;
+#X msg 147 133 0;
+#X obj 131 183 outlet;
+#X obj 131 59 inlet;
+#X obj 131 96 b;
+#X obj 178 61 inlet;
+#X obj 178 98 b;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
+#X restore 231 170 pd count;
+#X obj 152 128 t a b;
+#X obj 152 48 inlet;
+#X obj 152 196 list prepend;
+#X obj 152 224 outlet;
+#X obj 210 224 outlet;
+#X connect 0 0 3 0;
+#X connect 0 1 7 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 1;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;

+ 59 - 0
extra/list-abs/list-equalize-help.pd

@@ -0,0 +1,59 @@
+#N canvas 0 26 562 531 10;
+#X obj 93 283 list-equalize;
+#X obj 93 71 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 93 248 pack 0 0 0;
+#X obj 115 209 t b f;
+#X obj 161 212 t b f;
+#X obj 93 310 unpack 0 0 0;
+#X obj 128 71 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 161 71 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 93 341 5 0 0 0 - - -;
+#X floatatom 132 341 5 0 0 0 - - -;
+#X floatatom 172 341 5 0 0 0 - - -;
+#X obj 93 367 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 132 367 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 172 367 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X text 207 34 list-equalize:;
+#X text 227 53 scale a list so that all float elements sum up to 1
+;
+#X text 227 77 L_result = L_input / sum(L_input);
+#X obj 306 253 list-equalize;
+#X obj 306 280 print;
+#X text 258 177 Also handles non-float elements gracefully.;
+#X msg 306 226 90 plus 10 is 100;
+#X text 40 138 0-127;
+#X text 42 427 0-1;
+#N canvas 416 170 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 115 AUTHOR Frank Barknecht;
+#X text 12 95 OUTLET_0 list;
+#X text 12 135 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 45 DESCRIPTION scale a list so that all float elements sum
+up to 1;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 75 INLET_0 anything;
+#X restore 500 502 pd META;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 2 0;
+#X connect 4 1 2 2;
+#X connect 5 0 8 0;
+#X connect 5 1 9 0;
+#X connect 5 2 10 0;
+#X connect 6 0 3 0;
+#X connect 7 0 4 0;
+#X connect 8 0 11 0;
+#X connect 9 0 12 0;
+#X connect 10 0 13 0;
+#X connect 17 0 18 0;
+#X connect 20 0 17 0;

+ 11 - 0
extra/list-abs/list-equalize.pd

@@ -0,0 +1,11 @@
+#N canvas 0 0 450 300 10;
+#X obj 139 43 inlet;
+#X obj 139 65 t a a;
+#X obj 139 166 list-math /;
+#X obj 211 93 list-accum;
+#X obj 139 227 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;

+ 36 - 0
extra/list-abs/list-extend-help.pd

@@ -0,0 +1,36 @@
+#N canvas 0 26 481 399 10;
+#X msg 102 183 1 2 3;
+#X msg 156 290 bang;
+#X msg 101 215 bang;
+#X msg 102 161 a b c;
+#X msg 102 139 x y z;
+#X msg 154 259 A B C;
+#X obj 68 323 list-extend;
+#X obj 68 363 print LIST-EXTEND;
+#X text 44 27 list-extend;
+#X text 60 52 Build a list from incoming lists or elements.;
+#X floatatom 101 119 5 0 0 0 - - -;
+#X text 97 97 Add elements or lists and output stored list.;
+#X text 146 219 output stored list;
+#X text 201 261 set complete stored list;
+#X text 201 292 set stored list to empty list (==reset);
+#N canvas 491 26 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 105 OUTLET_0 list;
+#X text 12 45 DESCRIPTION build a list from incoming lists or elements
+;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X restore 426 372 pd META;
+#X connect 0 0 6 0;
+#X connect 1 0 6 1;
+#X connect 2 0 6 0;
+#X connect 3 0 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 0;
+#X connect 10 0 6 0;

+ 13 - 0
extra/list-abs/list-extend.pd

@@ -0,0 +1,13 @@
+#N canvas 354 269 450 300 10;
+#X obj 77 41 inlet;
+#X obj 156 66 inlet;
+#X obj 77 257 outlet;
+#X text 72 21 add new elements to stored list and output it;
+#X text 156 47 set stored list \, no output;
+#X obj 77 153 list prepend;
+#X obj 172 153 t a;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 1;

+ 55 - 0
extra/list-abs/list-fifo-delim-help.pd

@@ -0,0 +1,55 @@
+#N canvas 0 26 697 652 10;
+#X obj 193 561 print;
+#X obj 193 357 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 300 383 1 2 3 4 5;
+#X symbolatom 313 404 10 0 0 0 - - -;
+#X floatatom 326 421 5 0 0 0 - - -;
+#X symbolatom 420 450 10 0 0 0 - - -;
+#X msg 110 438 clear;
+#X obj 293 535 bng 15 250 50 0 empty empty EOL 17 7 1 10 -262144 -1
+-1;
+#X text 118 201 CAUTION:;
+#X text 119 219 When a message contains the delimiter symbol \, it
+is falsely split into two parts.;
+#X text 119 254 Default delimiter between messages is the empty symbol.
+You can customize this with the first argument:;
+#X text 62 423 clear stored list;
+#X text 164 340 trigger output;
+#X text 289 341 store lists or elements;
+#X text 417 433 manually change delimiter symbol;
+#X text 105 606 Based on a patch and idea by Roman Haefli 2006;
+#X msg 291 363 eins due trois four;
+#X text 82 55 [list-fifo-delim];
+#X text 120 81 [list-fifo-delim] stores incoming (list-)messages and
+outputs them one by one on incoming bangs in the order they arrive
+like a FIFO: first in \, first out.;
+#X text 118 136 [list-fifo-delim] can be used to limit the number of
+messages passing during a certain time (might be usefull to limit the
+used network bandwidth). It also can be used as a sequencer.;
+#X obj 122 297 list-fifo-delim MY_DELIMITER;
+#X obj 193 502 list-fifo-delim;
+#X text 58 16 This object is obsolete! Use [list-fifo] instead!;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 195 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 135 OUTLET_0 list;
+#X text 12 45 DESCRIPTION This object is obsolete! Use [list-fifo]
+instead!;
+#X text 12 5 KEYWORDS control list_op deprecated;
+#X text 12 75 INLET_0 bang clear;
+#X text 12 115 INLET_2 symbol;
+#X text 12 95 INLET_1 anything;
+#X text 12 155 OUTLET_1 bang;
+#X text 12 174 AUTHOR Frank Barknecht \, Roman Haefli;
+#X restore 578 600 pd META;
+#X connect 1 0 21 0;
+#X connect 2 0 21 1;
+#X connect 3 0 21 1;
+#X connect 4 0 21 1;
+#X connect 5 0 21 2;
+#X connect 6 0 21 0;
+#X connect 16 0 21 1;
+#X connect 21 0 0 0;
+#X connect 21 1 7 0;

+ 56 - 0
extra/list-abs/list-fifo-delim.pd

@@ -0,0 +1,56 @@
+#N canvas 252 152 752 488 10;
+#X obj 22 272 list split 1;
+#X obj 22 224 until;
+#X obj 259 67 list append [delim];
+#X obj 22 395 list;
+#X obj 22 321 t b b;
+#X obj 22 26 inlet trigger;
+#X obj 259 25 inlet list;
+#X obj 423 26 inlet delimiter;
+#X obj 22 419 outlet;
+#X obj 101 420 outlet;
+#X obj 52 198 b;
+#X obj 423 78 symbol \$1;
+#X obj 441 48 loadbang;
+#X obj 423 124 route symbol;
+#X obj 22 75 route bang clear;
+#X obj 22 250 list;
+#X obj 259 155 list-extend;
+#X obj 115 365 list-extend;
+#X obj 301 131 t b b;
+#X obj 157 338 t b b;
+#X obj 22 296 select [delim];
+#X text 108 439 EOL;
+#X text 20 440 list;
+#X text 334 310 Based on a patch and idea by Roman Haefli 2006;
+#X connect 0 0 20 0;
+#X connect 0 1 15 1;
+#X connect 0 1 16 1;
+#X connect 0 2 9 0;
+#X connect 0 2 10 0;
+#X connect 1 0 15 0;
+#X connect 2 0 16 0;
+#X connect 3 0 8 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 1;
+#X connect 4 1 17 1;
+#X connect 5 0 14 0;
+#X connect 6 0 2 0;
+#X connect 7 0 11 0;
+#X connect 10 0 1 1;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 2 1;
+#X connect 13 0 20 1;
+#X connect 14 0 1 0;
+#X connect 14 1 18 0;
+#X connect 14 1 19 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 1;
+#X connect 17 0 3 1;
+#X connect 18 0 16 0;
+#X connect 18 1 16 1;
+#X connect 19 0 17 0;
+#X connect 19 1 17 1;
+#X connect 20 0 4 0;
+#X connect 20 1 17 0;

+ 53 - 0
extra/list-abs/list-fifo-help.pd

@@ -0,0 +1,53 @@
+#N canvas 0 26 587 530 10;
+#X msg 247 186 1 2 3 4 5;
+#X symbolatom 260 207 10 0 0 0 - - -;
+#X floatatom 273 224 5 0 0 0 - - -;
+#X obj 198 339 bng 15 250 50 0 empty empty EOL 17 7 1 10 -262144 -1
+-1;
+#X text 59 38 [list-fifo];
+#X text 97 64 [list-fifo] stores incoming (list-)messages and outputs
+them one by one on incoming bangs in the order they arrive like a FIFO:
+first in \, first out.;
+#X msg 295 274 bang;
+#X obj 140 305 list-fifo;
+#X text 82 439 2007 Frank Barknecht;
+#X msg 238 166 a b c;
+#X msg 140 149 bang;
+#X text 230 147 store lists or elements ("push");
+#X text 111 125 trigger output ("pop");
+#X text 277 255 clear stored list ("reset");
+#N canvas 0 0 450 300 show 0;
+#X obj 60 48 inlet;
+#X obj 60 72 list prepend set;
+#X obj 60 97 list trim;
+#X obj 60 126 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X restore 140 364 pd show;
+#X msg 74 262 clear;
+#X msg 140 390 1 2 3 4 5;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 175 AUTHOR Frank Barknecht;
+#X text 12 195 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 135 OUTLET_0 list;
+#X text 12 95 INLET_1 anything;
+#X text 12 155 OUTLET_1 bang;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION store incoming (list-)messages and output
+them one by one on incoming bangs in the order they arrive;
+#X text 12 75 INLET_0 bang;
+#X text 12 115 INLET_2 bang;
+#X restore 528 500 pd META;
+#X connect 0 0 7 1;
+#X connect 1 0 7 1;
+#X connect 2 0 7 1;
+#X connect 6 0 7 2;
+#X connect 7 0 14 0;
+#X connect 7 1 3 0;
+#X connect 9 0 7 1;
+#X connect 10 0 7 0;
+#X connect 14 0 16 0;
+#X connect 15 0 7 0;

+ 53 - 0
extra/list-abs/list-fifo.pd

@@ -0,0 +1,53 @@
+#N canvas 300 195 729 624 10;
+#X obj 268 56 inlet;
+#X obj 268 184 t a a;
+#X obj 268 250 list prepend;
+#X obj 366 302 t b a;
+#X obj 366 325 list;
+#X obj 143 379 list;
+#X obj 143 407 list split 1;
+#X obj 143 492 list split;
+#X obj 143 527 outlet;
+#X obj 71 56 inlet;
+#X text 380 252 prepend size of list;
+#X obj 222 528 outlet;
+#X obj 347 217 list-len;
+#X obj 366 55 inlet;
+#X text 419 304 store lists;
+#X text 256 445 get length of next stored list and split it off.;
+#X text 270 34 push;
+#X text 365 35 reset stack;
+#X obj 366 79 b;
+#X obj 71 138 route clear;
+#X obj 143 164 b;
+#X text 69 34 pop (or clear);
+#X obj 143 441 t b a;
+#X obj 143 467 list append;
+#X obj 71 164 b;
+#X obj 268 301 list prepend;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 12 0;
+#X connect 2 0 25 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 1;
+#X connect 4 0 25 1;
+#X connect 5 0 6 0;
+#X connect 6 0 22 0;
+#X connect 6 1 23 1;
+#X connect 6 2 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 3 0;
+#X connect 9 0 19 0;
+#X connect 12 0 2 1;
+#X connect 13 0 18 0;
+#X connect 18 0 3 0;
+#X connect 19 0 24 0;
+#X connect 19 1 20 0;
+#X connect 20 0 5 0;
+#X connect 22 0 23 0;
+#X connect 22 1 7 1;
+#X connect 23 0 7 0;
+#X connect 24 0 3 0;
+#X connect 25 0 3 0;

+ 81 - 0
extra/list-abs/list-filter-help.pd

@@ -0,0 +1,81 @@
+#N canvas 0 26 583 620 10;
+#X obj 226 453 mod 2;
+#X obj 226 483 != 0;
+#X obj 274 454 mod 3;
+#X obj 274 483 != 0;
+#X obj 226 517 &&;
+#X obj 226 426 t a a;
+#N canvas 0 0 450 300 show 0;
+#X obj 129 107 list prepend set;
+#X obj 129 129 list trim;
+#X obj 129 79 inlet;
+#X obj 129 154 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X restore 70 548 pd show;
+#X msg 70 574;
+#X text 62 27 [list-filter];
+#X text 66 58 [list-filter] returns a sequence consisting of those
+items from the sequence for which the user-defined operation cross-connected
+to the rightmost in- and outlet is true.;
+#X text 66 112 Everything that is not 0 is considered a TRUE value.
+Internally [select 0] is used.;
+#X msg 70 213 0 1 2 3 4 5;
+#N canvas 0 0 450 300 show 0;
+#X obj 129 107 list prepend set;
+#X obj 129 129 list trim;
+#X obj 129 79 inlet;
+#X obj 129 154 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X restore 70 306 pd show;
+#X msg 70 332;
+#X obj 167 266 >= 3;
+#X text 67 163 Examples:;
+#X text 217 266 remove values smaller than 3 from list;
+#X obj 160 212 t b a;
+#X floatatom 160 193 5 0 0 0 - - -;
+#X text 200 212 "bang" to [list-filter] will resend the last list;
+#X obj 70 265 list-filter;
+#X text 70 362 Calculate some small primes:;
+#X msg 70 387 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
+23 24;
+#X obj 70 471 list-filter;
+#X msg 82 526 bang;
+#X msg 79 285 bang;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 AUTHOR Frank Barknecht;
+#X text 12 175 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 115 OUTLET_0 list;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION return a list of items for which the operation
+cross-connected to the rightmost in- and outlet is true.;
+#X text 12 75 INLET_0 list;
+#X text 12 95 INLET_1 float;
+#X text 12 135 OUTLET_1 float;
+#X restore 508 580 pd META;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 1;
+#X connect 4 0 23 1;
+#X connect 5 0 0 0;
+#X connect 5 1 2 0;
+#X connect 6 0 7 0;
+#X connect 11 0 20 0;
+#X connect 12 0 13 0;
+#X connect 14 0 20 1;
+#X connect 17 0 20 0;
+#X connect 17 1 14 1;
+#X connect 18 0 17 0;
+#X connect 20 0 12 0;
+#X connect 20 1 14 0;
+#X connect 22 0 23 0;
+#X connect 23 0 6 0;
+#X connect 23 1 5 0;
+#X connect 24 0 6 0;
+#X connect 25 0 12 0;

+ 41 - 0
extra/list-abs/list-filter.pd

@@ -0,0 +1,41 @@
+#N canvas 728 203 519 432 10;
+#X obj 86 33 inlet;
+#X obj 275 52 inlet;
+#X obj 151 352 outlet;
+#X obj 169 268 outlet;
+#X obj 169 215 list-drip;
+#X obj 326 250 list prepend;
+#X obj 405 220 t a;
+#X obj 86 58 route bang;
+#X obj 86 83 b;
+#X obj 151 84 t b a;
+#X obj 151 124 list;
+#X obj 275 111 select 0;
+#X obj 326 133 b;
+#X obj 326 209 list;
+#X obj 169 244 t a a;
+#X obj 151 317 list;
+#X obj 151 155 t b a b b b;
+#X connect 0 0 7 0;
+#X connect 1 0 11 0;
+#X connect 4 0 14 0;
+#X connect 5 0 6 0;
+#X connect 5 0 15 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 16 0;
+#X connect 11 1 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 5 0;
+#X connect 14 0 3 0;
+#X connect 14 1 13 1;
+#X connect 15 0 2 0;
+#X connect 16 0 15 0;
+#X connect 16 1 4 0;
+#X connect 16 2 15 1;
+#X connect 16 3 5 1;
+#X connect 16 4 13 1;

+ 62 - 0
extra/list-abs/list-find-help.pd

@@ -0,0 +1,62 @@
+#N canvas 0 26 552 533 10;
+#X floatatom 159 259 5 0 0 0 - - -;
+#X obj 144 331 list-find;
+#X obj 202 293 loadbang;
+#X obj 101 449 print FOUND_AT;
+#X text 59 21 [list-find];
+#N canvas 516 236 450 300 collect 0;
+#X obj 195 37 inlet;
+#X obj 41 37 inlet;
+#X obj 41 144 outlet;
+#X msg 195 74 set;
+#X text 143 140 1993-2004 by Karlheinz Essl;
+#X text 143 160 vs. 1.1;
+#X obj 41 99 list trim;
+#X obj 41 74 list prepend add2;
+#X connect 0 0 3 0;
+#X connect 1 0 7 0;
+#X connect 3 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X restore 144 395 pd collect;
+#X obj 144 309 t a b;
+#X msg 159 237 0;
+#X msg 189 237 4;
+#X text 120 53 Find position(s) of a value in a list.;
+#X text 120 72 Inlet0: value to search;
+#X text 120 91 Inlet1: list to search in.;
+#X msg 144 184 seven;
+#X msg 202 315 0 1 2 3 4 5 6 seven eight 0 0;
+#X msg 144 206 symbol eight;
+#X msg 144 417;
+#X text 120 110 Outlet0: stream of found positions;
+#X floatatom 202 354 5 0 0 1 hits - -;
+#X msg 219 237 100;
+#X text 120 129 Outlet1: after list was completely scanned \, report
+number of elements found.;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 145 AUTHOR Frank Barknecht;
+#X text 12 165 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 125 OUTLET_1 float;
+#X text 12 45 DESCRIPTION find position(s) of a value in a list;
+#X text 12 65 INLET_0 float;
+#X text 12 85 INLET_1 list;
+#X text 12 105 OUTLET_0 float;
+#X restore 483 503 pd META;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 1 0 5 0;
+#X connect 1 1 17 0;
+#X connect 2 0 13 0;
+#X connect 5 0 15 0;
+#X connect 6 0 1 0;
+#X connect 6 1 5 1;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 12 0 6 0;
+#X connect 13 0 1 1;
+#X connect 14 0 6 0;
+#X connect 18 0 0 0;

+ 60 - 0
extra/list-abs/list-find.pd

@@ -0,0 +1,60 @@
+#N canvas 372 65 643 444 10;
+#X obj 91 359 f;
+#X obj 91 51 inlet;
+#X obj 183 47 inlet;
+#X obj 91 396 outlet;
+#X text 60 27 value to find;
+#X obj 91 180 list-drip;
+#X obj 91 210 t a b;
+#X obj 91 158 list;
+#X text 180 27 list to search in;
+#X text 208 103 [list-find] Find positions of a value (symbol or float)
+in a list.;
+#X obj 91 293 compare-any;
+#X obj 91 317 select 1;
+#N canvas 0 0 450 300 count 0;
+#X obj 120 148 f 0;
+#X obj 148 149 + 1;
+#X obj 163 100 0;
+#X obj 117 24 inlet;
+#X obj 119 176 outlet;
+#X obj 181 25 inlet;
+#X obj 114 47 b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 0 0;
+#X restore 121 245 pd count;
+#X obj 91 80 t b a b b;
+#X obj 176 395 outlet;
+#X obj 248 351 + 1;
+#X obj 176 375 f;
+#X obj 219 350 f 1;
+#X msg 235 317 1;
+#X msg 199 318 0;
+#X connect 0 0 3 0;
+#X connect 1 0 13 0;
+#X connect 2 0 7 1;
+#X connect 5 0 6 0;
+#X connect 5 1 16 0;
+#X connect 6 0 10 0;
+#X connect 6 1 12 0;
+#X connect 7 0 5 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 11 0 17 0;
+#X connect 12 0 0 1;
+#X connect 13 0 7 0;
+#X connect 13 1 10 1;
+#X connect 13 2 12 1;
+#X connect 13 3 18 0;
+#X connect 13 3 19 0;
+#X connect 15 0 17 1;
+#X connect 16 0 14 0;
+#X connect 17 0 16 1;
+#X connect 17 0 15 0;
+#X connect 18 0 17 1;
+#X connect 19 0 16 1;

+ 201 - 0
extra/list-abs/list-geometric-mean-help.pd

@@ -0,0 +1,201 @@
+#N struct 1106-dial float y;
+#N canvas 0 31 540 547 10;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 193 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 112 73 + 1;
+#X obj 112 53 random 10;
+#X obj 134 151 random 10;
+#X obj 134 171 + 1;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X restore 153 266 pd randlist;
+#X msg 153 244 bang;
+#X floatatom 98 400 5 0 0 1 geometric_mean - -;
+#X msg 153 292 8 6 7 3 8 3 1 7;
+#X msg 98 189 1 2 3 4;
+#X msg 98 215 any symbols 1 2 3 4 are ignored;
+#X text 96 146 Non-floats in a list are silently dropped.;
+#X obj 98 366 list-geometric-mean;
+#X text 86 22 [list-geometric-mean];
+#X text 96 51 Calculates the geometric mean of a list (of floats) according
+to:;
+#X text 96 119 where n is the total number of floats in a list.;
+#X text 232 329 0 destroys everything!;
+#X msg 154 328 1 2 0 3 4;
+#X text 114 91 geometric mean = pow(f0 * f1 * f2 * ... * fn \, 1/n)
+;
+#N canvas 318 53 648 574 graphical-mean 0;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 213 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 134 151 random 100;
+#X msg 112 59 10;
+#X obj 134 191 / 10;
+#X obj 134 170 + 1;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 3 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
+#X restore 79 388 pd randlist;
+#X msg 79 366 bang;
+#X obj 79 447 list prepend 0;
+#X obj 79 500 s \$0-tab;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-tab 10 float 0;
+#X coords 0 10 9 0 200 140 1;
+#X restore 75 152 graph;
+#N canvas 0 0 916 918 \$0-c 0;
+#X scalar 1106-dial 0 \;;
+#X coords 0 0 200 140 200 140 1;
+#X restore 75 152 pd \$0-c;
+#N canvas 0 0 503 429 create 0;
+#X msg 242 258 traverse pd-\$1 \, bang;
+#X obj 242 238 symbol \$0-c;
+#X msg 107 79 0;
+#X obj 242 278 pointer;
+#X msg 243 178 clear;
+#X obj 243 205 s pd-\$0-c;
+#X obj 107 114 t a b b;
+#X obj 107 50 loadbang;
+#X obj 107 326 outlet;
+#X obj 107 302 append \$0-dial y;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 9 1;
+#X connect 4 0 5 0;
+#X connect 6 0 9 0;
+#X connect 6 1 1 0;
+#X connect 6 2 4 0;
+#X connect 7 0 2 0;
+#X connect 9 0 8 0;
+#X restore 468 339 pd create;
+#X obj 339 127 metro 50;
+#X obj 339 102 tgl 15 0 empty empty show-mean 17 7 1 10 -258699 -262144
+-1 0 1;
+#N canvas 473 338 450 300 countto 0;
+#X obj 131 154 f 0;
+#X obj 156 153 + 1;
+#X msg 174 113 0;
+#X obj 131 183 outlet;
+#X obj 131 59 inlet;
+#X obj 131 116 until;
+#X obj 131 96 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 6 1 2 0;
+#X restore 362 195 pd countto;
+#X obj 362 219 tabread \$0-tab;
+#X obj 362 249 list prepend;
+#X obj 452 249 t a;
+#X msg 362 175 10;
+#X obj 339 148 t b b b;
+#X obj 339 274 list;
+#X obj 79 344 loadbang;
+#X msg 79 414 0.6 6.9 3.6 5.6 0.7 3.8 3.9 5.3 9.2 9.2;
+#X text 77 30 Switch on the "show"-metro and play with the values in
+the array.;
+#N canvas 336 319 712 355 \$0-dial 0;
+#X obj 19 119 outlet;
+#X obj 19 86 route change;
+#X obj 19 62 struct \$0-dial float y;
+#X obj 229 62 drawpolygon 900 2 0 y 200 y;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 453 315 pd \$0-dial;
+#X msg 213 469 bounds 0 10 9 0;
+#X obj 213 449 loadbang;
+#X obj 339 388 set \$0-dial y;
+#X floatatom 339 339 5 0 0 0 - - -;
+#X msg 92 469 const 5;
+#N canvas 0 0 299 354 scale 0;
+#X msg 74 83 10 \$1;
+#X obj 74 107 -;
+#X obj 74 158 * 140;
+#X obj 74 134 / 20;
+#X obj 74 49 inlet;
+#X obj 74 182 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 339 363 pd scale;
+#X obj 339 313 list-geometric-mean;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 6 0 22 1;
+#X connect 7 0 14 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 15 1;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X connect 14 0 15 0;
+#X connect 14 1 13 0;
+#X connect 14 2 11 1;
+#X connect 15 0 26 0;
+#X connect 16 0 1 0;
+#X connect 17 0 2 0;
+#X connect 19 0 22 1;
+#X connect 20 0 3 0;
+#X connect 21 0 20 0;
+#X connect 23 0 25 0;
+#X connect 24 0 3 0;
+#X connect 25 0 22 0;
+#X connect 26 0 23 0;
+#X restore 98 420 pd graphical-mean;
+#X obj 185 453 list-harmonic-mean;
+#X obj 184 474 list-mean;
+#X text 97 450 More means:;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION calculate the geometric mean of a list of
+floats;
+#X text 12 65 INLET_0 list;
+#X text 12 85 OUTLET_0 float;
+#X restore 478 520 pd META;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 3 0 7 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 0;
+#X connect 7 0 2 0;
+#X connect 12 0 7 0;

+ 54 - 0
extra/list-abs/list-geometric-mean.pd

@@ -0,0 +1,54 @@
+#N canvas 355 173 457 428 10;
+#X obj 127 69 inlet;
+#X obj 127 337 outlet;
+#X obj 146 138 list-drip;
+#X obj 146 164 route float;
+#X obj 127 274 f;
+#N canvas 425 298 450 300 count 0;
+#X obj 133 59 b;
+#X obj 133 35 inlet;
+#X obj 183 35 inlet;
+#X obj 164 111 + 1;
+#X obj 133 133 outlet;
+#X msg 183 71 1;
+#X obj 133 110 f 1;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 1;
+#X connect 5 0 6 1;
+#X connect 6 0 3 0;
+#X connect 6 0 4 0;
+#X restore 222 226 pd count;
+#X obj 146 189 t a b;
+#X obj 127 105 t b a b b;
+#X obj 222 253 pow -1;
+#X obj 127 302 pow;
+#N canvas 370 313 450 300 product 0;
+#X obj 135 79 inlet;
+#X obj 182 79 inlet;
+#X obj 135 169 outlet;
+#X obj 168 138 f;
+#X obj 135 137 *;
+#X obj 182 102 1;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 1;
+#X restore 146 225 pd product;
+#X connect 0 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 9 0;
+#X connect 5 0 8 0;
+#X connect 6 0 10 0;
+#X connect 6 1 5 0;
+#X connect 7 0 4 0;
+#X connect 7 1 2 0;
+#X connect 7 2 10 1;
+#X connect 7 3 5 1;
+#X connect 8 0 9 1;
+#X connect 9 0 1 0;
+#X connect 10 0 4 1;

+ 40 - 0
extra/list-abs/list-group-help.pd

@@ -0,0 +1,40 @@
+#N canvas 0 26 706 457 10;
+#X msg 118 97 list a b;
+#X msg 132 122 list c d e f;
+#X msg 199 225 3;
+#X msg 152 175 list a b c d e;
+#X msg 152 196 list f g;
+#X text 55 45 list-group - group items into lists of the same size
+;
+#X text 150 151 remaining items are stored and used for the next group:
+;
+#X floatatom 209 245 5 0 0 0 - - -;
+#X floatatom 73 230 5 0 0 0 - - -;
+#X text 63 353 It's a clone of [zl group];
+#X obj 118 296 print list-group;
+#X text 233 267 argument sets number of elements to group (default:
+1);
+#X text 257 220 change group size (at least 1) - changing will also
+empty the internal buffer;
+#X obj 118 268 list-group 2;
+#X text 94 382 Also see;
+#X obj 161 382 list-iter;
+#N canvas 460 46 494 396 META 0;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 105 OUTLET_0 list;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 85 INLET_1 float;
+#X text 12 45 DESCRIPTION group items into lists of the same size;
+#X text 12 65 INLET_0 list;
+#X restore 577 387 pd META;
+#X connect 0 0 13 0;
+#X connect 1 0 13 0;
+#X connect 2 0 13 1;
+#X connect 3 0 13 0;
+#X connect 4 0 13 0;
+#X connect 7 0 13 1;
+#X connect 8 0 13 0;
+#X connect 13 0 10 0;

+ 38 - 0
extra/list-abs/list-group.pd

@@ -0,0 +1,38 @@
+#N canvas 172 34 832 393 10;
+#X floatatom 385 85 5 0 0 2 change-size - -;
+#X obj 341 40 inlet;
+#X obj 180 60 inlet;
+#X obj 180 302 outlet;
+#X obj 341 84 f \$1;
+#X obj 180 183 list prepend;
+#X obj 180 111 t b a;
+#X obj 180 138 until;
+#X obj 261 270 t b a;
+#X obj 261 153 list prepend;
+#X obj 341 118 t b b f;
+#X text 393 116 reset (b) and set new length (f).;
+#X text 369 225 Lists shorter than group size are stored for next list.
+Lists longer get split at group size \, shorter part is put out \,
+longer part is re-evaluated.;
+#X obj 395 40 loadbang;
+#X obj 180 228 list split 1;
+#X obj 387 154 max 1;
+#X connect 0 0 10 0;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 14 0;
+#X connect 6 0 7 0;
+#X connect 6 1 9 0;
+#X connect 7 0 5 0;
+#X connect 8 0 7 1;
+#X connect 8 1 9 1;
+#X connect 9 0 5 1;
+#X connect 10 0 5 1;
+#X connect 10 1 9 1;
+#X connect 10 2 15 0;
+#X connect 13 0 4 0;
+#X connect 14 0 3 0;
+#X connect 14 1 5 1;
+#X connect 14 2 8 0;
+#X connect 15 0 14 1;

+ 204 - 0
extra/list-abs/list-harmonic-mean-help.pd

@@ -0,0 +1,204 @@
+#N struct 1033-dial float y;
+#N canvas 0 31 566 571 10;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 193 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 112 73 + 1;
+#X obj 112 53 random 10;
+#X obj 134 151 random 10;
+#X obj 134 171 + 1;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X restore 153 305 pd randlist;
+#X msg 153 283 bang;
+#X floatatom 98 439 5 0 0 1 harmonic_mean - -;
+#X msg 153 331 3 5 3 3 8;
+#X msg 98 228 1 2 3 4;
+#X msg 98 254 any symbols 1 2 3 4 are ignored;
+#X text 96 146 Non-floats in a list are silently dropped.;
+#X text 96 119 where n is the total number of floats in a list.;
+#N canvas 318 53 648 574 graphical-mean 0;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 213 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 134 151 random 100;
+#X msg 112 59 10;
+#X obj 134 191 / 10;
+#X obj 134 170 + 1;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 3 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
+#X restore 79 388 pd randlist;
+#X msg 79 366 bang;
+#X obj 79 447 list prepend 0;
+#X obj 79 500 s \$0-tab;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-tab 10 float 0;
+#X coords 0 10 9 0 200 140 1;
+#X restore 75 152 graph;
+#N canvas 0 0 916 918 \$0-c 0;
+#X scalar 1033-dial 0 \;;
+#X coords 0 0 200 140 200 140 1;
+#X restore 75 152 pd \$0-c;
+#N canvas 0 0 503 429 create 0;
+#X msg 242 258 traverse pd-\$1 \, bang;
+#X obj 242 238 symbol \$0-c;
+#X msg 107 79 0;
+#X obj 242 278 pointer;
+#X msg 243 178 clear;
+#X obj 243 205 s pd-\$0-c;
+#X obj 107 114 t a b b;
+#X obj 107 50 loadbang;
+#X obj 107 326 outlet;
+#X obj 107 302 append \$0-dial y;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 9 1;
+#X connect 4 0 5 0;
+#X connect 6 0 9 0;
+#X connect 6 1 1 0;
+#X connect 6 2 4 0;
+#X connect 7 0 2 0;
+#X connect 9 0 8 0;
+#X restore 440 364 pd create;
+#X obj 339 127 metro 50;
+#X obj 339 102 tgl 15 0 empty empty show-mean 17 7 1 10 -258699 -262144
+-1 0 1;
+#N canvas 473 338 450 300 countto 0;
+#X obj 131 154 f 0;
+#X obj 156 153 + 1;
+#X msg 174 113 0;
+#X obj 131 183 outlet;
+#X obj 131 59 inlet;
+#X obj 131 116 until;
+#X obj 131 96 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 6 1 2 0;
+#X restore 362 195 pd countto;
+#X obj 362 219 tabread \$0-tab;
+#X obj 362 249 list prepend;
+#X obj 452 249 t a;
+#X msg 362 175 10;
+#X obj 339 148 t b b b;
+#X obj 339 274 list;
+#X obj 79 344 loadbang;
+#X text 77 30 Switch on the "show"-metro and play with the values in
+the array.;
+#N canvas 336 319 712 355 \$0-dial 0;
+#X obj 19 119 outlet;
+#X obj 19 86 route change;
+#X obj 19 62 struct \$0-dial float y;
+#X obj 229 62 drawpolygon 900 2 0 y 200 y;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 425 340 pd \$0-dial;
+#X msg 213 469 bounds 0 10 9 0;
+#X obj 213 449 loadbang;
+#X obj 339 388 set \$0-dial y;
+#X floatatom 339 339 5 0 0 0 - - -;
+#X msg 92 469 const 5;
+#N canvas 0 0 299 354 scale 0;
+#X msg 74 83 10 \$1;
+#X obj 74 107 -;
+#X obj 74 158 * 140;
+#X obj 74 134 / 20;
+#X obj 74 49 inlet;
+#X obj 74 182 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 339 363 pd scale;
+#X obj 339 313 list-harmonic-mean;
+#X msg 79 414 5.7 6 8.1 9.9 3.1 6.5 9.7 5.8 5.6 0.9;
+#X connect 0 0 26 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 6 0 21 1;
+#X connect 7 0 14 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 15 1;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X connect 14 0 15 0;
+#X connect 14 1 13 0;
+#X connect 14 2 11 1;
+#X connect 15 0 25 0;
+#X connect 16 0 1 0;
+#X connect 18 0 21 1;
+#X connect 19 0 3 0;
+#X connect 20 0 19 0;
+#X connect 22 0 24 0;
+#X connect 23 0 3 0;
+#X connect 24 0 21 0;
+#X connect 25 0 22 0;
+#X connect 26 0 2 0;
+#X restore 98 459 pd graphical-mean;
+#X obj 98 405 list-harmonic-mean;
+#X text 86 22 [list-harmonic-mean];
+#X text 96 51 Calculates the harmonic mean of a list (of floats) according
+to:;
+#X msg 154 357 0 1 2 3 4;
+#X text 234 357 0 makes the harmonic mean limit to 0;
+#X text 95 171 If a 0 occurs \, the harmonic mean is set to 0 \, because
+if one value approaches zero \, the harmonic mean limits to zero as
+well.;
+#X obj 185 493 list-geometric-mean;
+#X obj 184 515 list-mean;
+#X text 97 494 More means:;
+#X text 114 91 harmonic mean = n / (1/f0 + 1/f1 + 1/f2 + ... + 1/fn)
+;
+#N canvas 491 26 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 65 INLET_0 list;
+#X text 12 85 OUTLET_0 float;
+#X text 12 45 DESCRIPTION Calculates the harmonic mean of a list of
+floats;
+#X restore 498 530 pd META;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 9 0;
+#X connect 9 0 2 0;
+#X connect 12 0 9 0;

+ 71 - 0
extra/list-abs/list-harmonic-mean.pd

@@ -0,0 +1,71 @@
+#N canvas 355 173 457 428 10;
+#X obj 127 69 inlet;
+#X obj 127 377 outlet;
+#X obj 146 138 list-drip;
+#X obj 146 164 route float;
+#X obj 127 314 f;
+#N canvas 425 298 450 300 count 0;
+#X obj 133 59 b;
+#X obj 133 35 inlet;
+#X obj 183 35 inlet;
+#X obj 164 111 + 1;
+#X obj 133 133 outlet;
+#X msg 183 71 1;
+#X obj 133 110 f 1;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 1;
+#X connect 5 0 6 1;
+#X connect 6 0 3 0;
+#X connect 6 0 4 0;
+#X restore 238 225 pd count;
+#X obj 146 189 t a b;
+#X obj 127 105 t b a b b;
+#X obj 146 250 pow -1;
+#X obj 127 342 *;
+#N canvas 370 313 660 345 sum-reci 0;
+#X obj 84 40 inlet;
+#X obj 183 40 inlet;
+#X obj 135 249 outlet;
+#X obj 168 218 f;
+#X obj 135 217 +;
+#X obj 183 183 0;
+#X obj 135 184 pow -1;
+#X obj 84 149 select 0;
+#X obj 219 249 outlet;
+#X obj 84 122 spigot 1;
+#X msg 135 90 1;
+#X msg 84 176 0;
+#X text 270 253 if a 0 occurs \, the harmonic mean always is 0 \, too!
+;
+#X connect 0 0 9 0;
+#X connect 1 0 5 0;
+#X connect 1 0 10 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 7 0 11 0;
+#X connect 7 1 6 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 11 0 8 0;
+#X restore 146 225 pd sum-reci;
+#X connect 0 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 10 0;
+#X connect 6 1 5 0;
+#X connect 7 0 4 0;
+#X connect 7 1 2 0;
+#X connect 7 2 10 1;
+#X connect 7 3 5 1;
+#X connect 8 0 4 1;
+#X connect 9 0 1 0;
+#X connect 10 0 8 0;
+#X connect 10 1 4 1;

+ 28 - 0
extra/list-abs/list-idx-help.pd

@@ -0,0 +1,28 @@
+#N canvas 0 31 434 313 10;
+#X obj 136 121 t b f;
+#X symbolatom 136 222 10 0 0 0 - - -;
+#X obj 136 78 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
+-1 0;
+#X msg 136 166 a b c d e f g h;
+#X obj 136 193 list-idx 2;
+#X text 86 52 list-idx: Get element at position idx.;
+#X floatatom 136 102 5 0 0 0 - - -;
+#X obj 136 245 print;
+#N canvas 444 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 float;
+#X text 12 105 OUTLET_0 symbol float pointer;
+#X text 12 45 DESCRIPTION get element at position idx;
+#X restore 377 287 pd META;
+#X connect 0 0 3 0;
+#X connect 0 1 4 1;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 6 0 0 0;

+ 14 - 0
extra/list-abs/list-idx.pd

@@ -0,0 +1,14 @@
+#N canvas 0 0 450 300 10;
+#X obj 122 108 inlet;
+#X obj 197 69 loadbang;
+#X obj 187 95 f \$1;
+#X obj 154 210 outlet;
+#X obj 187 47 inlet;
+#X obj 154 176 list split 1;
+#X obj 122 139 list-splat;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 1;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 6 1 5 0;

+ 37 - 0
extra/list-abs/list-insert-help.pd

@@ -0,0 +1,37 @@
+#N canvas 0 31 451 383 10;
+#X obj 125 251 list-insert 2;
+#X obj 168 172 hradio 15 1 0 8 empty empty POS_(zero-based) 0 -6 0
+8 -262144 -1 -1 0;
+#X msg 233 222 0 1 2 3 4 5 6;
+#X text 231 203 original list;
+#X floatatom 168 197 5 0 0 0 - - -;
+#X text 68 69 Argument: default POS;
+#X text 67 49 POS is zerobased. Negative POS will count from the end.
+;
+#X msg 125 132 list SOME ELEMENTS;
+#X msg 125 162 INS;
+#X text 65 12 list-insert: insert LIST before element at position POS
+in original list.;
+#X obj 125 280 print NEW_LIST;
+#X floatatom 125 190 5 0 0 0 - - -;
+#X text 125 113 LIST or element to insert;
+#N canvas 461 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 AUTHOR Frank Barknecht;
+#X text 12 175 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 75 INLET_0 anything;
+#X text 12 95 INLET_1 float;
+#X text 12 45 DESCRIPTION insert LIST before element at position POS
+in original list;
+#X text 12 115 INLET_2 anything;
+#X text 12 135 OUTLET_0 list;
+#X restore 397 357 pd META;
+#X connect 0 0 10 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 2;
+#X connect 4 0 0 1;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 11 0 0 0;

+ 63 - 0
extra/list-abs/list-insert.pd

@@ -0,0 +1,63 @@
+#N canvas 313 86 599 614 10;
+#X obj 94 50 inlet;
+#X obj 259 133 inlet;
+#X obj 308 134 inlet;
+#X text 257 112 pos;
+#X text 306 113 list;
+#X obj 173 180 list;
+#X obj 94 528 outlet;
+#X obj 94 308 list;
+#X obj 94 250 list prepend;
+#X text 91 29 list to insert;
+#X obj 173 206 list-splat \$1;
+#X obj 371 246 > 0;
+#X obj 292 337 route 0 1;
+#X obj 292 316 list prepend;
+#X obj 292 371 list prepend;
+#X obj 393 370 list;
+#X obj 94 75 t a b b a;
+#X obj 152 100 s \$0-insert;
+#X obj 416 338 r \$0-insert;
+#X obj 149 122 s \$0-init;
+#X obj 190 250 r \$0-init;
+#X obj 322 290 s \$0-out-of-range;
+#X obj 145 350 r \$0-out-of-range;
+#X obj 292 243 t a b;
+#X obj 94 374 spigot 1;
+#X obj 397 157 s \$0-out-of-range;
+#X obj 397 108 r \$0-init;
+#X obj 397 130 1;
+#X obj 322 266 0;
+#X obj 130 307 r \$0-init;
+#X text 231 524 This is more complicated than I thought!;
+#X connect 0 0 16 0;
+#X connect 1 0 10 1;
+#X connect 1 0 11 0;
+#X connect 2 0 5 1;
+#X connect 5 0 10 0;
+#X connect 7 0 24 0;
+#X connect 8 0 7 0;
+#X connect 10 0 8 1;
+#X connect 10 1 7 1;
+#X connect 10 2 23 0;
+#X connect 11 0 13 1;
+#X connect 12 0 14 0;
+#X connect 12 1 15 0;
+#X connect 13 0 12 0;
+#X connect 14 0 6 0;
+#X connect 15 0 6 0;
+#X connect 16 0 8 0;
+#X connect 16 1 5 0;
+#X connect 16 2 19 0;
+#X connect 16 3 17 0;
+#X connect 18 0 15 1;
+#X connect 18 0 14 1;
+#X connect 20 0 8 1;
+#X connect 22 0 24 1;
+#X connect 23 0 13 0;
+#X connect 23 1 28 0;
+#X connect 24 0 6 0;
+#X connect 26 0 27 0;
+#X connect 27 0 25 0;
+#X connect 28 0 21 0;
+#X connect 29 0 7 1;

+ 58 - 0
extra/list-abs/list-inter-help.pd

@@ -0,0 +1,58 @@
+#N canvas 0 31 555 606 10;
+#X text 101 83 inlets:;
+#X text 115 101 1) float 0-1: distance between lists;
+#X text 117 122 2) list 1;
+#X text 117 141 2) list 2;
+#X text 95 30 list-inter: elementwise linear interpolation between
+two (float) lists.;
+#X obj 228 153 hsl 128 15 0 1 0 0 empty empty factor_(0-1) -2 -6 0
+10 -262144 -1 -1 0 0;
+#X obj 225 359 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 264 359 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 304 359 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 225 333 5 0 0 0 - - -;
+#X floatatom 264 333 5 0 0 0 - - -;
+#X floatatom 304 333 5 0 0 0 - - -;
+#X obj 225 282 list-inter;
+#X text 87 519 Also see [triple-scale] \, but [list-inter] works for
+float lists of arbitrary length.;
+#X obj 225 311 unpack 0 0 0 0;
+#X obj 343 360 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 343 334 5 0 0 0 - - -;
+#X obj 164 307 print;
+#X text 96 63 Non-float elements in first list will be kept.;
+#X msg 257 181 5 2 9 3;
+#X msg 267 207 5 x 9 3;
+#X text 326 207 careful!;
+#X msg 290 255 8 7 1 10;
+#N canvas 432 135 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 AUTHOR Frank Barknecht;
+#X text 12 175 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 135 OUTLET_0 list;
+#X text 12 45 DESCRIPTION elementwise linear interpolation between
+two (float) lists;
+#X text 12 75 INLET_0 float;
+#X text 12 95 INLET_1 list;
+#X text 12 115 INLET_2 list;
+#X restore 497 577 pd META;
+#X connect 5 0 12 0;
+#X connect 9 0 6 0;
+#X connect 10 0 7 0;
+#X connect 11 0 8 0;
+#X connect 12 0 14 0;
+#X connect 12 0 17 0;
+#X connect 14 0 9 0;
+#X connect 14 1 10 0;
+#X connect 14 2 11 0;
+#X connect 14 3 16 0;
+#X connect 16 0 15 0;
+#X connect 19 0 12 1;
+#X connect 20 0 12 1;
+#X connect 22 0 12 2;

+ 103 - 0
extra/list-abs/list-inter-many-help.pd

@@ -0,0 +1,103 @@
+#N canvas 0 31 579 616 10;
+#X obj 195 419 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 234 419 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 274 419 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 195 393 5 0 0 0 - - -;
+#X floatatom 234 393 5 0 0 0 - - -;
+#X floatatom 274 393 5 0 0 0 - - -;
+#X obj 195 371 unpack 0 0 0 0;
+#X obj 313 420 vsl 15 128 0 10 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 313 394 5 0 0 0 - - -;
+#X obj 195 342 list-inter-many;
+#N canvas 239 261 368 386 randlist 0;
+#X msg 141 73 4;
+#X obj 141 103 until;
+#X obj 141 130 random 100;
+#X obj 141 157 / 10;
+#X obj 141 199 list prepend;
+#X obj 232 200 t a;
+#X obj 118 242 list;
+#X obj 118 47 t b b b;
+#X obj 118 24 inlet;
+#X obj 118 318 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 1;
+#X connect 5 0 4 1;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 7 1 0 0;
+#X connect 7 2 4 1;
+#X connect 8 0 7 0;
+#X restore 385 252 pd randlist;
+#X msg 295 307 clear;
+#X msg 295 285 print;
+#X msg 385 230 add random list;
+#X obj 195 261 / 100;
+#X floatatom 195 238 5 0 0 0 - - -;
+#X obj 385 207 until;
+#X msg 385 184 4;
+#X obj 244 262 line;
+#X floatatom 244 291 5 0 0 0 - - -;
+#X msg 244 239 0 \, 3 2000;
+#X msg 385 404;
+#X text 390 382 textfile contents:;
+#X msg 339 346 set;
+#X text 117 581 Also see:;
+#X obj 193 582 list-inter;
+#X text 97 16 [list-inter-many];
+#X obj 385 274 list prepend add;
+#X obj 385 297 list trim;
+#X text 94 73 Inlets:;
+#X text 94 41 Elementwise linear interpolation between several float
+lists stored in a [textfile] object internally.;
+#X text 98 188 Outlet: interpolated list.;
+#X text 108 151 1) [textfile] inlet. Use the selector "add" to add
+lists to the interpolation space;
+#X text 108 96 0) float: distance between lists. Values between 0 and
+1 will interpolate the first two lists \, values between 1 and 2 interpolate
+the second with the third list and so on.;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 135 AUTHOR Frank Barknecht;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 115 OUTLET_0 list;
+#X text 12 75 INLET_0 float;
+#X text 12 95 INLET_1 print add clear;
+#X text 12 45 DESCRIPTION elementwise linear interpolation between
+several float lists;
+#X restore 517 587 pd META;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 2 0;
+#X connect 6 0 3 0;
+#X connect 6 1 4 0;
+#X connect 6 2 5 0;
+#X connect 6 3 8 0;
+#X connect 8 0 7 0;
+#X connect 9 0 6 0;
+#X connect 10 0 27 0;
+#X connect 11 0 9 1;
+#X connect 11 0 23 0;
+#X connect 12 0 9 1;
+#X connect 13 0 10 0;
+#X connect 14 0 9 0;
+#X connect 15 0 14 0;
+#X connect 16 0 13 0;
+#X connect 17 0 16 0;
+#X connect 18 0 9 0;
+#X connect 18 0 19 0;
+#X connect 20 0 18 0;
+#X connect 23 0 21 0;
+#X connect 27 0 28 0;
+#X connect 28 0 9 1;
+#X connect 28 0 21 0;

+ 83 - 0
extra/list-abs/list-inter-many.pd

@@ -0,0 +1,83 @@
+#N canvas 452 377 578 375 10;
+#X obj 85 312 list-inter;
+#X obj 263 227 textfile;
+#N canvas 490 388 450 300 get-list 0;
+#X obj 61 48 inlet;
+#X msg 105 133 rewind;
+#X obj 83 158 until;
+#X obj 61 74 f;
+#X obj 61 97 t b a b;
+#X obj 61 221 outlet;
+#X obj 83 202 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 2 0;
+#X connect 4 2 1 0;
+#X restore 191 193 pd get-list;
+#X obj 191 263 list;
+#X obj 337 27 inlet;
+#X obj 191 97 int;
+#X obj 191 161 + 1;
+#X obj 191 139 t a a;
+#X obj 221 161 + 2;
+#N canvas 490 388 450 300 get-list 0;
+#X obj 61 48 inlet;
+#X msg 105 133 rewind;
+#X obj 83 158 until;
+#X obj 61 74 f;
+#X obj 61 97 t b a b;
+#X obj 61 221 outlet;
+#X obj 83 198 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 2 0;
+#X connect 4 2 1 0;
+#X restore 358 192 pd get-list;
+#X obj 358 262 list;
+#X obj 191 119 change;
+#X obj 85 22 inlet;
+#X obj 85 47 t a a;
+#X obj 85 335 outlet;
+#X obj 337 84 t b a;
+#X obj 147 77 moses 0;
+#N canvas 0 0 450 300 wrap 0;
+#X obj 139 160 -;
+#X obj 169 137 int;
+#X obj 139 116 t a a;
+#X obj 139 91 inlet;
+#X obj 139 185 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 2 0;
+#X restore 85 128 pd wrap;
+#X connect 0 0 14 0;
+#X connect 1 0 3 1;
+#X connect 1 0 10 1;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 3 0 0 1;
+#X connect 4 0 15 0;
+#X connect 5 0 11 0;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 7 1 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 1 0;
+#X connect 10 0 0 2;
+#X connect 11 0 7 0;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 13 1 16 0;
+#X connect 15 0 11 0;
+#X connect 15 1 1 0;
+#X connect 16 1 5 0;
+#X connect 17 0 0 0;

+ 48 - 0
extra/list-abs/list-inter.pd

@@ -0,0 +1,48 @@
+#N canvas 364 37 760 649 10;
+#X obj 345 204 list-drip;
+#X obj 426 327 list-dripslow;
+#X obj 345 264 t a b;
+#X obj 439 434 t l;
+#X obj 322 477 list;
+#X obj 322 502 outlet;
+#X obj 345 176 list;
+#X obj 368 145 inlet;
+#X obj 535 282 inlet;
+#X obj 345 64 inlet;
+#X obj 345 434 list prepend;
+#X obj 345 369 expr $f3*($f2-$f1) + $f1;
+#X text 23 67 inlets:;
+#X text 37 85 1) float 0-1: distance between lists;
+#X text 39 106 2) list 1;
+#X text 39 125 2) list 2;
+#X text 20 25 list-inter: elementwise linear interpolation between
+two (float) lists.;
+#X obj 345 93 t b f b;
+#X obj 512 303 list;
+#X obj 512 259 r \$0-start;
+#X obj 389 117 s \$0-start;
+#X obj 424 411 r \$0-start;
+#X obj 345 226 route float;
+#X text 14 197 Non-float elements in first list will be kept.;
+#X connect 0 0 22 0;
+#X connect 0 1 4 0;
+#X connect 1 0 11 1;
+#X connect 2 0 11 0;
+#X connect 2 1 1 0;
+#X connect 3 0 10 1;
+#X connect 4 0 5 0;
+#X connect 6 0 0 0;
+#X connect 7 0 6 1;
+#X connect 8 0 18 1;
+#X connect 9 0 17 0;
+#X connect 10 0 3 0;
+#X connect 10 0 4 1;
+#X connect 11 0 10 0;
+#X connect 17 0 6 0;
+#X connect 17 1 11 2;
+#X connect 17 2 20 0;
+#X connect 18 0 1 1;
+#X connect 19 0 18 0;
+#X connect 21 0 10 1;
+#X connect 22 0 2 0;
+#X connect 22 1 10 0;

+ 18 - 0
extra/list-abs/list-invint-help.pd

@@ -0,0 +1,18 @@
+#N canvas 121 115 518 278 10;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION Inverse (musical) intervals of a float list
+;
+#X text 12 65 INLET_0 list;
+#X text 12 85 OUTLET_0 list;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht;
+#X restore 443 251 pd META;
+#X obj 52 127 list-invint;
+#X msg 52 81 10 11 13 20;
+#X obj 52 164 print;
+#X text 38 26 list-invint: Inverse (musical) intervals of a float list
+;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;

+ 22 - 0
extra/list-abs/list-invint.pd

@@ -0,0 +1,22 @@
+#N canvas 229 30 753 746 10;
+#X obj 133 132 inlet;
+#X text 211 80 list-invint: Inverse intervals of a float list;
+#X msg 76 82 10 11 13 20;
+#X obj 133 351 outlet;
+#X obj 133 302 list-map;
+#X obj 217 319 -;
+#X obj 242 256 * 2;
+#X obj 217 289 swap;
+#X obj 133 166 t a a;
+#X obj 242 230 list split 1;
+#X connect 0 0 8 0;
+#X connect 2 0 8 0;
+#X connect 4 0 3 0;
+#X connect 4 1 7 0;
+#X connect 5 0 4 1;
+#X connect 6 0 7 1;
+#X connect 7 0 5 0;
+#X connect 7 1 5 1;
+#X connect 8 0 4 0;
+#X connect 8 1 9 0;
+#X connect 9 0 6 0;

+ 37 - 0
extra/list-abs/list-iter-help.pd

@@ -0,0 +1,37 @@
+#N canvas 0 32 584 444 10;
+#X msg 118 97 list a b;
+#X msg 132 122 list c d e f;
+#X msg 192 225 3;
+#X msg 152 155 list a b c d e;
+#X msg 152 176 list f g;
+#X floatatom 202 245 5 0 0 0 - - -;
+#X floatatom 73 230 5 0 0 0 - - -;
+#X text 55 45 list-iter - group lists into sub-lists with size-limit
+;
+#X text 63 353 It's a clone of [zl iter];
+#X text 94 382 Also see;
+#X obj 161 382 list-group;
+#X obj 118 296 print list-iter;
+#X obj 118 268 list-iter 2;
+#X text 241 224 change size limit (must be at least 1);
+#X text 233 267 argument sets size limit. Default: 1;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 105 OUTLET_0 list;
+#X text 12 45 DESCRIPTION group lists into sub-lists with size-limit
+;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 float;
+#X restore 527 417 pd META;
+#X connect 0 0 12 0;
+#X connect 1 0 12 0;
+#X connect 2 0 12 1;
+#X connect 3 0 12 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 1;
+#X connect 6 0 12 0;
+#X connect 12 0 11 0;

+ 37 - 0
extra/list-abs/list-iter.pd

@@ -0,0 +1,37 @@
+#N canvas 172 34 839 437 10;
+#X floatatom 343 76 5 0 0 2 change-size - -;
+#X obj 299 41 inlet;
+#X obj 138 51 inlet;
+#X obj 138 343 outlet;
+#X obj 299 75 f \$1;
+#X obj 138 174 list prepend;
+#X obj 138 102 t b a;
+#X obj 138 129 until;
+#X obj 219 261 t b a;
+#X text 351 107 reset (b) and set new length (f).;
+#X text 327 216 Lists shorter than group size are stored for next list.
+Lists longer get split at group size \, shorter part is put out \,
+longer part is re-evaluated.;
+#X obj 251 283 route bang;
+#X obj 138 219 list split 1;
+#X obj 331 186 max 1;
+#X obj 299 109 t b f;
+#X obj 343 41 loadbang;
+#X connect 0 0 14 0;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 4 0 14 0;
+#X connect 5 0 12 0;
+#X connect 6 0 7 0;
+#X connect 6 1 5 1;
+#X connect 7 0 5 0;
+#X connect 8 0 7 1;
+#X connect 8 1 11 0;
+#X connect 11 1 3 0;
+#X connect 12 0 3 0;
+#X connect 12 1 5 1;
+#X connect 12 2 8 0;
+#X connect 13 0 12 1;
+#X connect 14 0 5 1;
+#X connect 14 1 13 0;
+#X connect 15 0 4 0;

+ 33 - 0
extra/list-abs/list-l2s-help.pd

@@ -0,0 +1,33 @@
+#N canvas 0 31 518 278 10;
+#X msg 52 90 a b c d 1 2;
+#X msg 165 90 a b c d 1 2;
+#X msg 288 91 a b c d 1 2;
+#X symbolatom 165 154 15 0 0 0 - - -;
+#X symbolatom 52 155 10 0 0 0 - - -;
+#X symbolatom 288 154 25 0 0 0 - - -;
+#X obj 52 127 list-l2s;
+#X obj 165 126 list-l2s -;
+#X obj 288 124 list-l2s _|_;
+#X msg 395 90 symbol PD;
+#X text 54 42 Concatenate a list into a single symbol using ARG1 as
+delimiter. Delimiter can be set through second inlet.;
+#X text 55 20 list-l2s;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 135 AUTHOR Frank Barknecht;
+#X text 12 155 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op symbol_op;
+#X text 12 45 DESCRIPTION concatenate a list into a single symbol using
+ARG1 as delimiter;
+#X text 12 75 INLET_0 anything;
+#X text 12 95 INLET_1 symbol;
+#X text 12 115 OUTLET_0 symbol;
+#X restore 443 251 pd META;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 8 1;

+ 42 - 0
extra/list-abs/list-l2s.pd

@@ -0,0 +1,42 @@
+#N canvas 424 382 729 381 10;
+#X msg 327 196 set %s;
+#X obj 235 244 t a;
+#X obj 118 252 makefilename %s;
+#X obj 96 62 t b a b;
+#X obj 96 283 symbol;
+#X msg 142 22 a b c d 1 2;
+#X obj 118 158 route symbol float;
+#X obj 118 186 symbol;
+#X obj 96 21 inlet;
+#X obj 96 313 outlet;
+#X obj 395 192 makefilename 1%s%%s;
+#X obj 395 165 symbol \$1;
+#X msg 405 123 bang;
+#X obj 395 89 loadbang;
+#X msg 395 228 set set \, adddollsym \$1;
+#X msg 235 265 set \$1%s;
+#X obj 447 124 inlet;
+#X obj 178 190 makefilename %g;
+#X obj 118 123 list-drip;
+#X connect 0 0 2 0;
+#X connect 1 0 15 0;
+#X connect 2 0 1 0;
+#X connect 2 0 4 1;
+#X connect 3 0 4 0;
+#X connect 3 1 18 0;
+#X connect 3 2 0 0;
+#X connect 4 0 9 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 1 17 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 10 0 14 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 2 0;
+#X connect 16 0 11 0;
+#X connect 17 0 2 0;
+#X connect 18 0 6 0;

+ 23 - 0
extra/list-abs/list-lastx-help.pd

@@ -0,0 +1,23 @@
+#N canvas 0 31 498 331 10;
+#X floatatom 168 128 5 0 0 0 - - -;
+#X obj 168 184 print last_x;
+#X floatatom 247 129 5 0 0 2 change-size - -;
+#X text 104 62 list-lastx: make a list of the last x floats.;
+#X obj 168 153 list-lastx 4;
+#X msg 266 153 bang;
+#X text 308 152 reset stored list;
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION make a list of the last x floats;
+#X text 12 65 INLET_0 float;
+#X text 12 85 INLET_1 float bang;
+#X text 12 105 OUTLET_0 list;
+#X restore 425 291 pd META;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;

+ 25 - 0
extra/list-abs/list-lastx.pd

@@ -0,0 +1,25 @@
+#N canvas 119 92 810 481 10;
+#X obj 153 175 cnv 15 150 80 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X floatatom 370 79 5 0 0 2 change-size - -;
+#X obj 326 112 t f b;
+#X text 378 110 first reset (b) \, then set new length (f).;
+#X text 311 195 Right outlet is responsible to first fill the list
+;
+#X text 312 211 Left outlet then only lets the smaller list pass.;
+#X obj 180 183 list;
+#X obj 326 54 inlet;
+#X obj 180 149 inlet;
+#X obj 180 302 outlet;
+#X obj 180 228 list split \$1;
+#X obj 326 78 f \$1;
+#X connect 1 0 2 0;
+#X connect 2 0 10 1;
+#X connect 2 1 6 1;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 6 0;
+#X connect 10 0 6 1;
+#X connect 10 0 9 0;
+#X connect 10 2 6 1;
+#X connect 11 0 2 0;

+ 28 - 0
extra/list-abs/list-len-help.pd

@@ -0,0 +1,28 @@
+#N canvas 0 31 450 300 10;
+#X obj 123 162 list-len;
+#X msg 160 132 1 2 3 4 5 6;
+#X obj 123 232 print Length;
+#X floatatom 141 197 5 0 0 0 - - -;
+#X msg 123 77 bang;
+#X text 47 20 list-len: calculate length of a list.;
+#X msg 136 101 1;
+#X text 182 74 empty list;
+#X text 218 102 convert atom to 1-elem list;
+#X text 262 133 "real" lists;
+#X msg 167 101 dog;
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 65 INLET_0 anything;
+#X text 12 45 DESCRIPTION calculate length of a list;
+#X text 12 85 OUTLET_0 float;
+#X restore 386 261 pd META;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 4 0 0 0;
+#X connect 6 0 0 0;
+#X connect 10 0 0 0;

+ 9 - 0
extra/list-abs/list-len.pd

@@ -0,0 +1,9 @@
+#N canvas 0 0 534 321 10;
+#X obj 126 70 inlet;
+#X obj 126 271 outlet;
+#X text 37 37 list-len: calculate length of a list.;
+#X obj 126 149 list length;
+#X obj 126 125 list;
+#X connect 0 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;

+ 53 - 0
extra/list-abs/list-lifo-help.pd

@@ -0,0 +1,53 @@
+#N canvas 0 31 546 480 10;
+#X msg 247 186 1 2 3 4 5;
+#X symbolatom 260 207 10 0 0 0 - - -;
+#X floatatom 273 224 5 0 0 0 - - -;
+#X obj 198 339 bng 15 250 50 0 empty empty EOL 17 7 1 10 -262144 -1
+-1;
+#X msg 295 274 bang;
+#X msg 238 166 a b c;
+#X msg 140 149 bang;
+#X text 230 147 store lists or elements ("push");
+#X text 111 125 trigger output ("pop");
+#X text 277 255 clear stored list ("reset");
+#X obj 140 305 list-lifo;
+#X text 60 38 [list-lifo];
+#X text 97 64 [list-lifo] stores incoming (list-)messages and outputs
+them one by one on incoming bangs in the opposite order of arrival
+like a LIFO: Last in \, first out.;
+#N canvas 0 0 450 300 show 0;
+#X obj 60 48 inlet;
+#X obj 60 72 list prepend set;
+#X obj 60 97 list trim;
+#X obj 60 126 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X restore 140 364 pd show;
+#X msg 140 390;
+#X msg 74 262 clear;
+#X text 82 439 2007 Frank Barknecht;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 175 AUTHOR Frank Barknecht;
+#X text 12 195 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 75 INLET_0 bang clear;
+#X text 12 95 INLET_1 anything;
+#X text 12 115 INLET_2 bang;
+#X text 12 135 OUTLET_0 list;
+#X text 12 155 OUTLET_1 bang;
+#X text 12 45 DESCRIPTION stores incoming list messages and outputs
+them one by one in opposite order or arrival when banged;
+#X restore 487 447 pd META;
+#X connect 0 0 10 1;
+#X connect 1 0 10 1;
+#X connect 2 0 10 1;
+#X connect 4 0 10 2;
+#X connect 5 0 10 1;
+#X connect 6 0 10 0;
+#X connect 10 0 13 0;
+#X connect 10 1 3 0;
+#X connect 13 0 14 0;
+#X connect 15 0 10 0;

+ 53 - 0
extra/list-abs/list-lifo.pd

@@ -0,0 +1,53 @@
+#N canvas 300 195 729 624 10;
+#X obj 268 56 inlet;
+#X obj 268 184 t a a;
+#X obj 268 250 list prepend;
+#X obj 366 302 t b a;
+#X obj 366 325 list;
+#X obj 143 379 list;
+#X obj 143 407 list split 1;
+#X obj 143 492 list split;
+#X obj 143 527 outlet;
+#X obj 71 56 inlet;
+#X text 380 252 prepend size of list;
+#X obj 222 528 outlet;
+#X obj 347 217 list-len;
+#X obj 366 55 inlet;
+#X text 419 304 store lists;
+#X text 256 445 get length of next stored list and split it off.;
+#X text 270 34 push;
+#X text 365 35 reset stack;
+#X obj 366 79 b;
+#X obj 71 138 route clear;
+#X obj 143 164 b;
+#X text 69 34 pop (or clear);
+#X obj 143 441 t b a;
+#X obj 143 467 list append;
+#X obj 268 301 list append;
+#X obj 71 164 b;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 12 0;
+#X connect 2 0 24 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 1;
+#X connect 4 0 24 1;
+#X connect 5 0 6 0;
+#X connect 6 0 22 0;
+#X connect 6 1 23 1;
+#X connect 6 2 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 3 0;
+#X connect 9 0 19 0;
+#X connect 12 0 2 1;
+#X connect 13 0 18 0;
+#X connect 18 0 3 0;
+#X connect 19 0 25 0;
+#X connect 19 1 20 0;
+#X connect 20 0 5 0;
+#X connect 22 0 23 0;
+#X connect 22 1 7 1;
+#X connect 23 0 7 0;
+#X connect 24 0 3 0;
+#X connect 25 0 3 0;

+ 41 - 0
extra/list-abs/list-makefilename-a-help.pd

@@ -0,0 +1,41 @@
+#N canvas 0 31 605 472 10;
+#X obj 83 371 print M;
+#X obj 82 33 cnv 15 220 30 empty empty list-makefilename-a 20 12 0
+14 -233017 -66577 0;
+#X msg 283 219 xyz-%s-abc;
+#X msg 283 199 /help/%s;
+#X msg 83 200 1 2 3 4 SYMBOL;
+#X msg 83 222 list FREQ 440 AMP 1;
+#X msg 283 286 const;
+#X msg 330 285 You-probably-%don't-want-this;
+#X text 317 249 pass unchanged;
+#X msg 283 248 %s;
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 105 OUTLET_0 list;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X text 12 45 DESCRIPTION apply makefilename on list items.;
+#X restore 476 411 pd META;
+#X obj 83 334 list-makefilename-a %s-blabla;
+#X text 80 76 Apply makefilename on list items.;
+#X text 78 111 Use as "list-makefilename-a makefilename-arg". Right
+inlet can be used to change the arg to makefilename. You can use any
+makefilename format placeholders \, but have to take care on your own
+\, if your incoming lists have the correct item types.;
+#X msg 100 249 1 2 3 4;
+#X msg 104 274 a b c;
+#X connect 2 0 11 1;
+#X connect 3 0 11 1;
+#X connect 4 0 11 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 7 0 11 1;
+#X connect 9 0 11 1;
+#X connect 11 0 0 0;
+#X connect 14 0 11 0;
+#X connect 15 0 11 0;

+ 37 - 0
extra/list-abs/list-makefilename-a.pd

@@ -0,0 +1,37 @@
+#N canvas 674 83 624 640 10;
+#X msg 119 113 1 2 3 4 a b c;
+#X text 251 117 <- click to test;
+#X obj 196 386 list;
+#X obj 77 499 list;
+#X obj 100 385 list prepend;
+#X obj 78 150 t b a b;
+#X obj 122 178 s \$0-reset-result;
+#X obj 179 357 r \$0-reset-result;
+#X text 260 177 clear result list;
+#X text 181 204 "Drip" (serialize) the list;
+#X text 258 389 Repack the list (think of the counter);
+#X text 124 496 Final result is built here;
+#X obj 78 81 inlet;
+#X obj 223 248 inlet;
+#X obj 77 530 outlet;
+#X obj 100 334 makefilename \$1;
+#X obj 223 272 symbol;
+#X msg 223 293 set \$1;
+#X text 148 27 Use as "list-makefilename makefilename-arg". Right inlet
+can be used to change the arg to makefilename.;
+#X obj 100 202 list-drip;
+#X connect 0 0 5 0;
+#X connect 2 0 4 1;
+#X connect 3 0 14 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
+#X connect 5 1 19 0;
+#X connect 5 2 6 0;
+#X connect 7 0 4 1;
+#X connect 12 0 5 0;
+#X connect 13 0 16 0;
+#X connect 15 0 4 0;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 19 0 15 0;

+ 37 - 0
extra/list-abs/list-makefilename-help.pd

@@ -0,0 +1,37 @@
+#N canvas 0 31 605 472 10;
+#X obj 83 371 print M;
+#X obj 83 334 list-makefilename %s-blabla;
+#X obj 82 33 cnv 15 220 30 empty empty list-makefilename 20 12 0 14
+-233017 -66577 0;
+#X msg 267 220 xyz-%s-abc;
+#X msg 267 200 /help/%s;
+#X text 80 76 Change symbols in a list \, pass floats unchanged.;
+#X msg 83 200 1 2 3 4 SYMBOL;
+#X msg 83 222 list FREQ 440 AMP 1;
+#X msg 267 287 const;
+#X msg 314 286 You-probably-%don't-want-this;
+#X text 301 250 pass unchanged;
+#X msg 267 249 %s;
+#X text 78 111 Use as "list-makefilename makefilename-arg". Right inlet
+can be used to change the arg to makefilename. Please only use symbol
+placeholders (== "%s");
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 105 OUTLET_0 list;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X text 12 45 DESCRIPTION change symbols in a list \, pass floats unchanged
+;
+#X restore 476 411 pd META;
+#X connect 1 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 1 1;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 1 1;
+#X connect 9 0 1 1;
+#X connect 11 0 1 1;

+ 42 - 0
extra/list-abs/list-makefilename.pd

@@ -0,0 +1,42 @@
+#N canvas 424 89 624 640 10;
+#X msg 119 113 1 2 3 4 a b c;
+#X text 251 117 <- click to test;
+#X obj 196 386 list;
+#X obj 77 499 list;
+#X obj 100 385 list prepend;
+#X obj 78 150 t b a b;
+#X obj 122 178 s \$0-reset-result;
+#X obj 179 357 r \$0-reset-result;
+#X text 260 177 clear result list;
+#X text 181 204 "Drip" (serialize) the list;
+#X text 258 389 Repack the list (think of the counter);
+#X text 124 496 Final result is built here;
+#X obj 78 81 inlet;
+#X obj 223 248 inlet;
+#X obj 77 530 outlet;
+#X obj 100 231 route symbol;
+#X obj 100 334 makefilename \$1;
+#X text 202 228 only work on symbols;
+#X obj 223 272 symbol;
+#X msg 223 293 set \$1;
+#X text 148 27 Use as "list-makefilename makefilename-arg". Right inlet
+can be used to change the arg to makefilename. Please only use symbol
+placeholders (== "%s");
+#X obj 100 202 list-drip;
+#X connect 0 0 5 0;
+#X connect 2 0 4 1;
+#X connect 3 0 14 0;
+#X connect 4 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
+#X connect 5 1 21 0;
+#X connect 5 2 6 0;
+#X connect 7 0 4 1;
+#X connect 12 0 5 0;
+#X connect 13 0 18 0;
+#X connect 15 0 16 0;
+#X connect 15 1 4 0;
+#X connect 16 0 4 0;
+#X connect 18 0 19 0;
+#X connect 19 0 16 0;
+#X connect 21 0 15 0;

+ 277 - 0
extra/list-abs/list-map-help.pd

@@ -0,0 +1,277 @@
+#N canvas 0 31 612 654 10;
+#X obj 67 280 list-map;
+#X text 65 22 [list-map] - the swiss army knife of list-operations
+;
+#X obj 135 280 spigot;
+#X obj 171 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 67 236 0 1 2 3;
+#X obj 118 317 print SERIALIZED;
+#X obj 67 346 print MAIN;
+#X msg 313 238 0 1 2 3;
+#X obj 364 319 print SERIALIZED;
+#X obj 313 348 print MAIN;
+#X floatatom 404 262 5 0 0 0 - - -;
+#X msg 67 215 bang;
+#X msg 145 235 a b c;
+#X msg 145 215 bang;
+#X obj 381 282 * 10;
+#X msg 313 214 bang;
+#X msg 72 417 0 1 2 3;
+#X obj 72 506 list trim;
+#X obj 72 486 list prepend set;
+#X msg 72 528;
+#X obj 138 441 list append -|-;
+#X msg 227 511 set;
+#X text 304 534 A more complex example:;
+#N canvas 164 99 846 438 filters 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-in 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 503 222 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-out 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 645 222 graph;
+#X obj 110 316 s \$0-out;
+#N canvas 414 307 437 371 tabdump-in 0;
+#X obj 147 152 tabread \$0-in;
+#X obj 147 205 list prepend;
+#X obj 238 205 t a;
+#X obj 125 254 list;
+#X obj 125 23 inlet;
+#X obj 125 279 outlet;
+#X obj 125 46 t b b b;
+#X msg 147 104 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 147 126 pd countto;
+#X connect 0 0 1 0;
+#X connect 1 0 3 1;
+#X connect 1 0 2 0;
+#X connect 2 0 1 1;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 6 0 3 0;
+#X connect 6 1 7 0;
+#X connect 6 2 1 1;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X restore 110 206 pd tabdump-in;
+#X msg 110 155 bang;
+#X obj 110 294 list prepend 0;
+#N canvas 0 0 297 272 pole 0;
+#X obj 71 140 +;
+#X obj 71 172 t a a;
+#X obj 117 173 * 0.9;
+#X obj 71 54 inlet;
+#X obj 147 51 inlet;
+#X obj 71 230 outlet;
+#X text 72 17 one-pole filter;
+#X obj 147 74 t b a;
+#X msg 87 118 0;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 0;
+#X connect 4 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 2 1;
+#X connect 8 0 0 1;
+#X restore 297 269 pd pole;
+#X obj 269 117 hsl 64 15 0 0.99 0 0 empty empty filter-coeff -2 -8
+1 10 -262144 -1 -1 0 1;
+#N canvas 0 0 297 272 zero 0;
+#X obj 71 142 t a a;
+#X obj 71 44 inlet;
+#X obj 124 41 inlet;
+#X obj 71 230 outlet;
+#X text 71 20 one-zero filter;
+#X obj 71 204 +;
+#X obj 154 112 * -1;
+#X obj 71 168 * -0.5;
+#X obj 124 66 t b a;
+#X msg 87 113 0;
+#X connect 0 0 7 0;
+#X connect 0 1 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 8 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 1;
+#X connect 7 0 5 1;
+#X connect 8 0 9 0;
+#X connect 8 1 6 0;
+#X connect 9 0 5 1;
+#X restore 244 269 pd zero;
+#N canvas 0 0 341 267 split 0;
+#X obj 11 193 outlet;
+#X obj 68 194 outlet;
+#X obj 11 143 list prepend 0;
+#X obj 11 169 route 0 1;
+#X obj 104 110 hradio 12 1 0 2 empty empty zero 28 3 1 10 -262144 -1
+-1 0;
+#X obj 11 68 inlet;
+#X obj 180 33 select 0 1;
+#X msg 180 62 label zero;
+#X msg 211 87 label pole;
+#X obj 104 38 loadbang;
+#X msg 104 64 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 3 1 1 0;
+#X connect 4 0 2 1;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 10 0;
+#X connect 10 0 4 0;
+#X coords 0 -1 1 1 60 30 2 100 100;
+#X restore 244 217 pd split;
+#X floatatom 266 139 5 0 0 0 - - -;
+#N canvas 0 0 297 280 noise 0;
+#X obj 33 115 random 1000;
+#X obj 33 88 t b a;
+#X obj 33 194 tabwrite \$0-in;
+#X obj 33 143 / 500;
+#X obj 33 163 - 1;
+#X msg 33 44 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 33 66 pd countto;
+#X obj 33 21 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 1;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 5 0;
+#X restore 504 184 pd noise;
+#X msg 504 160 make noise;
+#X obj 266 158 t b a a;
+#X msg 439 324 const 0;
+#X obj 439 365 s \$0-in;
+#X obj 440 390 s \$0-out;
+#X msg 500 324 const 0 \, 16 1;
+#X text 498 308 impulse;
+#X text 112 34 This is a more complex example showing how to apply
+a set of elementary filters on a list of floats. Try playing with the
+coeff-slider and switch between pole and zero operation.;
+#X obj 110 236 list-map;
+#X connect 3 0 20 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 20 1;
+#X connect 7 0 10 0;
+#X connect 8 0 20 1;
+#X connect 9 0 8 0;
+#X connect 9 1 6 0;
+#X connect 10 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 3 0;
+#X connect 13 1 8 1;
+#X connect 13 2 6 1;
+#X connect 14 0 15 0;
+#X connect 14 0 16 0;
+#X connect 17 0 15 0;
+#X connect 20 0 5 0;
+#X connect 20 1 9 0;
+#X restore 330 556 pd filters;
+#X text 67 596 2007 Frank Barknecht \, original idea by IOhannes m
+zmoelnig and Thomas Musil.;
+#X obj 313 282 list-map;
+#X obj 72 441 list-map;
+#X msg 71 391 bang;
+#X text 64 52 Calls a user-defined operation for each of the incoming
+list's items and returns a list of the return values.;
+#X text 64 90 [list-map] is a helper abstraction to make element-wise
+operations on lists easy to patch. The basic idea is to bundle a list-serializer
+and a list-repacker into one object. Then you connect whatever operation
+should be applied on every list item to the right outlet and send the
+modified items back to the right inlet. Here the modified elements
+get packed into a list again and sent to the left outlet of [list-map].
+;
+#X obj 315 430 list-map;
+#X obj 315 472 list trim;
+#X obj 315 452 list prepend set;
+#X obj 387 430 pow 3;
+#X floatatom 417 407 5 0 0 0 - - -;
+#X msg 315 405 1 2 3 4 5;
+#X msg 315 494;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 155 AUTHOR Frank Barknecht;
+#X text 12 175 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 75 INLET_0 anything;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION call a user-defined operation for each of
+the incoming list's items and return a list of the return values;
+#X text 12 95 INLET_1 anything;
+#X text 12 115 OUTLET_0 list;
+#X text 12 135 OUTLET_1 float symbol pointer;
+#X restore 533 611 pd META;
+#X connect 0 0 6 0;
+#X connect 0 1 2 0;
+#X connect 0 1 5 0;
+#X connect 2 0 0 1;
+#X connect 3 0 2 1;
+#X connect 4 0 0 0;
+#X connect 7 0 25 0;
+#X connect 10 0 14 1;
+#X connect 11 0 0 0;
+#X connect 12 0 0 1;
+#X connect 13 0 0 1;
+#X connect 14 0 25 1;
+#X connect 15 0 25 0;
+#X connect 16 0 26 0;
+#X connect 17 0 19 0;
+#X connect 18 0 17 0;
+#X connect 20 0 26 1;
+#X connect 21 0 19 0;
+#X connect 25 0 9 0;
+#X connect 25 1 8 0;
+#X connect 25 1 14 0;
+#X connect 26 0 18 0;
+#X connect 26 1 20 0;
+#X connect 27 0 26 0;
+#X connect 30 0 32 0;
+#X connect 30 1 33 0;
+#X connect 31 0 36 0;
+#X connect 32 0 31 0;
+#X connect 33 0 30 1;
+#X connect 34 0 33 1;
+#X connect 35 0 30 0;

+ 31 - 0
extra/list-abs/list-map.pd

@@ -0,0 +1,31 @@
+#N canvas 470 232 489 423 10;
+#X obj 86 33 inlet;
+#X obj 275 52 inlet;
+#X obj 151 352 outlet;
+#X obj 170 248 outlet;
+#X obj 151 317 list;
+#X obj 170 215 list-drip;
+#X obj 275 215 list prepend;
+#X obj 354 185 t a;
+#X obj 151 155 t b a a b;
+#X obj 86 58 route bang;
+#X obj 86 83 b;
+#X obj 151 84 t b a;
+#X obj 151 124 list;
+#X connect 0 0 9 0;
+#X connect 1 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 6 1;
+#X connect 8 0 4 0;
+#X connect 8 1 5 0;
+#X connect 8 2 4 1;
+#X connect 8 3 6 1;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 11 1 12 1;
+#X connect 12 0 8 0;

+ 452 - 0
extra/list-abs/list-map2-help.pd

@@ -0,0 +1,452 @@
+#N canvas 0 31 725 634 10;
+#X obj 135 300 spigot;
+#X obj 171 283 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 67 366 print MAIN;
+#X obj 381 329 print SERIALIZED;
+#X obj 323 358 print MAIN;
+#X msg 67 235 bang;
+#X msg 131 256 a b c;
+#X msg 323 224 bang;
+#X msg 72 427 0 1 2 3;
+#X obj 72 516 list trim;
+#X obj 72 496 list prepend set;
+#X obj 158 451 list append -|-;
+#X msg 227 521 set;
+#X msg 71 401 bang;
+#X obj 325 512 list trim;
+#X obj 325 492 list prepend set;
+#X msg 325 425 1 2 3 4 5;
+#X obj 323 292 list-map2;
+#X obj 411 292 +;
+#X msg 352 269 10 20 30 40;
+#X msg 323 248 1 2 3 4;
+#X msg 130 429 a b c d;
+#X obj 67 300 list-map2;
+#X obj 325 470 list-map2;
+#X obj 72 451 list-map2;
+#X msg 354 446 2 0;
+#X obj 397 470 *;
+#X text 64 57 Calls a user-defined operation for each pair of elements
+of two incoming lists and returns a list of the return values.;
+#X obj 125 339 print SERIALIZED_PAIRS;
+#X text 64 100 [list-map2] is a helper abstraction to make element-wise
+operations on two lists easy to patch. The basic idea is to bundle
+two list-serializers and a list-repacker into one object. Then you
+connect whatever operation should be applied on every pair of list
+items to the right outlet and send the modified items back to the right
+inlet. Here the modified elements get packed into a list again and
+sent to the left outlet of [list-map2].;
+#N canvas 239 121 843 692 more-examples 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-in1 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 366 91 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-in2 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 508 91 graph;
+#X msg 68 83 bang;
+#N canvas 0 0 297 280 noise 0;
+#X obj 33 115 random 1000;
+#X obj 33 88 t b a;
+#X obj 33 143 / 500;
+#X obj 33 163 - 1;
+#X msg 33 44 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 33 66 pd countto;
+#X obj 33 21 inlet;
+#X obj 33 194 tabwrite \$0-in2;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 7 1;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 4 0;
+#X restore 508 52 pd noise;
+#X msg 508 28 make noise;
+#X msg 527 184 const 0;
+#X obj 527 280 s \$0-out;
+#X text 586 168 impulse;
+#X obj 149 164 list-map2;
+#N canvas 414 307 598 380 tabdump-ins 0;
+#X obj 187 213 list prepend;
+#X obj 278 213 t a;
+#X obj 125 254 list;
+#X obj 125 23 inlet;
+#X obj 125 279 outlet;
+#X msg 187 92 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 187 114 pd countto;
+#X obj 187 136 t a a;
+#X obj 320 213 list prepend;
+#X obj 411 213 t a;
+#X obj 320 190 tabread \$0-in2;
+#X obj 187 190 tabread \$0-in1;
+#X obj 187 256 list;
+#X obj 187 281 outlet;
+#X obj 125 46 t b b b b b;
+#X connect 0 0 2 1;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 11 0;
+#X connect 7 1 10 0;
+#X connect 8 0 9 0;
+#X connect 8 0 12 1;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 14 0 2 0;
+#X connect 14 1 12 0;
+#X connect 14 2 5 0;
+#X connect 14 3 0 1;
+#X connect 14 4 8 1;
+#X restore 149 134 pd tabdump-ins;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-out-max 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 363 174 graph;
+#X obj 149 192 list prepend 0;
+#X obj 527 225 s \$0-in1;
+#X msg 588 184 const 0 \, 16 1;
+#X obj 231 165 max;
+#X obj 527 249 s \$0-in2;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-out-min 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 364 274 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-out-mul 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 364 398 graph;
+#X obj 150 277 list-map2;
+#X obj 150 305 list prepend 0;
+#X obj 150 327 s \$0-out-min;
+#X obj 232 278 min;
+#X obj 150 390 list-map2;
+#X obj 150 418 list prepend 0;
+#X obj 232 391 *;
+#X obj 150 440 s \$0-out-mul;
+#X obj 149 214 s \$0-out-max;
+#N canvas 414 307 598 380 tabdump-ins 0;
+#X obj 187 213 list prepend;
+#X obj 278 213 t a;
+#X obj 125 254 list;
+#X obj 125 23 inlet;
+#X obj 125 279 outlet;
+#X msg 187 92 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 187 114 pd countto;
+#X obj 187 136 t a a;
+#X obj 320 213 list prepend;
+#X obj 411 213 t a;
+#X obj 320 190 tabread \$0-in2;
+#X obj 187 190 tabread \$0-in1;
+#X obj 187 256 list;
+#X obj 187 281 outlet;
+#X obj 125 46 t b b b b b;
+#X connect 0 0 2 1;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 11 0;
+#X connect 7 1 10 0;
+#X connect 8 0 9 0;
+#X connect 8 0 12 1;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 14 0 2 0;
+#X connect 14 1 12 0;
+#X connect 14 2 5 0;
+#X connect 14 3 0 1;
+#X connect 14 4 8 1;
+#X restore 150 252 pd tabdump-ins;
+#N canvas 414 307 598 380 tabdump-ins 0;
+#X obj 187 213 list prepend;
+#X obj 278 213 t a;
+#X obj 125 254 list;
+#X obj 125 23 inlet;
+#X obj 125 279 outlet;
+#X msg 187 92 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 187 114 pd countto;
+#X obj 187 136 t a a;
+#X obj 320 213 list prepend;
+#X obj 411 213 t a;
+#X obj 320 190 tabread \$0-in2;
+#X obj 187 190 tabread \$0-in1;
+#X obj 187 256 list;
+#X obj 187 281 outlet;
+#X obj 125 46 t b b b b b;
+#X connect 0 0 2 1;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 11 0;
+#X connect 7 1 10 0;
+#X connect 8 0 9 0;
+#X connect 8 0 12 1;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 14 0 2 0;
+#X connect 14 1 12 0;
+#X connect 14 2 5 0;
+#X connect 14 3 0 1;
+#X connect 14 4 8 1;
+#X restore 150 365 pd tabdump-ins;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-out-xfade 64 float 0;
+#X coords 0 1 63 -1 128 60 1;
+#X restore 365 534 graph;
+#X obj 151 582 list-map2;
+#X obj 151 610 list prepend 0;
+#N canvas 414 307 598 380 tabdump-ins 0;
+#X obj 187 213 list prepend;
+#X obj 278 213 t a;
+#X obj 125 254 list;
+#X obj 125 23 inlet;
+#X obj 125 279 outlet;
+#X msg 187 92 64;
+#N canvas 0 0 450 300 countto 0;
+#X obj 163 151 f 0;
+#X obj 190 151 + 1;
+#X obj 163 109 until;
+#X msg 205 111 0;
+#X obj 163 180 outlet;
+#X obj 163 39 inlet;
+#X obj 163 87 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X restore 187 114 pd countto;
+#X obj 187 136 t a a;
+#X obj 320 213 list prepend;
+#X obj 411 213 t a;
+#X obj 320 190 tabread \$0-in2;
+#X obj 187 190 tabread \$0-in1;
+#X obj 187 256 list;
+#X obj 187 281 outlet;
+#X obj 125 46 t b b b b b;
+#X connect 0 0 2 1;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 11 0;
+#X connect 7 1 10 0;
+#X connect 8 0 9 0;
+#X connect 8 0 12 1;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 14 0 2 0;
+#X connect 14 1 12 0;
+#X connect 14 2 5 0;
+#X connect 14 3 0 1;
+#X connect 14 4 8 1;
+#X restore 151 529 pd tabdump-ins;
+#X obj 151 632 s \$0-out-xfade;
+#X obj 154 487 hsl 64 15 0 1 0 0 empty empty crossfade_0-1 -2 -8 1
+10 -262144 -1 -1 0 1;
+#X obj 151 506 t b a;
+#N canvas 0 0 450 300 xfade 0;
+#X obj 54 131 -;
+#X obj 54 155 * 0.5;
+#X obj 54 182 +;
+#X obj 104 48 inlet;
+#X obj 54 48 inlet;
+#X obj 54 206 outlet;
+#X obj 54 81 unpack 0 0;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 1 1;
+#X connect 4 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 1 0 1;
+#X connect 6 1 2 1;
+#X restore 234 582 pd xfade;
+#X obj 258 520 hsl 64 15 0 1 0 0 empty empty crossfade_0-1 -2 -8 1
+10 -262144 -1 -1 0 1;
+#X obj 255 539 t b a;
+#X obj 298 640 list-inter;
+#X text 272 622 this is similar to:;
+#X connect 2 0 9 0;
+#X connect 2 0 27 0;
+#X connect 2 0 28 0;
+#X connect 2 0 32 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 5 0 12 0;
+#X connect 5 0 15 0;
+#X connect 8 0 11 0;
+#X connect 8 1 14 0;
+#X connect 9 0 8 0;
+#X connect 9 1 8 1;
+#X connect 11 0 26 0;
+#X connect 13 0 12 0;
+#X connect 14 0 8 2;
+#X connect 18 0 19 0;
+#X connect 18 1 21 0;
+#X connect 19 0 20 0;
+#X connect 21 0 18 2;
+#X connect 22 0 23 0;
+#X connect 22 1 24 0;
+#X connect 23 0 25 0;
+#X connect 24 0 22 2;
+#X connect 27 0 18 0;
+#X connect 27 1 18 1;
+#X connect 28 0 22 0;
+#X connect 28 1 22 1;
+#X connect 30 0 31 0;
+#X connect 30 1 36 0;
+#X connect 31 0 33 0;
+#X connect 32 0 30 0;
+#X connect 32 1 30 1;
+#X connect 34 0 35 0;
+#X connect 35 0 32 0;
+#X connect 35 1 36 1;
+#X connect 36 0 30 2;
+#X connect 37 0 38 0;
+#X connect 38 0 30 0;
+#X connect 38 1 36 1;
+#X restore 69 575 pd more-examples;
+#X text 67 217 bang will redo the last two lists;
+#X text 324 391 If the second list is too short \, its final element
+will be repeated:;
+#X text 65 22 [list-map2] - map an operation on element pairs from
+two lists.;
+#X text 67 606 2007 Frank Barknecht;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 165 AUTHOR Frank Barknecht;
+#X text 12 185 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 85 INLET_1 anything;
+#X text 12 125 OUTLET_0 list;
+#X text 12 45 DESCRIPTION map an operation on element pairs from two
+lists;
+#X text 12 65 INLET_0 bang anything;
+#X text 12 105 INLET_2 anything;
+#X text 12 145 OUTLET_1 list;
+#X restore 663 601 pd META;
+#X msg 325 534;
+#X msg 72 538;
+#X msg 67 256 1 2 3 4;
+#X connect 0 0 22 2;
+#X connect 1 0 0 1;
+#X connect 5 0 22 0;
+#X connect 6 0 22 1;
+#X connect 7 0 17 0;
+#X connect 8 0 24 0;
+#X connect 9 0 37 0;
+#X connect 10 0 9 0;
+#X connect 11 0 24 2;
+#X connect 12 0 37 0;
+#X connect 13 0 24 0;
+#X connect 14 0 36 0;
+#X connect 15 0 14 0;
+#X connect 16 0 23 0;
+#X connect 17 0 4 0;
+#X connect 17 1 3 0;
+#X connect 17 1 18 0;
+#X connect 18 0 17 2;
+#X connect 19 0 17 1;
+#X connect 20 0 17 0;
+#X connect 21 0 24 1;
+#X connect 22 0 2 0;
+#X connect 22 1 0 0;
+#X connect 22 1 28 0;
+#X connect 23 0 15 0;
+#X connect 23 1 26 0;
+#X connect 24 0 10 0;
+#X connect 24 1 11 0;
+#X connect 25 0 23 1;
+#X connect 26 0 23 2;
+#X connect 38 0 22 0;

+ 39 - 0
extra/list-abs/list-map2.pd

@@ -0,0 +1,39 @@
+#N canvas 470 232 489 423 10;
+#X obj 86 33 inlet;
+#X obj 300 34 inlet;
+#X obj 151 352 outlet;
+#X obj 169 269 outlet;
+#X obj 151 317 list;
+#X obj 300 215 list prepend;
+#X obj 379 185 t a;
+#X obj 86 58 route bang;
+#X obj 86 83 b;
+#X obj 151 84 t b a;
+#X obj 151 124 list;
+#X obj 169 215 list-drip2;
+#X obj 169 243 list;
+#X obj 258 33 inlet;
+#X obj 234 192 list;
+#X obj 151 155 t b a a b b;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 15 0;
+#X connect 11 0 12 0;
+#X connect 11 1 12 1;
+#X connect 12 0 3 0;
+#X connect 13 0 14 1;
+#X connect 14 0 11 1;
+#X connect 15 0 4 0;
+#X connect 15 1 11 0;
+#X connect 15 2 4 1;
+#X connect 15 3 14 0;
+#X connect 15 4 5 1;

+ 57 - 0
extra/list-abs/list-math-help.pd

@@ -0,0 +1,57 @@
+#N canvas 0 31 618 551 10;
+#X obj 100 259 print L;
+#X msg 100 194 1 2 3 4 a b c;
+#X floatatom 210 193 5 0 0 0 - - -;
+#X obj 344 263 print L;
+#X msg 344 198 1 2 3 4 a b c;
+#X floatatom 454 197 5 0 0 0 - - -;
+#X obj 104 365 print L;
+#X msg 104 300 1 2 3 4 a b c;
+#X floatatom 214 299 5 0 0 0 - - -;
+#X obj 100 226 list-math *;
+#X msg 99 167 1 2 3 4 a b c \, 10 20 30 x y z;
+#X text 72 87 Use as "list-math operator" where operator is some binary
+operator \, that expr can understand \, like + \, - \, * or /;
+#X obj 346 373 print L;
+#X msg 346 308 1 2 3 4 a b c;
+#X floatatom 456 307 5 0 0 0 - - -;
+#X obj 72 31 cnv 15 140 30 empty empty list-math 20 12 0 14 -233017
+-66577 0;
+#X text 232 40 simple mathematical operations on lists.;
+#X obj 344 230 list-math +;
+#X obj 104 332 list-math /;
+#X obj 346 340 list-math -;
+#X msg 346 416 1 2 3 4 a b c;
+#X floatatom 456 415 5 0 0 0 - - -;
+#X obj 346 448 list-math - 2;
+#X obj 346 481 print L-with-arg;
+#X text 189 448 Using a default arg:;
+#X text 71 125 A second argument is accepted to set a default scalar
+to use.;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 65 INLET_0 anything;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 105 OUTLET_0 list;
+#X text 12 45 DESCRIPTION simple mathematical operations on lists;
+#X text 12 85 INLET_1 float;
+#X restore 556 521 pd META;
+#X connect 1 0 9 0;
+#X connect 2 0 9 1;
+#X connect 4 0 17 0;
+#X connect 5 0 17 1;
+#X connect 7 0 18 0;
+#X connect 8 0 18 1;
+#X connect 9 0 0 0;
+#X connect 10 0 9 0;
+#X connect 13 0 19 0;
+#X connect 14 0 19 1;
+#X connect 17 0 3 0;
+#X connect 18 0 6 0;
+#X connect 19 0 12 0;
+#X connect 20 0 22 0;
+#X connect 21 0 22 1;
+#X connect 22 0 23 0;

+ 16 - 0
extra/list-abs/list-math.pd

@@ -0,0 +1,16 @@
+#N canvas 424 89 462 324 10;
+#X obj 55 58 inlet;
+#X obj 55 235 outlet;
+#X text 44 16 Use as "list-math operator" where operator is some binary
+operator \, expr can understand.;
+#X obj 55 136 list-map;
+#X obj 152 208 \$1 \$2;
+#X obj 182 134 inlet;
+#X obj 152 97 route float;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 6 0;
+#X connect 4 0 3 1;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 6 1 3 1;

+ 196 - 0
extra/list-abs/list-mean-help.pd

@@ -0,0 +1,196 @@
+#N struct 1114-dial float y;
+#N canvas 0 31 534 466 10;
+#X obj 98 306 list-mean;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 193 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 112 73 + 1;
+#X obj 112 53 random 10;
+#X obj 134 151 random 10;
+#X obj 134 171 - 5;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X restore 153 236 pd randlist;
+#X msg 153 214 bang;
+#X floatatom 98 340 5 0 0 1 arithmetric_mean - -;
+#X text 86 22 [list-mean];
+#X msg 153 262 4 -3 -4 1 2 -3;
+#X msg 98 159 1 2 3 4;
+#X msg 98 185 any symbols 1 2 3 4 are ignored;
+#X text 96 117 Non-floats in a list are silently dropped.;
+#X text 114 82 mean = sum(f[i]) / total number of floats;
+#X text 96 42 Calculates the arithmetric mean of a list (of floats)
+according to:;
+#N canvas 318 53 648 574 graphical-mean 0;
+#N canvas 0 0 450 300 randlist 0;
+#X obj 134 129 until;
+#X msg 246 151 set;
+#X msg 134 213 add2 \$1;
+#X obj 112 101 t b f b;
+#X obj 135 249 outlet;
+#X obj 112 31 inlet;
+#X obj 134 151 random 100;
+#X msg 112 59 10;
+#X obj 134 191 / 10;
+#X obj 134 170 + 1;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 3 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
+#X restore 79 388 pd randlist;
+#X msg 79 366 bang;
+#X obj 79 447 list prepend 0;
+#X obj 79 500 s \$0-tab;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-tab 10 float 0;
+#X coords 0 10 9 0 200 140 1;
+#X restore 75 152 graph;
+#N canvas 0 0 916 918 \$0-c 0;
+#X scalar 1114-dial 0 \;;
+#X coords 0 0 200 140 200 140 1;
+#X restore 75 152 pd \$0-c;
+#N canvas 0 0 503 429 create 0;
+#X msg 242 258 traverse pd-\$1 \, bang;
+#X obj 242 238 symbol \$0-c;
+#X msg 107 79 0;
+#X obj 242 278 pointer;
+#X msg 243 178 clear;
+#X obj 243 205 s pd-\$0-c;
+#X obj 107 114 t a b b;
+#X obj 107 50 loadbang;
+#X obj 107 326 outlet;
+#X obj 107 302 append \$0-dial y;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 9 1;
+#X connect 4 0 5 0;
+#X connect 6 0 9 0;
+#X connect 6 1 1 0;
+#X connect 6 2 4 0;
+#X connect 7 0 2 0;
+#X connect 9 0 8 0;
+#X restore 468 339 pd create;
+#X obj 339 127 metro 50;
+#X obj 339 102 tgl 15 0 empty empty show-mean 17 7 1 10 -258699 -262144
+-1 0 1;
+#N canvas 473 338 450 300 countto 0;
+#X obj 131 154 f 0;
+#X obj 156 153 + 1;
+#X msg 174 113 0;
+#X obj 131 183 outlet;
+#X obj 131 59 inlet;
+#X obj 131 116 until;
+#X obj 131 96 t a b;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 6 1 2 0;
+#X restore 362 195 pd countto;
+#X obj 362 219 tabread \$0-tab;
+#X obj 362 249 list prepend;
+#X obj 452 249 t a;
+#X msg 362 175 10;
+#X obj 339 148 t b b b;
+#X obj 339 274 list;
+#X obj 79 344 loadbang;
+#X msg 79 414 0.6 6.9 3.6 5.6 0.7 3.8 3.9 5.3 9.2 9.2;
+#X text 77 30 Switch on the "show"-metro and play with the values in
+the array.;
+#N canvas 336 319 712 355 \$0-dial 0;
+#X obj 19 119 outlet;
+#X obj 19 86 route change;
+#X obj 19 62 struct \$0-dial float y;
+#X obj 229 62 drawpolygon 900 2 0 y 200 y;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 453 315 pd \$0-dial;
+#X msg 213 469 bounds 0 10 9 0;
+#X obj 213 449 loadbang;
+#X obj 339 313 list-mean;
+#X obj 339 388 set \$0-dial y;
+#X floatatom 339 339 5 0 0 0 - - -;
+#X msg 92 469 const 5;
+#N canvas 0 0 299 354 scale 0;
+#X msg 74 83 10 \$1;
+#X obj 74 107 -;
+#X obj 74 158 * 140;
+#X obj 74 134 / 20;
+#X obj 74 49 inlet;
+#X obj 74 182 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 339 363 pd scale;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 6 0 23 1;
+#X connect 7 0 14 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 15 1;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X connect 14 0 15 0;
+#X connect 14 1 13 0;
+#X connect 14 2 11 1;
+#X connect 15 0 22 0;
+#X connect 16 0 1 0;
+#X connect 17 0 2 0;
+#X connect 19 0 23 1;
+#X connect 20 0 3 0;
+#X connect 21 0 20 0;
+#X connect 22 0 24 0;
+#X connect 24 0 26 0;
+#X connect 25 0 3 0;
+#X connect 26 0 23 0;
+#X restore 97 363 pd graphical-mean;
+#X text 101 394 More means:;
+#X obj 192 394 list-geometric-mean;
+#X obj 192 415 list-harmonic-mean;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 115 AUTHOR Frank Barknecht;
+#X text 12 135 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 75 INLET_0 anything;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION calculate the arithmetric mean of a list
+of floats;
+#X text 12 95 OUTLET_0 float;
+#X restore 466 421 pd META;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;

+ 52 - 0
extra/list-abs/list-mean.pd

@@ -0,0 +1,52 @@
+#N canvas 0 0 457 428 10;
+#X obj 127 69 inlet;
+#X obj 127 337 outlet;
+#X obj 146 138 list-drip;
+#X obj 146 164 route float;
+#X obj 127 274 f;
+#X obj 127 308 /;
+#X obj 146 189 t a b;
+#N canvas 370 313 450 300 accum 0;
+#X obj 182 102 0;
+#X obj 135 79 inlet;
+#X obj 182 79 inlet;
+#X obj 135 169 outlet;
+#X obj 135 137 +;
+#X obj 168 138 f;
+#X connect 0 0 4 1;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 4 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 1;
+#X restore 146 224 pd accum;
+#N canvas 425 298 450 300 count 0;
+#X obj 133 59 b;
+#X obj 133 35 inlet;
+#X obj 183 35 inlet;
+#X obj 164 111 + 1;
+#X obj 133 133 outlet;
+#X msg 183 71 1;
+#X obj 133 110 f 1;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 1;
+#X connect 5 0 6 1;
+#X connect 6 0 3 0;
+#X connect 6 0 4 0;
+#X restore 229 227 pd count;
+#X obj 127 105 t b a b b;
+#X connect 0 0 9 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 7 0 4 1;
+#X connect 8 0 5 1;
+#X connect 9 0 4 0;
+#X connect 9 1 2 0;
+#X connect 9 2 7 1;
+#X connect 9 3 8 1;

+ 41 - 0
extra/list-abs/list-minmax-help.pd

@@ -0,0 +1,41 @@
+#N canvas 0 31 626 365 10;
+#X floatatom 254 271 5 0 0 0 min - -;
+#X floatatom 326 271 5 0 0 0 max - -;
+#X obj 254 138 random 100;
+#X obj 254 116 until;
+#X msg 366 138 set;
+#X msg 232 61 10;
+#X msg 254 160 add2 \$1;
+#X obj 232 88 t b f b;
+#X msg 254 203 41 49 75 14 47 94 89 87 30 87;
+#X text 178 28 list-minmax: find minimum and maximum float in a list.
+;
+#X msg 141 201 2;
+#X text 140 178 special cases;
+#X obj 254 234 list-minmax;
+#X msg 179 202 11 2 2 2;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 85 OUTLET_0 float;
+#X text 12 45 DESCRIPTION find minimum and maximum float in a list
+;
+#X text 12 65 INLET_0 list;
+#X text 12 105 OUTLET_1 float;
+#X restore 566 331 pd META;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 8 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 7 1 3 0;
+#X connect 7 2 4 0;
+#X connect 8 0 12 0;
+#X connect 10 0 12 0;
+#X connect 12 0 0 0;
+#X connect 12 1 1 0;
+#X connect 13 0 12 0;

+ 53 - 0
extra/list-abs/list-minmax.pd

@@ -0,0 +1,53 @@
+#N canvas 385 204 676 470 10;
+#X obj 128 97 list-drip;
+#X obj 128 120 route float;
+#X obj 159 256 f;
+#X obj 106 394 outlet;
+#X obj 165 369 f;
+#X obj 165 396 outlet;
+#X obj 106 305 t b b;
+#X obj 106 10 inlet;
+#X obj 106 366 f;
+#N canvas 0 0 450 300 once 0;
+#X obj 110 75 inlet;
+#X obj 105 187 spigot 1;
+#X obj 110 104 t b f;
+#X msg 125 151 0;
+#X msg 165 99 1;
+#X obj 165 63 inlet;
+#X obj 102 219 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 1 1;
+#X connect 5 0 4 0;
+#X restore 260 183 pd once;
+#X obj 275 258 f;
+#X obj 244 257 max;
+#X obj 128 256 min;
+#X obj 128 150 t a a a;
+#X obj 106 30 t b a b;
+#X text 321 183 prime [min] and [max] with first item once;
+#X connect 0 0 1 0;
+#X connect 1 0 13 0;
+#X connect 2 0 12 1;
+#X connect 4 0 5 0;
+#X connect 6 0 8 0;
+#X connect 6 1 4 0;
+#X connect 7 0 14 0;
+#X connect 8 0 3 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 11 1;
+#X connect 11 0 10 0;
+#X connect 11 0 4 1;
+#X connect 12 0 2 0;
+#X connect 12 0 8 1;
+#X connect 13 0 12 0;
+#X connect 13 1 11 0;
+#X connect 13 2 9 0;
+#X connect 14 0 6 0;
+#X connect 14 1 0 0;
+#X connect 14 2 9 1;

+ 41 - 0
extra/list-abs/list-moses-help.pd

@@ -0,0 +1,41 @@
+#N canvas 0 31 691 397 10;
+#X floatatom 95 93 5 0 0 0 - - -;
+#X obj 95 355 print smaller;
+#X obj 141 332 print bigger-or-equal;
+#X floatatom 141 227 5 0 0 2 split-value - -;
+#X text 57 38 list-moses: like [moses] for lists. Additionally you
+can set the element index \, at which to compare \, if it is bigger
+or smaller than the stored value.;
+#X text 338 217 arg1: comparison value;
+#X obj 188 255 hradio 15 1 0 8 empty empty split-index 0 -6 0 10 -262144
+-1 -1 1;
+#X floatatom 128 148 5 0 0 0 - - -;
+#X obj 95 277 list-moses 4 2;
+#X text 337 252 arg2: which element to compare (zero based). Can be
+negative \, too.;
+#X msg 128 172 1 TEST \$1 4 5 6 7 8;
+#X obj 188 306 print not-a-float;
+#X msg 95 117 \$1 \$1 \$1 \$1 \$1 \$1 \$1 \$1;
+#N canvas 510 66 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 185 AUTHOR Frank Barknecht;
+#X text 12 205 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 45 DESCRIPTION like [moses] for lists;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 float;
+#X text 12 105 INLET_2 float;
+#X text 12 125 OUTLET_0 list;
+#X text 12 145 OUTLET_1 list;
+#X text 12 165 OUTLET_2 list;
+#X restore 636 371 pd META;
+#X connect 0 0 12 0;
+#X connect 3 0 8 1;
+#X connect 6 0 8 2;
+#X connect 7 0 10 0;
+#X connect 8 0 1 0;
+#X connect 8 1 2 0;
+#X connect 8 2 11 0;
+#X connect 10 0 8 0;
+#X connect 12 0 8 0;

+ 32 - 0
extra/list-abs/list-moses.pd

@@ -0,0 +1,32 @@
+#N canvas 264 111 497 457 10;
+#X obj 66 63 inlet;
+#X obj 201 120 list-idx \$2;
+#X obj 273 91 inlet;
+#X obj 231 210 inlet;
+#X obj 201 148 route float;
+#X obj 66 399 outlet;
+#X obj 90 369 outlet;
+#X obj 201 242 >= \$1;
+#X obj 66 90 t a a;
+#X text 165 34 arg1: comparison value;
+#X text 165 59 arg2: which element to compare (zero based);
+#X obj 114 338 outlet;
+#X obj 273 210 b;
+#X obj 66 278 list prepend 2;
+#X obj 273 242 2;
+#X obj 66 308 route 0 1 2;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 7 1;
+#X connect 4 0 7 0;
+#X connect 4 1 12 0;
+#X connect 7 0 13 1;
+#X connect 8 0 13 0;
+#X connect 8 1 1 0;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 13 1;
+#X connect 15 0 5 0;
+#X connect 15 1 6 0;
+#X connect 15 2 11 0;

+ 20 - 0
extra/list-abs/list-mult-help.pd

@@ -0,0 +1,20 @@
+#N canvas 0 31 450 300 10;
+#X msg 145 116 5 5 5 NOPE 5;
+#X obj 145 217 print;
+#X msg 203 139 1 2 3 0 -1;
+#X text 108 67 Substract two lists element by element;
+#X obj 145 177 list-mult;
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 125 AUTHOR Frank Barknecht;
+#X text 12 145 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 105 OUTLET_0 list;
+#X text 12 45 DESCRIPTION substract two lists element by element;
+#X text 12 65 INLET_0 anything;
+#X text 12 85 INLET_1 anything;
+#X restore 386 271 pd META;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 4 0 1 0;

+ 8 - 0
extra/list-abs/list-mult.pd

@@ -0,0 +1,8 @@
+#N canvas 256 135 500 518 10;
+#X obj 59 31 inlet;
+#X obj 138 34 inlet;
+#X obj 59 117 outlet;
+#X obj 59 84 list-emath *;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;

+ 79 - 0
extra/list-abs/list-normalize-help.pd

@@ -0,0 +1,79 @@
+#N canvas 0 31 832 543 10;
+#X obj 145 295 list-normalize;
+#X msg 145 183 10 100 200;
+#X msg 157 204 -10 100 200;
+#X msg 165 226 -10 100 and -200;
+#X msg 168 251 0.1 0.01 and -0.02;
+#X text 40 13 list-normalize: normalize a list.;
+#X text 54 89 All the other float elements then are scaled with the
+same factor.;
+#X text 54 41 First it looks for the element with the largest absolute
+value \, then this is scaled to be 1 or -1 preserving the sign.;
+#X text 54 129 It's the same operation as the "Normalize" instruction
+in many soundfile editors or the "normalize 1" method of Pd arrays.
+;
+#X obj 427 425 list-math *;
+#X text 33 427 Hint: To normalize to values other than 1 \, you can
+use:;
+#X obj 499 366 loadbang;
+#X floatatom 499 406 5 0 0 0 - - -;
+#X msg 499 386 3;
+#X obj 145 377 print Normalized;
+#X obj 427 450 print Norm_to_3;
+#X obj 617 28 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 617 205 pack 0 0 0;
+#X obj 639 166 t b f;
+#X obj 685 169 t b f;
+#X obj 617 267 unpack 0 0 0;
+#X obj 652 28 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 685 28 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 617 298 5 0 0 0 - - -;
+#X floatatom 656 298 5 0 0 0 - - -;
+#X floatatom 696 298 5 0 0 0 - - -;
+#X obj 617 324 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 656 324 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 696 324 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X text 735 94 0-127;
+#X text 740 390 0-1;
+#X obj 617 240 list-normalize;
+#N canvas 460 31 494 396 META 0;
+#X text 12 25 LICENSE SIBSD;
+#X text 12 105 AUTHOR Frank Barknecht;
+#X text 12 125 HELP_PATCH_AUTHORS Frank Barknecht. "pd meta" information
+added by Jonathan Wilkes for Pd version 0.42.;
+#X text 12 5 KEYWORDS control list_op;
+#X text 12 85 OUTLET_0 list;
+#X text 12 45 DESCRIPTION normalize a list;
+#X text 12 65 INLET_0 list;
+#X restore 746 491 pd META;
+#X connect 0 0 9 0;
+#X connect 0 0 14 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 9 0 15 0;
+#X connect 11 0 13 0;
+#X connect 12 0 9 1;
+#X connect 13 0 12 0;
+#X connect 16 0 17 0;
+#X connect 17 0 31 0;
+#X connect 18 0 17 0;
+#X connect 18 1 17 1;
+#X connect 19 0 17 0;
+#X connect 19 1 17 2;
+#X connect 20 0 23 0;
+#X connect 20 1 24 0;
+#X connect 20 2 25 0;
+#X connect 21 0 18 0;
+#X connect 22 0 19 0;
+#X connect 23 0 26 0;
+#X connect 24 0 27 0;
+#X connect 25 0 28 0;
+#X connect 31 0 20 0;

+ 0 - 0
extra/list-abs/list-normalize.pd


Некоторые файлы не были показаны из-за большого количества измененных файлов