hey all. i'm using a monome/arduinome to write 8 values between 1 and
-1 in an array and then using [tabosc4~] as a wavetable synth and then
using [snapshot~] to take values and use them as control data.

it works okay but i seem to be getting "bumps" in my waveform. some
values slightly less than -1 and slightly more than 1. it may be
because i've misunderstood the wraparound/interpolation but would
appreciate if someone could give some guidance as how to achieve
"cleaner" waveforms.

i've removed the most of the monome parts for the patch. it should
work fine with a bit of tinkering. cheers!
#N canvas 441 103 437 356 10;
#N canvas 179 163 819 578 button_to_array 0;
#X obj 223 -177 unpack f f f;
#X floatatom 257 -150 3 0 0 0 - - -;
#X floatatom 292 -150 3 0 0 0 - - -;
#X obj 257 -70 sel 0 1 2 3 4 5 6 7;
#X obj 315 12 spigot;
#X obj 315 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 358 12 spigot;
#X obj 358 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 401 12 spigot;
#X obj 444 12 spigot;
#X obj 488 12 spigot;
#X obj 531 12 spigot;
#X obj 574 12 spigot;
#X obj 617 12 spigot;
#X obj 401 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 444 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 488 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 531 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 574 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 617 40 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 223 -210 r monome.press;
#X obj 315 108 send arrayval;
#X msg 358 63 0.75;
#X msg 401 63 0.5;
#X msg 444 63 0.25;
#X msg 488 63 -0.25;
#X msg 531 62 -0.5;
#X msg 574 62 -0.75;
#X obj 93 -41 unpack f f f;
#X floatatom 93 -17 3 0 0 0 - - -;
#X obj 93 -61 r monome.press;
#X obj 18 37 tabwrite wave;
#X obj 18 -59 r arrayval;
#X text 316 -211 receives button presses;
#X text 307 -178 unpacks button presses;
#X text 649 37 selects array value;
#X text 116 -18 selects array index;
#N canvas 1 51 735 481 (subpatch) 0;
#X array wave 11 float 3;
#A 0 0.75 0.75 0.75 0.75 -0.75 -0.75 -0.75 -0.75 0.75 0.75 0.75;
#X coords 0 1 11 -1 200 140 1;
#X restore 14 -210 graph;
#X obj 93 86 unpack f f f;
#X floatatom 93 110 3 0 0 0 - - -;
#X obj 93 66 r monome.press;
#X obj 18 354 tabwrite wave;
#X obj 18 68 r arrayval;
#X floatatom 93 163 5 0 0 0 - - -;
#X floatatom 93 214 5 0 0 0 - - -;
#X floatatom 150 214 5 0 0 0 - - -;
#X obj 93 136 + 8;
#X obj 93 190 split 8 10;
#X obj 18 300 spigot;
#X msg 51 253 1;
#X msg 150 241 0;
#X text 186 216 For wraparound to work smoothly \, you should make
the last three points copies of the first three. This is done because
tabread4~ does 4-point interpolation.;
#X text 122 136 offset;
#X msg 315 63 0.9;
#X msg 617 61 -0.9;
#X connect 0 1 1 0;
#X connect 0 2 2 0;
#X connect 1 0 3 0;
#X connect 2 0 4 1;
#X connect 2 0 6 1;
#X connect 2 0 8 1;
#X connect 2 0 9 1;
#X connect 2 0 10 1;
#X connect 2 0 11 1;
#X connect 2 0 12 1;
#X connect 2 0 13 1;
#X connect 3 0 4 0;
#X connect 3 1 6 0;
#X connect 3 2 8 0;
#X connect 3 3 9 0;
#X connect 3 4 10 0;
#X connect 3 5 11 0;
#X connect 3 6 12 0;
#X connect 3 7 13 0;
#X connect 4 0 5 0;
#X connect 5 0 53 0;
#X connect 6 0 7 0;
#X connect 7 0 22 0;
#X connect 8 0 14 0;
#X connect 9 0 15 0;
#X connect 10 0 16 0;
#X connect 11 0 17 0;
#X connect 12 0 18 0;
#X connect 13 0 19 0;
#X connect 14 0 23 0;
#X connect 15 0 24 0;
#X connect 16 0 25 0;
#X connect 17 0 26 0;
#X connect 18 0 27 0;
#X connect 19 0 54 0;
#X connect 20 0 0 0;
#X connect 22 0 21 0;
#X connect 23 0 21 0;
#X connect 24 0 21 0;
#X connect 25 0 21 0;
#X connect 26 0 21 0;
#X connect 27 0 21 0;
#X connect 28 0 29 0;
#X connect 29 0 31 1;
#X connect 30 0 28 0;
#X connect 32 0 31 0;
#X connect 38 0 39 0;
#X connect 39 0 46 0;
#X connect 40 0 38 0;
#X connect 42 0 48 0;
#X connect 43 0 47 0;
#X connect 44 0 41 1;
#X connect 44 0 49 0;
#X connect 45 0 50 0;
#X connect 46 0 43 0;
#X connect 47 0 44 0;
#X connect 47 1 45 0;
#X connect 48 0 41 0;
#X connect 49 0 48 1;
#X connect 50 0 48 1;
#X connect 53 0 21 0;
#X connect 54 0 21 0;
#X restore 39 46 pd button_to_array;
#N canvas 1 51 450 300 (subpatch) 0;
#X array osc-output 2000 float 2;
#X coords 0 1.02 2000 -1.02 200 130 1 0 0;
#X restore 40 86 graph;
#X msg 315 11 \; pd dsp 1;
#X msg 315 72 \; pd dsp 0;
#X text 332 45 ON;
#X text 332 105 OFF;
#X obj 329 154 vsl 30 128 0.1 20 0 0 freq empty freq 0 -9 0 10 -1 -162280
-66577 6100 1;
#N canvas 474 185 726 453 lfo 0;
#X obj 26 96 tabosc4~ wave;
#X obj 164 198 tabwrite~ osc-output;
#X obj 164 141 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 164 118 loadbang;
#X obj 126 132 *~;
#X obj 141 67 loadbang;
#X obj 26 15 r freq;
#X msg 141 99 0.5;
#X obj 26 46 sig~ 20;
#X text 70 15 receives freq from vlslider;
#X obj 27 284 snapshot~;
#X obj 47 216 loadbang;
#X floatatom 27 308 5 0 0 0 - - -;
#X obj 164 174 metro 100;
#X obj 47 244 metro 100;
#X text 117 244 takes a snapshot of the waveform every 100ms;
#X text 237 172 writes to osc-output every 100ms;
#X connect 0 0 4 0;
#X connect 0 0 10 0;
#X connect 2 0 13 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 4 1;
#X connect 8 0 0 0;
#X connect 10 0 12 0;
#X connect 11 0 14 0;
#X connect 13 0 1 0;
#X connect 14 0 10 0;
#X restore 165 46 pd lfo;
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to