[PD] Circular scrolling in pd

James Dunn james at 4thharmonic.com
Sun Jan 6 22:28:30 CET 2013


Hi,

I'm trying to implement circular scrolling with the trackpad in pd and 
am approaching it by dividing a circle into segments and trying to 
detect when the mouses moves from one segment to the other. At the 
moment I can only detect 4 segments (basically just the zero crossings) 
which is not really accurate enough.

How would I go about detecting the boundaries of the 12 segments in the 
attached patch (circscroll.pd)?

Eventually I want to detect speed and direction too - but perhaps there 
is a better approach?

any advice welcome.

thanks,

james
-------------- next part --------------
#N canvas 583 57 438 405 10;
#X obj 204 63 MouseState;
#X msg 204 43 poll;
#X obj 125 85 gemwin;
#X msg 125 43 create \, 1;
#X msg 132 63 destroy;
#X obj 15 270 translateXYZ;
#X obj 15 290 circle 0.06;
#X obj 177 150 autoscale;
#X obj 177 170 hip 0.05;
#X obj 244 150 autoscale;
#X obj 244 170 hip 0.05;
#X obj 204 210 > 0;
#X obj 271 210 > 0;
#X obj 232 83 t b f;
#X obj 244 125 -;
#X msg 232 103 1;
#X obj 38 190 netreceive 3000;
#X floatatom 125 210 5 0 0 0 - - -;
#X obj 38 210 route x y;
#X obj 125 13 loadbang;
#X obj 177 190 t f f;
#X obj 244 190 t f f;
#X obj 177 210 * 8;
#X obj 244 210 * 8;
#X obj 165 366 square 2;
#X obj 165 346 translateXYZ -2 -2 0;
#X obj 165 326 alpha;
#X obj 204 242 * 4;
#X obj 271 242 * 4;
#X obj 271 262 - 2;
#X obj 204 262 - 2;
#X obj 165 306 color 1 1 1 0.4;
#X obj 327 35 gemhead 1;
#X obj 165 286 gemhead 2;
#X obj 15 169 gemhead 3;
#X obj 327 155 circscrollabs;
#X obj 327 55 circscrollabs;
#X obj 327 75 circscrollabs;
#X obj 327 175 circscrollabs;
#X obj 327 95 circscrollabs;
#X obj 327 135 circscrollabs;
#X obj 327 115 circscrollabs;
#X obj 327 195 circscrollabs;
#X obj 327 215 circscrollabs;
#X obj 327 255 circscrollabs;
#X obj 327 235 circscrollabs;
#X obj 327 275 circscrollabs;
#X connect 0 1 7 0;
#X connect 0 2 13 0;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 20 0;
#X connect 9 0 10 0;
#X connect 10 0 21 0;
#X connect 11 0 27 0;
#X connect 12 0 28 0;
#X connect 13 0 15 0;
#X connect 13 1 14 1;
#X connect 14 0 9 0;
#X connect 15 0 14 0;
#X connect 16 0 18 0;
#X connect 16 1 17 0;
#X connect 18 0 5 1;
#X connect 18 1 5 2;
#X connect 19 0 3 0;
#X connect 19 0 1 0;
#X connect 20 0 22 0;
#X connect 20 1 11 0;
#X connect 21 0 23 0;
#X connect 21 1 12 0;
#X connect 22 0 5 1;
#X connect 23 0 5 2;
#X connect 25 0 24 0;
#X connect 26 0 25 0;
#X connect 27 0 30 0;
#X connect 28 0 29 0;
#X connect 29 0 25 2;
#X connect 30 0 25 1;
#X connect 31 0 26 0;
#X connect 32 0 36 0;
#X connect 33 0 31 0;
#X connect 34 0 5 0;
#X connect 35 0 38 0;
#X connect 36 0 37 0;
#X connect 37 0 39 0;
#X connect 38 0 42 0;
#X connect 39 0 41 0;
#X connect 40 0 35 0;
#X connect 41 0 40 0;
#X connect 42 0 43 0;
#X connect 43 0 45 0;
#X connect 44 0 46 0;
#X connect 45 0 44 0;
-------------- next part --------------
#N canvas 465 330 450 300 10;
#X obj 100 165 polygon 3;
#X msg 117 59 0 0 0;
#X msg 134 79 0 4 0;
#X msg 151 99 2 3.46 0;
#X obj 73 191 separator;
#X obj 73 105 t a a;
#X obj 73 231 translateXYZ 0 0 0;
#X obj 73 211 rotateXYZ 0 0 30;
#X obj 73 85 inlet;
#X obj 73 251 outlet;
#X obj 214 21 loadbang;
#X obj 100 125 color;
#X obj 348 134 t l;
#X obj 241 94 until;
#X obj 214 54 t b b;
#X msg 241 74 3;
#X obj 100 145 alpha;
#X obj 241 114 randomF 1;
#X obj 214 154 list;
#X obj 241 134 list append 0.6;
#X connect 1 0 0 1;
#X connect 2 0 0 2;
#X connect 3 0 0 3;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 5 1 11 0;
#X connect 6 0 9 0;
#X connect 7 0 6 0;
#X connect 8 0 5 0;
#X connect 10 0 1 0;
#X connect 10 0 2 0;
#X connect 10 0 3 0;
#X connect 10 0 14 0;
#X connect 11 0 16 0;
#X connect 12 0 19 1;
#X connect 13 0 17 0;
#X connect 14 0 18 0;
#X connect 14 1 15 0;
#X connect 15 0 13 0;
#X connect 16 0 0 0;
#X connect 17 0 19 0;
#X connect 18 0 11 1;
#X connect 19 0 12 0;
#X connect 19 0 18 1;


More information about the Pd-list mailing list