-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmultitouch.tracker3.pd
333 lines (333 loc) · 8.22 KB
/
multitouch.tracker3.pd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
#N canvas 441 32 1920 1023 12;
#X obj 95 50 inlet;
#X obj 100 434 pack f f;
#X obj 59 370 f, f 4;
#X obj 60 404 spigot;
#X msg 114 353 1;
#X obj 322 176 select -1;
#X msg 204 322 0;
#X obj 451 311 f, f 4;
#X obj 452 345 spigot;
#X obj 557 252 t b f b;
#X msg 621 301 1;
#X obj 483 416 *;
#X msg 474 545 pressure \$1;
#X text 183 89 nouvelle methode;
#X obj 84 516 t l l;
#X msg 261 498 0;
#X obj 183 522 spigot 1;
#X msg 250 335 1;
#X obj 251 292 t b b b;
#N canvas 0 0 969 687 virtual_mouse_messages 0;
#X obj 248 31 inlet;
#X msg 442 121 mousedown;
#X obj 412 270 r MULTITOUCH.OFFSET.X;
#X obj 601 269 r MULTITOUCH.OFFSET.Y;
#X obj 350 38 r MULTITOUCH.ACTIVESLOTS;
#X obj 249 72 list prepend 0;
#X obj 249 118 route 0;
#X obj 293 166 unpack f f f;
#X obj 349 335 +;
#X obj 586 330 +;
#X obj 356 381 pack f f;
#X obj 343 517 list append;
#X msg 321 660 mouse \$3 \$4 1 0 \, motion \$1 \$2 0 \, mouseup \$1
\$2 1 0;
#X obj 343 549 t l l;
#X msg 395 576 \$1 \$2;
#X obj 395 600 s \$0-previous_mousepos;
#X obj 422 493 r \$0-previous_mousepos;
#X obj 799 283 r \$0-busy;
#X obj 799 307 select 0;
#X msg 799 331 1;
#X obj 355 412 t l l;
#X obj 395 433 spigot 1;
#X obj 395 457 t l b;
#X msg 462 390 0;
#X obj 321 685 outlet;
#X connect 0 0 5 0;
#X connect 2 0 8 1;
#X connect 3 0 9 1;
#X connect 4 0 5 1;
#X connect 5 0 6 0;
#X connect 6 1 7 0;
#X connect 7 1 8 0;
#X connect 7 2 9 0;
#X connect 8 0 10 0;
#X connect 9 0 10 1;
#X connect 10 0 20 0;
#X connect 11 0 13 0;
#X connect 12 0 24 0;
#X connect 13 0 12 0;
#X connect 13 1 14 0;
#X connect 14 0 15 0;
#X connect 16 0 11 1;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 21 1;
#X connect 20 0 11 0;
#X connect 20 1 21 0;
#X connect 21 0 22 0;
#X connect 22 0 11 1;
#X connect 22 1 23 0;
#X connect 23 0 21 1;
#X restore 35 782 pd virtual_mouse_messages;
#X obj 35 815 s \$2-to_active_window;
#N canvas 847 130 677 595 send_messages_to_<dest>-channel 0;
#X obj 78 18 inlet;
#X obj 90 138 r MULTITOUCH.OFFSET.X;
#X obj 114 166 r MULTITOUCH.OFFSET.Y;
#X obj 68 173 +;
#X obj 94 201 +;
#X obj 44 201 f;
#X obj 77 99 t b f;
#X msg 135 207 symbol \$1-channel;
#X obj 55 303 pack f f;
#X obj 111 356 s;
#X msg 64 326 update \$1 \$2;
#X text 283 59 \$1 = numero de <dest>-channel;
#X obj 302 255 loadbang;
#X msg 302 280 symbol \$0-nop;
#X text 285 99 \$2 \, \$3 = x \, y du touch event;
#X obj 98 57 unpack f f f;
#X obj 49 253 / 1;
#X obj 101 253 / 1;
#X obj 77 226 r \$2-zoom;
#X connect 0 0 15 0;
#X connect 1 0 3 1;
#X connect 2 0 4 1;
#X connect 3 0 5 1;
#X connect 4 0 17 0;
#X connect 5 0 16 0;
#X connect 6 0 5 0;
#X connect 6 1 7 0;
#X connect 7 0 9 1;
#X connect 8 0 10 0;
#X connect 10 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 9 1;
#X connect 15 0 6 0;
#X connect 15 1 3 0;
#X connect 15 2 4 0;
#X connect 16 0 8 0;
#X connect 17 0 8 1;
#X connect 18 0 17 1;
#X connect 18 0 16 1;
#X restore 243 668 pd send_messages_to_<dest>-channel;
#X f 17;
#N canvas 0 0 450 213 switch_mode_(mouse/touch) 0;
#X obj 53 30 inlet;
#X obj 52 261 outlet;
#X obj 191 259 outlet;
#X obj 61 84 t l b;
#X obj 136 114 f \$1;
#X obj 136 139 tabread MULTITOUCH.SLOT.STATUS;
#X obj 50 171 list prepend 0;
#X obj 53 206 route 0;
#X connect 0 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 4 0;
#X connect 4 0 5 0;
#X connect 5 0 6 1;
#X connect 6 0 7 0;
#X connect 7 0 1 0;
#X connect 7 1 2 0;
#X restore 38 635 pd switch_mode_(mouse/touch) ?;
#X obj 105 313 t b b f;
#N canvas 0 0 450 300 release_slot 0;
#X obj 43 10 inlet;
#X msg 50 375 0;
#X obj 50 399 s \$0-busy;
#N canvas 0 50 450 300 decrement 0;
#X obj 96 20 inlet;
#X obj 99 66 v MULTITOUCH.ACTIVESLOTS;
#X obj 98 146 s MULTITOUCH.ACTIVESLOTS;
#X obj 98 90 - 1;
#X obj 98 118 max 0;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X restore 80 353 pd decrement MULTITOUCH.ACTIVESLOTS;
#X msg 273 225 symbol \$1-channel;
#X obj 225 288 s;
#X obj 111 105 f \$1;
#X obj 111 127 tabread MULTITOUCH.SLOT.STATUS;
#X obj 111 151 select 0;
#X msg 190 230 remove;
#X obj 135 238 f \$1;
#X obj 151 190 t b b f;
#X obj 155 326 tabwrite MULTITOUCH.SLOT.STATUS;
#X msg 155 279 0 \$1;
#X obj 48 58 t b b b;
#X connect 0 0 14 0;
#X connect 1 0 2 0;
#X connect 4 0 5 1;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 1 11 0;
#X connect 9 0 5 0;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 11 1 9 0;
#X connect 11 2 4 0;
#X connect 13 0 12 0;
#X connect 14 0 1 0;
#X connect 14 1 3 0;
#X connect 14 2 6 0;
#X restore 302 353 pd release_slot;
#N canvas 0 0 750 530 register_slot 0;
#X obj 59 31 inlet;
#X obj 103 340 list append \$1;
#X msg 103 365 MULTITOUCH.MODE2 \$1 \$2 \$3;
#X obj 103 402 s \$2-to_active_window;
#X obj 98 142 unpack f f;
#X obj 193 145 r MULTITOUCH.OFFSET.X;
#X obj 217 173 r MULTITOUCH.OFFSET.Y;
#X obj 111 180 +;
#X obj 197 208 +;
#X obj 110 307 pack f f;
#N canvas 0 0 450 300 increment 0;
#X obj 96 20 inlet;
#X obj 99 74 + 1;
#X obj 99 100 s MULTITOUCH.ACTIVESLOTS;
#X obj 99 50 v MULTITOUCH.ACTIVESLOTS;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X restore 56 100 pd increment MULTITOUCH.ACTIVESLOTS;
#X obj 59 56 t b l b;
#X msg 360 95 1;
#X obj 360 120 s \$0-busy;
#X obj 319 233 r \$2-zoom;
#X obj 110 244 / 1;
#X obj 180 258 / 1;
#X connect 0 0 11 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 4 0 7 0;
#X connect 4 1 8 0;
#X connect 5 0 7 1;
#X connect 6 0 8 1;
#X connect 7 0 15 0;
#X connect 8 0 16 0;
#X connect 9 0 1 0;
#X connect 11 0 10 0;
#X connect 11 1 4 0;
#X connect 11 2 12 0;
#X connect 12 0 13 0;
#X connect 14 0 16 1;
#X connect 14 0 15 1;
#X connect 15 0 9 0;
#X connect 16 0 9 1;
#X restore 183 578 pd register_slot;
#X obj 98 123 route MT_POSITION_X MT_POSITION_Y MT_TRACKING_ID MT_TOUCH_LENGTH
MT_TOUCH_WIDTH, f 84;
#X text 73 608 update;
#X text 167 494 add;
#X text 320 329 remove;
#N canvas 0 0 616 542 send_extra_message_to_<dest>-channel(if_touchmode)
0;
#X obj 53 30 inlet;
#X obj 136 114 f \$1;
#X obj 136 139 tabread MULTITOUCH.SLOT.STATUS;
#X obj 50 171 spigot 1;
#X obj 61 84 t a b;
#X msg 194 212 symbol \$1-channel;
#X obj 99 283 s;
#X obj 117 213 loadbang;
#X msg 117 238 symbol \$0-nop;
#X obj 136 164 select 0;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 2 0 3 1;
#X connect 2 0 9 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 4 1 1 0;
#X connect 5 0 6 1;
#X connect 7 0 8 0;
#X connect 8 0 6 1;
#X connect 9 0 8 0;
#X connect 9 1 5 0;
#X restore 472 637 pd send_extra_message_to_<dest>-channel(if_touchmode)
;
#X obj 183 551 t l b l;
#X obj 311 550 spigot;
#X obj 350 491 f \$1;
#X obj 350 516 == 0;
#X obj 347 458 loadbang;
#X obj 311 575 s \$2-offset;
#N canvas 0 0 713 384 bypass_if_first_touch 0;
#X obj 96 31 inlet;
#X obj 100 329 outlet;
#X obj 248 52 loadbang;
#X obj 248 77 f \$1;
#X obj 166 134 spigot;
#X msg 194 258 0;
#X obj 100 298 spigot \$1;
#X obj 164 19 r MULTITOUCH.ACTIVESLOTS;
#X msg 164 205 1;
#X text 226 192 dès que on est en mode multitouch \, on active les
virtual mouse messages, f 26;
#X obj 164 170 select 2 0;
#X obj 226 106 == 0;
#X text 277 103 seulement pour le tracker 0;
#X text 237 261 quand tous les touch events disparaissent \, on désactive
les virtual mouse messages for tracker 0;
#X connect 0 0 6 0;
#X connect 2 0 3 0;
#X connect 3 0 11 0;
#X connect 4 0 10 0;
#X connect 5 0 6 1;
#X connect 6 0 1 0;
#X connect 7 0 4 0;
#X connect 8 0 6 1;
#X connect 10 0 8 0;
#X connect 10 1 5 0;
#X connect 11 0 4 1;
#X restore 44 743 pd bypass_if_first_touch;
#X text 223 744 If first touch \, mouse messages are directly generated
by OS;
#X connect 0 0 26 0;
#X connect 1 0 14 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 3 1;
#X connect 5 0 18 0;
#X connect 6 0 3 1;
#X connect 7 0 8 0;
#X connect 8 0 11 0;
#X connect 9 0 7 0;
#X connect 9 1 11 1;
#X connect 9 2 10 0;
#X connect 10 0 8 1;
#X connect 11 0 12 0;
#X connect 12 0 30 0;
#X connect 14 0 22 0;
#X connect 14 1 16 0;
#X connect 15 0 16 1;
#X connect 16 0 31 0;
#X connect 17 0 16 1;
#X connect 18 0 6 0;
#X connect 18 1 17 0;
#X connect 18 2 24 0;
#X connect 19 0 20 0;
#X connect 22 0 19 0;
#X connect 22 1 21 0;
#X connect 23 0 2 0;
#X connect 23 1 4 0;
#X connect 23 2 1 1;
#X connect 26 0 2 0;
#X connect 26 1 23 0;
#X connect 26 2 5 0;
#X connect 26 3 7 0;
#X connect 26 4 9 0;
#X connect 31 0 25 0;
#X connect 31 1 15 0;
#X connect 31 2 32 0;
#X connect 32 0 36 0;
#X connect 33 0 34 0;
#X connect 34 0 32 1;
#X connect 35 0 33 0;
#X connect 37 0 19 0;