diff --git a/README.md b/README.md index aaa6953..4c0e153 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ The current version is based on https://github.com/stegu/perlin-noise/blob/maste ![simplex~-help.pd screenshot](simplex%7E-help.pd.png) -## Installation -Compilation requires [Makefile.pdlibbuilder](https://github.com/pure-data/pd-lib-builder/), which is included as a submodule here (therefore requiring the `--recursive` parameter when cloned). +## Build / Installation +Compilation requires [Makefile.pdlibbuilder](https://github.com/pure-data/pd-lib-builder/) (included as submodule, requiring the `--recursive` parameter below). ~~~ git clone --recursive https://github.com/ben-wes/simplex.git cd simplex @@ -40,7 +40,7 @@ make install ## Additional information ### Octaves -In case of more than 1 octave, additional noise octaves get sampled, i.e. downscaled instances of the noise space (higher noise frequencies) are added. This downscaling is achieved by multiplying the coordinate with `2^(octave-1)` - for example: +In case of more than 1 octave, additional noise octaves get sampled, i.e. downscaled instances of the noise space (higher noise frequencies) are added. This downscaling is achieved by multiplying the sampling coordinate with `2^(octave-1)` - for example: * input `(1, -3)` samples from `2*(1, -3) = (2, -6)` for 2nd octave * input `(1, -3)` samples from `4*(1, -3) = (4, -12)` for 3rd octave @@ -49,4 +49,4 @@ The persistence value determines the influence of successive octaves on the fina * persistence of `0.5` yields octaves' amplitudes `1, 0.5, 0.25, 0.125, 0.0625, ...` * persistence of `0.9` yields octaves' amplitudes `1, 0.9, 0.81, 0.729, 0.6561, ...` -If normalization is activated (through creation argument or message), the sum of all octaves' amplitudes gets normalized to 1. +If normalization is activated (via creation argument or message), the sum of all octaves' amplitudes gets normalized to 1. diff --git a/simplex~-help.pd b/simplex~-help.pd index 6907282..2441775 100644 --- a/simplex~-help.pd +++ b/simplex~-help.pd @@ -1,13 +1,13 @@ -#N struct 1022-path-template float x float y array 1022-data 1022-data-template; -#N struct 1022-data-template float x float y; -#N struct 1025-path-template float x float y array 1025-data 1025-data-template; -#N struct 1025-data-template float x float y; -#N struct 1026-path-template float x float y array 1026-data 1026-data-template; -#N struct 1026-data-template float x float y; -#N struct 1027-path-template float x float y array 1027-data 1027-data-template; -#N struct 1027-data-template float x float y; -#N struct 1031-path-template float x float y array 1031-data 1031-data-template; -#N struct 1031-data-template float x float y; +#N struct 1082-path-template float x float y array 1082-data 1082-data-template; +#N struct 1082-data-template float x float y; +#N struct 1085-path-template float x float y array 1085-data 1085-data-template; +#N struct 1085-data-template float x float y; +#N struct 1086-path-template float x float y array 1086-data 1086-data-template; +#N struct 1086-data-template float x float y; +#N struct 1087-path-template float x float y array 1087-data 1087-data-template; +#N struct 1087-data-template float x float y; +#N struct 1091-path-template float x float y array 1091-data 1091-data-template; +#N struct 1091-data-template float x float y; #N canvas 366 153 1104 831 10; #N canvas 200 100 298 221 (subpatch) 0; #X obj 50 70 inlet~; @@ -15,17 +15,17 @@ #X obj 116 140 outlet~; #X connect 0 0 1 0; #X connect 0 0 2 0; -#X restore 596 527 pd; -#X obj 508 398 cos~; +#X restore 599 527 pd; +#X obj 511 398 cos~; #X obj 55 398 zigzag~ 50; #X obj 55 506 snake~ in 2; #X obj 62 419 snake~ in 2; -#X obj 249 548 sc3d; -#X obj 256 419 snake~ in 3; -#X obj 249 506 snake~ in 3; -#X obj 62 452 simplex~; -#X obj 256 485 *~ 0.5; -#X obj 451 419 snake~ in 3; +#X obj 250 548 sc3d; +#X obj 257 419 snake~ in 3; +#X obj 250 506 snake~ in 3; +#X obj 62 454 simplex~; +#X obj 257 485 *~ 0.5; +#X obj 455 419 snake~ in 3; #N canvas 150 175 450 300 sin~ 0; #X obj 73 71 inlet~; #X obj 73 194 outlet~; @@ -34,14 +34,14 @@ #X connect 0 0 3 0; #X connect 2 0 1 0; #X connect 3 0 2 0; -#X restore 444 398 pd sin~; -#X obj 444 506 snake~ in 3; -#X obj 451 485 *~ 0.5; -#X obj 451 452 simplex~; +#X restore 448 398 pd sin~; +#X obj 448 506 snake~ in 3; +#X obj 455 485 *~ 0.5; +#X obj 455 454 simplex~; #X obj 55 548 sc2d; -#X obj 611 548 sc1d; -#X obj 444 548 sc3d 512; -#X obj 312 356 wrap~; +#X obj 614 548 sc1d; +#X obj 448 548 sc3d 512; +#X obj 313 356 wrap~; #N canvas 324 349 594 625 zigzagwrap 0; #X obj 78 154 *~ -1; #X obj 53 202 min~; @@ -59,15 +59,15 @@ #X connect 5 0 1 0; #X connect 5 0 0 0; #X connect 6 0 5 0; -#X restore 312 398 pd zigzagwrap; -#X obj 249 314 zigzag~ 24; -#X obj 312 335 *~ 8; -#X obj 249 335 *~ 16; -#X obj 264 356 wrap~; -#X obj 249 377 -~; -#X obj 249 398 /~ 16; -#X obj 256 452 simplex~; -#X obj 872 356 cos~; +#X restore 313 398 pd zigzagwrap; +#X obj 250 314 zigzag~ 24; +#X obj 313 335 *~ 8; +#X obj 250 335 *~ 16; +#X obj 265 356 wrap~; +#X obj 250 377 -~; +#X obj 250 398 /~ 16; +#X obj 257 454 simplex~; +#X obj 866 356 cos~; #N canvas 150 175 450 300 sin~ 0; #X obj 73 71 inlet~; #X obj 73 194 outlet~; @@ -80,13 +80,13 @@ #X obj 809 548 sc3d; #X obj 809 398 snake~ in 3; #X obj 809 377 *~; -#X obj 872 377 *~; +#X obj 866 377 *~; #X obj 809 527 *~; #X obj 824 419 snake~ in 4; -#X obj 904 319 phasor~ 24; -#X obj 444 527 *~ 1.1; -#X obj 249 527 *~ 1.1; -#X obj 809 319 phasor~ 600; +#X obj 904 314 phasor~ 24; +#X obj 448 527 *~ 1.1; +#X obj 250 527 *~ 1.1; +#X obj 809 314 phasor~ 600; #N canvas 208 208 450 300 y2r 0; #X obj 62 71 pow~ 2; #X obj 62 113 +~ 1; @@ -108,7 +108,7 @@ #X connect 0 0 3 0; #X connect 1 0 0 0; #X connect 2 0 1 0; -#X restore 904 340 pd 0..1 to -1..1; +#X restore 904 335 pd 0..1 to -1..1; #N canvas 260 260 450 300 radial_displace 0; #X obj 37 37 inlet~; #X obj 36 79 +~ 1; @@ -118,31 +118,24 @@ #X connect 1 0 3 0; #X connect 2 0 1 0; #X restore 824 506 pd radial_displace; -#X text 55 695 scanning from -1..1 in one dimension of perlin space \, sampled value displaces y-postion., f 23; -#X text 250 695 scanning the area of a square \, moving upwards in noise 3d space. sampled value displaces y-position., f 22; -#X text 445 695 circular scan \, slowly moving upwards (i.e. spiral movement) \, resulting in a periodic waveform. sampled value displaces y-position., f 22; -#X text 806 695 scanning a spherical shape \, moving in 4th dimension (w-coord). sampled value displaces radius., f 23; #X obj 1 1 cnv 16 1100 200 empty empty empty 20 12 0 10 #f0f0f0 #404040 0; #X msg 809 125 normalize 1; #X obj 809 236 tgl 19 0 empty empty dsp 0 -8 0 10 #c6daff #4d4d4d #373737 0 1; #X obj 55 14 simplex~; -#X text 115 13 - external for signal rate simplex noise with 1d \, 2d \, 3d and 4d multichannel input, f 83; +#X text 115 13 - external for signal rate simplex noise with 1d \, 2d \, 3d and 4d multichannel input, f 82; #N canvas -964 -1054 450 300 dsp 0; #X obj 37 37 inlet; #X msg 37 58 \; pd dsp \$1; #X connect 0 0 1 0; #X restore 809 260 pd dsp on/off; -#X text 306 59 CREATION ARGS; -#X text 806 59 MESSAGES; +#X text 305 59 CREATION ARGS; +#X text 807 59 MESSAGES; #X text 834 237 <-- activate to see visualizations below; -#X obj 596 738 output~; -#X text 714 780 <-- turn up for "spiral simplex noise scan synth" sound; -#X text 53 125 2nd inlet -; -#X text 53 146 outlet -; -#X msg 888 146 seed; +#X obj 599 738 output~; +#X msg 890 146 seed; #X text 379 83 single numerical argument sets octave count (default: 1); #X text 402 104 additional numerical argument sets persistence (default: 0.5), f 61; -#X msg 889 125 normalize 0; +#X msg 890 125 normalize 0; #X text 967 125 on/off; #N canvas 182 182 450 300 phasor~ 0; #X obj 41 58 samplerate~; @@ -158,8 +151,7 @@ #X connect 3 0 2 0; #X connect 4 0 0 0; #X connect 5 0 6 0; -#X restore 444 377 pd phasor~; -#X text 608 695 the generated signal based on the spiral movement., f 23; +#X restore 448 377 pd phasor~; #X obj 308 125 simplex~ -n 3 0.7; #X text 421 125 optional -n flag activates normalization (default: off); #X obj 308 146 simplex~ -s 42 -n 3 0.7; @@ -167,39 +159,52 @@ #X obj 308 104 simplex~ 3 0.7; #X obj 308 83 simplex~ 3; #X text 52 83 1st inlet -; -#X text 921 146 <-- reseeds randomly; -#X text 128 125 persistence signal; -#X text 111 146 sampled noise signal; +#X text 923 146 <-- reseeds randomly; #X text 52 59 INLETS / OUTLET; -#X obj 824 452 simplex~; +#X obj 824 454 simplex~; #X msg 809 104 persistence 0.4; #X msg 809 83 octaves 5; #X msg 809 146 seed 711; -#X obj 912 403 r~ \$0-displace; -#X obj 55 322 s~ \$0-displace; -#X obj 55 280 phasor~; -#X obj 55 301 *~ 768; +#X obj 905 403 r~ \$0-displace; +#X obj 55 314 s~ \$0-displace; #X obj 58 236 hsl 162 19 1e-05 1 1 0 empty empty displacement\ speed -2 -8 0 10 #e4e4e4 #000000 #000000 0 1; -#X floatatom 55 260 13 0 0 0 - - - 0; #X obj 300 236 tgl 19 0 empty empty normalize 0 -8 0 10 #e4e4e4 #4d4d4d #373737 0 1; #X msg 300 260 normalize \$1; #X msg 399 260 octaves \$1; #X obj 570 236 hsl 162 19 0 1 0 0 empty empty persistence\ (0..1) -2 -8 0 10 #e4e4e4 #000000 #000000 0 1; #X obj 567 260 lop~ 20; #N canvas 150 175 450 300 octaves 0; -#X obj 100 100 hradio 19 1 0 5 empty empty octaves\ (1..5) 0 -8 0 10 #e4e4e4 #000000 #000000 0; +#X obj 100 100 hradio 19 1 0 7 empty empty octaves\ (1..7) 0 -8 0 10 #e4e4e4 #000000 #000000 0; #X obj 100 123 + 1; #X obj 100 144 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; -#X coords 0 -1 1 1 95 19 2 100 100; +#X coords 0 -1 1 1 133 19 2 100 100; #X restore 399 236 pd octaves; -#X obj 912 436 r \$0-inlet1; -#X obj 987 436 r~ \$0-inlet2; -#X obj 399 281 s \$0-inlet1; -#X obj 567 281 s~ \$0-inlet2; -#X text 128 83 multichannel signal for sampling coord (1d..4d) and control messages, f 24; -#X connect 0 0 55 0; +#X obj 905 438 r \$0-inlet1; +#X obj 980 438 r~ \$0-inlet2; +#X obj 399 314 s \$0-inlet1; +#X obj 567 314 s~ \$0-inlet2; +#X text 125 83 multichannel signal for sampling coord (1d..4d) and control messages, f 23; +#N canvas 92 117 450 300 phasor 0; +#X obj 37 37 inlet; +#X obj 37 78 phasor~; +#X obj 37 99 *~ 768; +#X obj 37 120 outlet~; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X restore 55 260 pd phasor 0.00001..1; +#X text 716 780 <-- turn up for "spiral simplex noise scan" sound; +#X text 112 146 - sampled noise signal; +#X text 52 125 2nd inlet - persistence signal; +#X text 52 146 outlet; +#X text 251 695 scanning the area of a square \, moving upwards in 3d noise space. sampled values displace y-position., f 22; +#X text 55 695 scanning from -1..1 in one dimension of perlin space \, sampled values displace y-position., f 23; +#X text 449 695 circular scan \, slowly moving upwards (i.e. spiral movement) \, resulting in a periodic waveform. sampled values displace y-position., f 22; +#X text 611 695 the periodic signal based on the spiral movement., f 23; +#X text 806 695 scanning a spherical shape \, moving in 4th dimension (w-coord). sampled values displace radius., f 23; +#X connect 0 0 51 0; #X connect 0 1 16 0; #X connect 1 0 10 2; #X connect 1 0 12 2; @@ -239,7 +244,7 @@ #X connect 32 0 30 2; #X connect 32 0 34 2; #X connect 33 0 29 0; -#X connect 34 0 77 0; +#X connect 34 0 67 0; #X connect 35 0 40 0; #X connect 36 0 17 0; #X connect 37 0 5 0; @@ -251,29 +256,27 @@ #X connect 40 0 30 1; #X connect 40 0 34 1; #X connect 41 0 33 1; -#X connect 48 0 51 0; -#X connect 64 0 11 0; -#X connect 64 0 1 0; -#X connect 77 0 41 0; -#X connect 81 0 34 3; -#X connect 81 0 10 1; -#X connect 81 0 6 1; -#X connect 81 0 4 1; -#X connect 83 0 84 0; -#X connect 84 0 82 0; -#X connect 85 0 86 0; -#X connect 86 0 83 0; -#X connect 87 0 88 0; -#X connect 88 0 95 0; -#X connect 89 0 95 0; -#X connect 90 0 91 0; -#X connect 91 0 96 0; -#X connect 92 0 89 0; -#X connect 93 0 77 0; -#X connect 93 0 14 0; -#X connect 93 0 26 0; -#X connect 93 0 8 0; -#X connect 94 0 77 1; -#X connect 94 0 26 1; -#X connect 94 0 14 1; -#X connect 94 0 8 1; +#X connect 44 0 47 0; +#X connect 57 0 11 0; +#X connect 57 0 1 0; +#X connect 67 0 41 0; +#X connect 71 0 34 3; +#X connect 71 0 10 1; +#X connect 71 0 6 1; +#X connect 71 0 4 1; +#X connect 73 0 85 0; +#X connect 74 0 75 0; +#X connect 75 0 82 0; +#X connect 76 0 82 0; +#X connect 77 0 78 0; +#X connect 78 0 83 0; +#X connect 79 0 76 0; +#X connect 80 0 67 0; +#X connect 80 0 14 0; +#X connect 80 0 26 0; +#X connect 80 0 8 0; +#X connect 81 0 67 1; +#X connect 81 0 26 1; +#X connect 81 0 14 1; +#X connect 81 0 8 1; +#X connect 85 0 72 0; diff --git a/simplex~-help.pd.png b/simplex~-help.pd.png index 5502c31..fc82662 100644 Binary files a/simplex~-help.pd.png and b/simplex~-help.pd.png differ