diff options
author | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2010-08-19 05:04:28 +0000 |
---|---|---|
committer | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2010-08-19 05:04:28 +0000 |
commit | 79096fd626b946efd6947fa94ab15d30bf003ba0 (patch) | |
tree | 9a10305d0ade28bb3f5139c37ab8fa76f4e603d4 /weightonset | |
parent | 633eaa4b2350c00ddc1b338c357096a441944784 (diff) |
converted to new library template and debianized
svn path=/trunk/externals/ekext/; revision=13835
Diffstat (limited to 'weightonset')
-rw-r--r-- | weightonset/help-weightonset.pd | 261 | ||||
-rwxr-xr-x | weightonset/makefile | 106 | ||||
-rwxr-xr-x | weightonset/stink.wav | bin | 213234 -> 0 bytes | |||
-rw-r--r-- | weightonset/weightonset.c | 106 |
4 files changed, 0 insertions, 473 deletions
diff --git a/weightonset/help-weightonset.pd b/weightonset/help-weightonset.pd deleted file mode 100644 index 99985ac..0000000 --- a/weightonset/help-weightonset.pd +++ /dev/null @@ -1,261 +0,0 @@ -#N canvas 31 64 901 594 10; -#N canvas 1901 230 450 300 hasc 0; -#X obj 65 62 inlet~; -#X obj 196 184 block~ 1024; -#X obj 55 106 rfft~; -#X obj 56 150 hasc~; -#X obj 56 188 outlet; -#X obj 179 60 inlet; -#X text 153 42 threshold (0-10+); -#X text 43 -1 ...get a "highest apparent spectral component" value -from the FFT; -#X connect 0 0 2 0; -#X connect 2 0 3 0; -#X connect 2 1 3 1; -#X connect 3 0 4 0; -#X connect 5 0 3 2; -#X restore 44 446 pd hasc; -#X obj 128 374 bonk~; -#N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-input 106595 float 0; -#X coords 0 1 106594 -1 200 51 1; -#X restore 287 337 graph; -#X obj 128 398 t b b; -#X obj 81 534 f; -#X floatatom 96 515 5 0 0 0 - - -; -#X floatatom 168 376 5 0 99 0 - - -; -#X obj 81 554 print end-value; -#X obj 43 352 tabplay~ \$0-input; -#X floatatom 75 382 5 0 100 0 - - -; -#X floatatom 75 424 5 0 0 0 - - -; -#X obj 75 402 * 0.1; -#N canvas 0 0 450 300 tw 0; -#X obj 274 70 inlet; -#X msg 274 91 0; -#X obj 191 158 cup; -#X obj 110 55 inlet; -#X obj 110 80 t f b; -#X obj 115 207 tabwrite \$0-hasc; -#X obj 301 158 cup; -#X obj 220 55 inlet; -#X obj 220 80 t f b; -#X obj 225 207 tabwrite \$0-weightonset; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 1 0 6 0; -#X connect 2 0 5 1; -#X connect 3 0 4 0; -#X connect 4 0 5 0; -#X connect 4 1 2 0; -#X connect 6 0 9 1; -#X connect 7 0 8 0; -#X connect 8 0 9 0; -#X connect 8 1 6 0; -#X restore 39 547 pd tw; -#N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-hasc 1 float 3; -#A 0 0; -#X coords 0 511 1 -1 200 51 1; -#X restore 287 408 graph; -#N canvas 0 0 450 300 adapt 0; -#X obj 128 44 inlet; -#X obj 127 74 / 100; -#X obj 129 108 t b f; -#X msg 126 139 1; -#X obj 132 170 -; -#X obj 134 205 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 1 4 1; -#X connect 3 0 4 0; -#X connect 4 0 5 0; -#X restore 168 395 pd adapt; -#X floatatom 168 429 5 0 0 1 influence - -; -#X obj 168 336 loadbang; -#X obj 88 304 bng 15 250 50 0 empty empty load 17 7 0 10 -262144 -1 --1; -#N canvas 211 176 325 300 loadfile 0; -#X obj 44 28 openpanel; -#X obj 44 47 t a b; -#X obj 44 90 pack s s; -#X msg 44 109 read -resize \$1 \$2; -#X obj 44 128 soundfiler; -#X obj 71 66 symbol \$0-input; -#X floatatom 44 186 0 0 0 0 - - -; -#X obj 44 166 i; -#X msg 44 206 resize \$1; -#X obj 44 226 s \$0-hasc; -#X obj 44 147 / 1024; -#X obj 44 5 inlet; -#X obj 113 227 s \$0-weightonset; -#X obj 243 27 loadbang; -#X msg 119 27 ../sound/stink.wav; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 1 1 5 0; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 4 0 10 0; -#X connect 5 0 2 1; -#X connect 6 0 8 0; -#X connect 7 0 6 0; -#X connect 8 0 9 0; -#X connect 8 0 12 0; -#X connect 10 0 7 0; -#X connect 11 0 0 0; -#X connect 13 0 14 0; -#X connect 14 0 1 0; -#X restore 88 323 pd loadfile; -#X obj 43 304 bng 12 250 50 0 empty empty play 15 6 0 10 -262144 -1 --1; -#X obj 43 319 t b b; -#N canvas 0 0 450 300 (subpatch) 0; -#X array \$0-weightonset 1 float 3; -#A 0 0; -#X coords 0 511 1 -1 200 51 1; -#X restore 287 478 graph; -#X obj 116 435 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --257985 -1; -#X text 56 49 The second value is multipled by the value in the second -inlet (range 0-1) and added to the first value. Then \, the divider -value (in order to work out the weighted average) is also multiplied -by this value \, and added to it.; -#X text 46 8 This object makes a moving average with successively less -important values. The calculation initiates when the object is banged -\, and the first value is the most influential.; -#X msg 65 472 1; -#X obj 130 473 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 195 528 print data; -#X text 78 161 When the object is banged the right outlet sends a list -of all the values that influenced the result since the last bang \, -up to a limit of 1024 values.; -#X obj 477 73 weightonset; -#X text 476 58 V; -#X text 476 54 |; -#X text 476 44 |; -#X text 476 34 |; -#X text 452 20 floats in; -#X text 506 58 V; -#X text 506 54 |; -#X text 506 44 |; -#X text 685 338 ^; -#X text 684 342 |; -#X text 684 351 |; -#X text 738 338 ^; -#X text 737 342 |; -#X text 737 351 |; -#X text 801 338 ^; -#X text 800 342 |; -#X text 800 351 |; -#X text 671 377 of successive inputs; -#X text 475 89 |; -#X text 475 99 |; -#X text 475 109 |; -#X text 475 119 V; -#X text 452 141 influenced; -#X text 464 130 onset-; -#X text 465 153 value; -#X text 538 89 |; -#X text 538 99 |; -#X text 538 109 |; -#X text 538 119 V; -#X text 531 132 data dump; -#X text 537 143 on bang; -#X msg 49 382 5; -#X text 212 439 factor; -#X text 202 415 successive; -#X text 64 101 The influence of successive values is lessened by the -inverse of the factor on the right inlet. So \, a value of 0.2 in the -second inlet means that the second value after the bang is 20% as influential -as the first \, and the third value is 20% of 20% (4%) as influential -as the first.; -#X floatatom 195 465 5 0 10 1 attack - -; -#X text 509 200 influence factor = 0 : 1st float output only; -#X text 510 188 attack length = 0 \,; -#X text 535 166 EXAMPLES:; -#X text 520 226 attack length = 0 \,; -#X text 519 238 influence factor = 1: successive values are; -#X text 232 475 phase; -#X text 232 489 0-100; -#X text 508 252 equally influential to the total \, but the list; -#X text 492 31 successive influence factor (0-1); -#X text 538 58 V; -#X text 538 54 |; -#X text 514 265 grows longer as the numbers are added. Therefore; -#X text 506 278 the output responds less and less to input values. -; -#X text 513 291 This is an accumulating average between bangs.; -#X text 511 313 attack length = 0 \,; -#X text 634 366 (w) = weightings (influence values); -#X text 509 393 the output is onset-weighted e.g. the most influential -values are at the start of the series.; -#X text 699 462 ^; -#X text 698 466 |; -#X text 698 475 |; -#X text 769 462 ^; -#X text 768 466 |; -#X text 768 475 |; -#X text 832 462 ^; -#X text 831 466 |; -#X text 831 475 |; -#X text 680 501 of successive inputs; -#X text 656 490 (w) = weightings (influence values); -#X text 517 437 attack length = 3 \,; -#X text 509 327 influence factor = 0.5: v1 w 1 \, v2 w 0.5 \, v3 w -0.25 \, v4 w 0.125; -#X text 86 200 If the attack phase is greater than 0 \, the values -become successively more influential to the weighted average \, until -the number of values is equal to the attack+1. The next value after -the attack phase is the most influential \, then the influence factor -kicks in and successive values become less influential.; -#X text 557 71 creation args: influence factor \, attack; -#X obj 96 495 weightonset 0.8 0; -#X obj 10 381 dac~; -#X msg 168 356 80; -#X text 513 451 influence factor = 0.5: v1 w 0.125 \, v2 w 0.25 \, -v3 w 0.5 \, v4 w 1 \, v5 w 0.5 \, v6 w 0.25...; -#X text 525 43 attack phase (0-100+); -#X obj 664 183 weightonset 0 0; -#X obj 666 222 weightonset 1 0; -#X obj 674 312 weightonset 0.5 0; -#X obj 676 434 weightonset 0.5 3; -#X text 509 517 the output is onset-weighted e.g. the most influential -values are at the start of the series \, after the attack phase in -which the values become successively more influential.; -#X text 99 269 The weightings of values during the attack phase is -the reverse of successive weightings after the attack:; -#X text 226 294 weighting = influence pow(attack - index); -#X connect 0 0 12 0; -#X connect 0 0 98 0; -#X connect 1 0 3 0; -#X connect 3 0 22 0; -#X connect 3 0 98 0; -#X connect 3 1 4 0; -#X connect 4 0 7 0; -#X connect 5 0 4 1; -#X connect 5 0 12 1; -#X connect 6 0 14 0; -#X connect 8 0 0 0; -#X connect 8 0 1 0; -#X connect 8 0 99 0; -#X connect 8 0 99 1; -#X connect 9 0 11 0; -#X connect 10 0 0 1; -#X connect 11 0 10 0; -#X connect 14 0 15 0; -#X connect 14 0 98 1; -#X connect 16 0 100 0; -#X connect 16 0 61 0; -#X connect 17 0 18 0; -#X connect 19 0 20 0; -#X connect 20 0 8 0; -#X connect 20 1 12 2; -#X connect 25 0 98 0; -#X connect 26 0 98 0; -#X connect 61 0 9 0; -#X connect 65 0 98 2; -#X connect 98 0 5 0; -#X connect 98 1 27 0; -#X connect 100 0 6 0; diff --git a/weightonset/makefile b/weightonset/makefile deleted file mode 100755 index a530dea..0000000 --- a/weightonset/makefile +++ /dev/null @@ -1,106 +0,0 @@ -current: - echo make pd_linux, pd_nt, pd_irix5, pd_irix6 or pd_darwin - -clean: ; rm -f *.pd_* *.o - -# ----------------------- NT ----------------------- - -pd_nt: weightonset.dll - -.SUFFIXES: .obj .dll - -PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo -VC="D:\Program Files\Microsoft Visual Studio\Vc98" - -PDNTINCLUDE = /I. /I\tcl\include /I..\..\src /I$(VC)\include - -PDNTLDIR = $(VC)\lib -PDNTLIB = $(PDNTLDIR)\libc.lib \ - $(PDNTLDIR)\oldnames.lib \ - $(PDNTLDIR)\kernel32.lib \ - ..\..\bin\pd.lib - -.c.dll: - cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c - link /dll /export:$*_setup $*.obj $(PDNTLIB) - -# ----------------------- IRIX 5.x ----------------------- - -pd_irix5: weightonset.pd_irix5 - -INSTALL_PREFIX=/usr/local -EXT=pd_irix5 -.SUFFIXES: .pd_irix5 - -SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2 - - -SGIINCLUDE = -I/usr/local/include - -.c.pd_irix5: - cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c - ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o - rm $*.o - -# ----------------------- IRIX 6.x ----------------------- - -pd_irix6: weightonset.pd_irix6 - -INSTALL_PREFIX=/usr/local -EXT=pd_irix6 -.SUFFIXES: .pd_irix6 - -SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2 - - -SGIINCLUDE = -I/usr/local/include - -.c.pd_irix6: - cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c - ld -elf -shared -rdata_shared -o $*.pd_irix6 $*.o - rm $*.o - -# ----------------------- LINUX i386 ----------------------- - -pd_linux: weightonset.pd_linux - -INSTALL_PREFIX=/usr/local -EXT=pd_linux -.SUFFIXES: .pd_linux - -LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ - -Wall -W -Wshadow -Wstrict-prototypes -Werror \ - -Wno-unused -Wno-parentheses -Wno-switch - -LINUXINCLUDE = -I/usr/local/include - -.c.pd_linux: - cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c - ld --export-dynamic -shared -o $*.pd_linux $*.o -lc -lm - strip --strip-unneeded $*.pd_linux - rm $*.o - -# ----------------------- Mac OSX ----------------------- - -pd_darwin: weightonset.pd_darwin - -INSTALL_PREFIX=/usr/local -EXT=pd_darwin -.SUFFIXES: .pd_darwin - -DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -.c.pd_darwin: - cc $(DARWINCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c - cc -bundle -undefined suppress -flat_namespace -o $*.pd_darwin $*.o - rm -f $*.o - -# ---------------------------------------------- - -install:: - install -d $(INSTALL_PREFIX)/lib/pd/extra -# install -m 644 *.$(EXT) $(INSTALL_PREFIX)/lib/pd/externs - -install -m 644 weightonset.$(EXT) $(INSTALL_PREFIX)/lib/pd/extra - install -m 644 *.pd $(INSTALL_PREFIX)/lib/pd/doc/5.reference - install -m 644 *.wav $(INSTALL_PREFIX)/lib/pd/doc/sound diff --git a/weightonset/stink.wav b/weightonset/stink.wav Binary files differdeleted file mode 100755 index aec9986..0000000 --- a/weightonset/stink.wav +++ /dev/null diff --git a/weightonset/weightonset.c b/weightonset/weightonset.c deleted file mode 100644 index 44265a2..0000000 --- a/weightonset/weightonset.c +++ /dev/null @@ -1,106 +0,0 @@ -#include "m_pd.h" -#include <math.h> - -typedef struct _datachunk -{ - t_atom data[1024]; -} t_datachunk; - -typedef struct _weightonset -{ - t_object x_obj; - t_float multiplier, accumulator, divider, divaccum, weighted, increment; - t_float length, attack; - t_datachunk x_datachunk; - t_outlet *waverage, *datachunk; -} t_weightonset; - -t_class *weightonset_class; - -void weightonset_float (t_weightonset *x, t_floatarg fin) -{ - if(x->length < 1024) - { - int len = (int)x->length; - SETFLOAT(&x->x_datachunk.data[len], fin); - if(x->length < x->attack) - { - int i; - float weight = 1; - x->increment = x->length - x->attack; - for(i=0;i<x->increment;i++) - { - weight = weight*x->multiplier; - } - x->accumulator += fin*weight; - x->divaccum += weight; - x->weighted = x->accumulator / x->divaccum; - outlet_float(x->waverage, x->weighted); - } - else if(x->length == x->attack) - { - x->divider = 1; - x->divaccum += 1; - x->accumulator += fin*x->divider; - x->weighted = x->accumulator / x->divaccum; - x->divider *= x->multiplier; - x->divaccum += x->divider; - outlet_float(x->waverage, x->weighted); - } - else - { - x->accumulator += fin*x->divider; - x->weighted = x->accumulator / x->divaccum; - x->divider *= x->multiplier; - x->divaccum += x->divider; - outlet_float(x->waverage, x->weighted); - } - x->length += 1; - } -} - -void weightonset_bang (t_weightonset *x) -{ - int (len) = (int)x->length; - outlet_list(x->datachunk, gensym("list"), len, x->x_datachunk.data); - x->accumulator = 0; - x->length = 0; - if(x->attack > 0) - { - x->divider = 1; - x->divaccum = 1; - } - else if (x->attack == 0) - { - x->divider = 0; - x->divaccum = 0; - } -} - -void *weightonset_new(t_floatarg f1, t_floatarg f2) -{ - t_weightonset *x = (t_weightonset *)pd_new(weightonset_class); - x->multiplier = f1 != 0 ? f1 : 0.5; - x->accumulator = 0; - x->divider = f2 > 0 ? 1 : 0; - x->divaccum = f2 > 0 ? 1 : 0; - x->length = 0; - x->attack = f2; - floatinlet_new(&x->x_obj, &x->multiplier); - floatinlet_new(&x->x_obj, &x->attack); - x->waverage = outlet_new(&x->x_obj, &s_float); - x->datachunk = outlet_new(&x->x_obj, &s_list); - return (void *)x; -} - -void weightonset_setup(void) { - weightonset_class = class_new(gensym("weightonset"), - (t_newmethod)weightonset_new, - 0, sizeof(t_weightonset), - 0, A_DEFFLOAT, A_DEFFLOAT, 0); - post("input values become less and less important"); - post("as entropy brings alternative rewards"); - class_sethelpsymbol(weightonset_class, gensym("help-weightonset")); - class_addbang(weightonset_class, weightonset_bang); - class_addfloat(weightonset_class, weightonset_float); -} |