Skip to content

Commit 202d825

Browse files
committed
add cocomidi graph for pd (simplified abstraction)
1 parent 8ded6d7 commit 202d825

File tree

3 files changed

+275
-0
lines changed

3 files changed

+275
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//for CocoMake v0.18+
2+
3+
#include <CocoMidi.h>
4+
#include <CocoTouch.h>
5+
#include <CocoTouchFilterSettingDefault.h>
6+
7+
8+
//filter settings
9+
CocoTouchFilterSetting CocoFilter;
10+
11+
int value = 0;
12+
int prevValue = 0;
13+
int velocityValue = 0;
14+
int prevVelocity = 0;
15+
16+
uint16_t offset_adc = 0;
17+
18+
unsigned long previousMillis = 0; // will store last time LED was updated
19+
20+
int velocityThreshold = 80;
21+
22+
int filtered_value = 0;
23+
uint8_t pin_queue = 0;
24+
25+
//cocoTouch pin
26+
#define ADC_REF_PIN PB2
27+
#define ADC_SENSE_PIN PB4
28+
29+
void usb_poll()
30+
{
31+
usbPoll();
32+
}
33+
34+
void setup() {
35+
CocoMidi.init();
36+
37+
38+
CocoTouch.begin();
39+
CocoTouch.setAdcSpeed(4);
40+
CocoTouch.delay = 4;
41+
//TeenyTouchDusjagr.delay_cb = &delay;
42+
CocoTouch.usb_poll = &usb_poll;
43+
offset_adc = CocoTouch.sense(ADC_SENSE_PIN, ADC_REF_PIN, 8 );
44+
45+
}
46+
47+
void loop() {
48+
49+
if (millis() - previousMillis >= 5) // 0% data loss
50+
{
51+
filtered_value = CocoTouchFilter_get(&CocoFilter);
52+
velocityValue = filtered_value - prevValue + 500;
53+
prevValue = filtered_value;
54+
55+
CocoMidi.sendCCHires(filtered_value,1);
56+
57+
58+
previousMillis = millis();
59+
}
60+
61+
value = CocoTouch.sense(ADC_SENSE_PIN, ADC_REF_PIN, 7 ) - offset_adc;
62+
if (value > 0) CocoTouchFilter_put(&CocoFilter, value);
63+
prevVelocity = velocityValue;
64+
CocoMidi.update();
65+
66+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#N canvas 561 235 1119 656 10;
2+
#X text 93 254 Positive Value;
3+
#X text 350 255 Negative Value;
4+
#X obj 211 90 ctlin;
5+
#X obj 196 202 i;
6+
#X obj 234 201 i;
7+
#X obj 234 226 << 3;
8+
#X obj 196 255 +;
9+
#X obj 277 452 outlet;
10+
#X obj 224 135 route \$1 \$2;
11+
#X obj 321 90 ctlin;
12+
#X obj 306 202 i;
13+
#X obj 344 201 i;
14+
#X obj 344 226 << 3;
15+
#X obj 306 255 +;
16+
#X obj 334 135 route \$3 \$4;
17+
#X obj 428 391 i;
18+
#X obj 471 405 + 1;
19+
#X obj 486 383 change;
20+
#X msg 455 363 0;
21+
#X obj 428 335 t b b;
22+
#X obj 400 335 t b;
23+
#X obj 486 356 > \$5;
24+
#X obj 428 452 outlet;
25+
#X connect 2 0 3 1;
26+
#X connect 2 0 4 1;
27+
#X connect 2 1 8 0;
28+
#X connect 3 0 6 0;
29+
#X connect 4 0 5 0;
30+
#X connect 5 0 6 1;
31+
#X connect 6 0 7 0;
32+
#X connect 6 0 20 0;
33+
#X connect 8 0 3 0;
34+
#X connect 8 1 4 0;
35+
#X connect 9 0 10 1;
36+
#X connect 9 0 11 1;
37+
#X connect 9 1 14 0;
38+
#X connect 10 0 13 0;
39+
#X connect 11 0 12 0;
40+
#X connect 12 0 13 1;
41+
#X connect 13 0 7 0;
42+
#X connect 13 0 20 0;
43+
#X connect 14 0 10 0;
44+
#X connect 14 1 11 0;
45+
#X connect 15 0 16 0;
46+
#X connect 15 0 21 0;
47+
#X connect 15 0 22 0;
48+
#X connect 16 0 15 1;
49+
#X connect 17 0 19 0;
50+
#X connect 18 0 15 1;
51+
#X connect 19 0 15 0;
52+
#X connect 19 1 18 0;
53+
#X connect 20 0 15 0;
54+
#X connect 21 0 17 0;
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
#N canvas 2127 184 1118 565 10;
2+
#X obj 589 103 s MIDI-Value1;
3+
#X obj 587 176 r MIDI-Value1;
4+
#X obj 587 203 tabwrite MIDI-Value1;
5+
#X obj 760 103 s index;
6+
#X obj 704 176 r index;
7+
#X obj 675 283 r index;
8+
#X obj 588 259 r MIDI-Value1;
9+
#X obj 588 327 tabwrite Graph1;
10+
#X obj 588 293 average 10;
11+
#X obj 0 -52 cnv 15 560 640 empty empty empty 20 12 0 14 -262130 -66577
12+
0;
13+
#X obj 19 162 cnv 15 480 130 empty empty empty 4 8 0 10 -262130 -262144
14+
0;
15+
#N canvas 53 97 450 300 (subpatch) 0;
16+
#X array MIDI-Value1 480 float 1;
17+
#A 0 12 16 24 17 14 22 21 12 20 20 14 13 22 17 15 24 19 11 20 22 15
18+
16 24 17 13 22 21 13 24 23 14 14 22 16 14 21 20 15 19 22 15 15 24 19
19+
12 22 20 13 20 22 15 15 25 17 15 24 21 12 19 23 16 15 23 16 12 22 20
20+
12 18 23 12 18 22 17 13 22 19 12 20 23 15 14 22 16 13 21 21 13 15 24
21+
13 16 24 16 14 23 19 13 18 22 14 16 22 17 13 22 22 11 20 22 15 17 23
22+
16 14 23 21 13 19 23 14 15 24 16 14 21 21 19 13 17 22 17 14 23 17 11
23+
21 20 13 20 21 15 16 22 19 13 22 21 11 17 24 15 14 24 19 13 21 20 13
24+
18 21 13 14 24 18 13 23 22 12 18 23 14 13 23 16 12 22 23 13 19 22 14
25+
16 23 17 13 22 24 12 18 23 14 15 22 17 13 21 24 14 18 23 13 17 23 16
26+
12 23 20 13 19 23 16 15 22 19 12 21 23 13 19 23 13 17 24 17 12 22 20
27+
13 20 21 14 16 23 18 12 21 20 12 19 21 12 16 22 16 13 21 21 13 19 20
28+
15 14 25 18 14 21 19 13 19 23 12 14 23 17 15 22 21 13 19 23 13 15 23
29+
18 14 23 20 13 18 24 15 16 23 16 16 21 20 13 20 23 15 14 23 17 15 21
30+
21 12 19 24 14 16 24 16 12 23 20 13 19 22 15 17 24 16 16 21 20 13 19
31+
22 14 14 24 18 14 22 20 12 20 22 12 13 23 17 11 21 20 13 18 22 14 16
32+
23 16 15 21 19 13 18 25 14 15 23 17 14 22 19 13 19 23 14 15 22 15 15
33+
23 21 13 20 22 15 16 24 16 12 22 23 12 19 22 14 15 22 18 14 23 19 13
34+
19 23 15 14 22 17 14 23 21 13 19 23 14 14 23 17 13 23 19 17 20 23 14
35+
16 22 17 17 22 22 13 20 22 13 14 23 16 12 23 20 13 20 22 14 15 23 17
36+
14 21 20 13 18 22 14 13 22 17 13 22 20 12 20 20 15 17 23 14 12 23 20
37+
14 18 23 15 15 22 16 13 22 20 13 19 21 13 15 23 17 14 22 21 12 16;
38+
#X coords 0 512 479 -1 480 130 1 0 0;
39+
#X restore 19 9 graph;
40+
#X obj 19 9 cnv 15 480 130 empty empty empty 4 8 0 10 -204786 -262144
41+
0;
42+
#N canvas 53 97 717 419 (subpatch) 0;
43+
#X array Graph1 480 float 1;
44+
#A 0 1.2 18.6 18.7 18.7 18.7 18.7 18.7 18.7 18.9 18.2 18 17.7 17.5
45+
17.5 17.6 17.8 17.6 17.5 17.5 17.7 17.8 18.1 18.3 18.3 18.1 17.9 18.1
46+
18.3 18.7 18.8 18.7 18.5 18.3 18.2 18.3 18.2 18.1 18.3 17.8 17.7 17.8
47+
17.9 18.1 18.4 18.2 18.3 18.3 18.1 18.2 18.2 18.2 18.2 18.3 18.1 18.4
48+
18.6 18.7 18.6 18.5 18.6 18.7 18.7 18.5 18.4 18.1 17.9 17.8 17.8 17.7
49+
17.7 17.3 17.6 17.5 17.6 17.7 17.7 17.6 17.6 17.8 17.8 18.1 17.7 17.7
50+
17.6 17.6 17.5 17.7 17.8 17.3 17.4 17.2 17.4 17.6 17.6 17.7 17.9 17.7
51+
17.7 18 17.8 17.9 17.9 17.7 17.8 17.7 17.6 17.9 17.7 17.9 17.9 18 18.1
52+
18.2 18.1 18.2 18.3 18.2 18.4 18.3 18.4 18.3 18.1 18.2 18.2 18.2 18
53+
17.6 17.5 17.6 17.4 17.5 17.8 17.7 17.7 17.6 17.4 17.4 17.5 17.5 17.8
54+
17.7 17.5 17.7 17.6 17.8 18 18.1 18.2 18 17.7 18 18 17.8 18 18 18 17.9
55+
17.8 18 18.1 17.8 17.6 17.6 17.6 17.5 17.5 17.7 17.9 17.8 17.8 18 18.1
56+
18 17.9 17.7 17.6 17.5 17.6 17.7 17.8 17.7 17.7 18 18 18.1 18.2 18.2
57+
18.3 18.2 18.1 18.2 18.2 18.1 18 18 18 17.9 17.9 18.1 18.1 18.1 18
58+
18.2 18.3 18.2 18.1 18.3 17.9 17.8 17.9 17.9 18.2 18 17.9 18.2 18.2
59+
18 18.3 18.3 18.3 18.3 18 18.2 18.4 18.2 18.2 18.3 18 18 18.1 17.9
60+
18 17.9 17.8 17.9 17.9 17.8 17.8 17.7 17.6 17.6 17.4 17.4 17.3 17.1
61+
17.2 17.2 17.3 17.4 17.4 17.3 17.6 17.4 17.7 17.9 18 18 17.8 17.8 17.8
62+
18.1 17.8 17.8 17.6 17.5 17.6 17.7 17.9 17.9 17.9 17.9 18 18.1 18.1
63+
18.2 18.1 18.2 18.1 18.1 18 18.1 18.3 18.4 18.4 18.2 18.4 18.2 18.2
64+
18.2 18.4 18.3 18.3 18.1 18.1 18.2 18.1 18.1 18.2 18.1 18 18.1 18 18.2
65+
18.3 18.2 17.9 18.1 18 18.1 18.1 17.9 18 18.1 18.1 18.1 18.5 18.3 18.3
66+
18.3 18.3 18.3 18.2 17.9 17.9 18.1 17.9 18 18 17.9 18 18 17.8 17.7
67+
17.6 17.5 17.2 17.1 17.1 17.2 17 17 17.2 17.5 17.5 17.4 17.8 17.8 17.7
68+
17.7 17.7 18 18 17.9 17.9 18 17.9 18 18 18 18.1 17.9 17.9 17.9 17.8
69+
17.6 17.7 17.8 18 18 18.1 18 18.1 18.2 18.4 18.5 18.2 18.1 18.3 18.2
70+
18.1 18.1 18 17.9 17.7 17.9 18.1 18.2 17.8 17.9 17.9 18 18.1 18 18
71+
17.9 17.9 17.9 18.1 18.1 18.1 18.1 18 18 18.1 18.1 18 18 17.8 18.2
72+
18.3 18.3 18.3 18.5 18.4 18.4 18.8 18.7 19 18.6 18.6 18.5 18.4 18.2
73+
18.3 18.2 17.7 17.8 17.6 17.6 17.6 17.6 17.7 17.8 17.8 17.9 18.1 17.9
74+
17.9 17.9 17.7 17.7 17.7 17.5 17.4 17.4 17.3 17.4 17.4 17.3 17.5 17.3
75+
17.4 17.8 17.9 17.6 17.5 17.6 17.6 17.8 17.6 17.9 17.9 17.7 17.6 17.8
76+
17.9 17.8 17.8 17.7 17.8 17.6 17.4 17.4 17.5 17.6 17.7 17.7 17.8 17.7
77+
18.5;
78+
#X coords 0 512 479 0 480 130 1 0 0;
79+
#X restore 19 162 graph;
80+
#N canvas 53 97 450 300 (subpatch) 0;
81+
#X array Graph2 480 float 1;
82+
#A 0 1.2 1.2 1.2 1.1 1 1 0.900002 1 1.3 0 -0.5 -0.9 -1.2 -1.2 -1.1
83+
-0.900002 -1.1 -1.2 -1.4 -0.5 -0.200001 0.4 0.799999 0.799999 0.5 0.1
84+
0.5 0.799999 1.2 1.1 0.900002 0.4 0 -0.0999985 0.199999 0.300001 0
85+
0 -0.900002 -1.1 -0.900002 -0.6 -0.199999 0.199999 -0.0999985 0.0999985
86+
0.199999 -0.199999 0.400002 0.5 0.400002 0.300001 0.199999 -0.299999
87+
0.199999 0.300001 0.400002 0.5 0.299999 0.4 0.5 0.5 0.200001 0.299999
88+
-0.299999 -0.700001 -0.900002 -0.800001 -0.799999 -0.9 -1.4 -1.1 -1
89+
-0.799999 -0.4 -0.199999 -0.199999 -0.199999 0.0999985 0.0999985 0.800001
90+
0.1 0.200001 0 -0.1 -0.200001 0.1 0.199999 -0.5 -0.4 -0.9 -0.300001
91+
-0.1 0 0.1 0.4 0 -0.0999985 0.700001 0.4 0.699999 0.5 0.1 0.199999
92+
0 -0.299999 0.199999 0 -0.1 0.1 0.1 0.200001 0.5 0.300001 0.5 0.699999
93+
0.300001 0.699999 0.4 0.5 0.299999 0 0 0.1 0 -0.299999 -0.5 -0.4 -0.299999
94+
-0.6 -0.299999 0.199999 0.1 0.1 -0.1 -0.300001 -0.200001 0 -0.1 0.4
95+
0.200001 -0.299999 0 -0.1 0.199999 0.6 0.700001 0.700001 0.5 -0.0999985
96+
0.299999 0.5 0.0999985 0.4 0.200001 0 -0.200001 -0.400002 0 0.4 -0.200001
97+
-0.4 -0.199999 -0.4 -0.5 -0.5 -0.199999 0.1 -0.200001 -0.300001 0.200001
98+
0.5 0.4 0.299999 0.200001 0.1 -0.200001 -0.299999 -0.0999985 0 -0.299999
99+
-0.4 0 0.1 0.4 0.6 0.700001 0.699999 0.5 0.300001 0.5 0.5 0.1 0 -0.1
100+
-0.200001 -0.300001 -0.4 -0.1 0 -0.1 -0.200001 0.1 0.299999 0.200001
101+
0.1 0.4 0 -0.300001 -0.200001 -0.200001 0.200001 -0.200001 -0.4 0 0.1
102+
-0.299999 0.4 0.5 0.4 0.4 -0.200001 0.200001 0.5 0 0 0.299999 -0.299999
103+
-0.299999 -0.199999 -0.4 0 -0.300001 -0.6 -0.300001 -0.300001 -0.5
104+
-0.200001 -0.299999 -0.5 -0.299999 -0.6 -0.5 -0.5 -0.799999 -0.699999
105+
-0.599998 -0.5 -0.300001 -0.200001 -0.300001 0.200001 0 0.400002 0.799999
106+
0.799999 0.799999 0.5 0.4 0.4 0.800001 0.199999 0.4 -0.1 -0.4 -0.4
107+
-0.299999 0.1 0.1 0.1 -0.200001 0.200001 0.300001 0.5 0.700001 0.5
108+
0.5 0.200001 0.200001 0.1 0.200001 0.299999 0.299999 0.299999 0 0.299999
109+
0 0.1 0.1 0.4 0.199999 0 -0.299999 -0.299999 0 -0.299999 -0.1 0 -0.1
110+
-0.4 -0.199999 -0.299999 0.1 0.199999 0 -0.200001 0 -0.200001 0 0.1
111+
-0.200001 0 -0.1 -0.199999 -0.1 0.6 0.199999 0.299999 0.199999 0.199999
112+
0.4 0.200001 -0.200001 -0.200001 0 -0.6 -0.299999 -0.299999 -0.4 -0.299999
113+
-0.299999 -0.400002 -0.199999 -0.299999 -0.6 -0.699999 -0.9 -0.9 -0.699999
114+
-1 -1 -0.599998 -0.200001 -0.1 -0.1 0.599998 0.699999 0.6 0.5 0.700001
115+
1 0.799999 0.4 0.4 0.6 0.1 0.200001 0.299999 0.299999 0.4 -0.1 -0.1
116+
0 -0.1 -0.4 -0.199999 -0.200001 0 0 0 0.1 0.200001 0.300001 0.6 0.9
117+
0.5 0.300001 0.299999 0.200001 0 0.1 -0.1 -0.300001 -0.699999 -0.6
118+
-0.1 0.1 -0.5 -0.300001 -0.200001 -0.1 0.1 0.1 0.299999 0 -0.200001
119+
-0.300001 0.300001 0.200001 0.200001 0.1 -0.1 0 0.1 0.200001 0.1 0.1
120+
-0.300001 0.1 0.199999 0.199999 0.299999 0.5 0.299999 0.299999 0.799999
121+
0.700001 1.2 0.4 0.300001 0.200001 0.1 -0.299999 -0.1 -0.199999 -1.1
122+
-0.900002 -1.4 -1 -1 -0.9 -0.699999 -0.400002 -0.5 -0.300001 0.4 0.1
123+
0.299999 0.299999 0.1 0.1 0 -0.299999 -0.4 -0.5 -0.800001 -0.5 -0.5
124+
-0.6 -0.200001 -0.400002 -0.300001 0.299999 0.5 0.200001 0.200001 0.200001
125+
0.200001 0.5 0.1 0.6 0.5 -0.0999985 -0.299999 0.199999 0.4 0.199999
126+
0.199999 -0.0999985 0.199999 -0.299999 -0.5 -0.300001 -0.1 -0.199999
127+
-0.199999 -0.0999985 0 0 1.1;
128+
#X coords 0 512 479 -1 480 130 1 0 0;
129+
#X restore 22 322 graph;
130+
#X obj 568 -29 cnv 22 400 25 empty empty CocoMidi_Graph_Example 20
131+
12 0 22 -262144 -159808 0;
132+
#X obj 878 202 r index;
133+
#X obj 791 178 r MIDI-Value1;
134+
#X obj 791 212 average 10;
135+
#X obj 791 242 diff_n 10;
136+
#X obj 791 276 tabwrite Graph2;
137+
#X text 584 238 Average Graph Example;
138+
#X text 787 157 Velocity Graph Example;
139+
#X text 586 148 Value Graph;
140+
#X text 587 17 Send value in Arduino sketch: CocoMidi.sendCCHires(filtered_value
141+
\, 1) \; Read Value in PD (480 = table size);
142+
#X obj 589 68 cocoMidiReadHires 1 2 3 4 480;
143+
#X text 854 24 Arduino Sketch (CocoMake v0.18+) https://gist.github.com/badgeek/6bb8d2ce05d9776411a222e8ab5c3894
144+
;
145+
#X connect 1 0 2 0;
146+
#X connect 4 0 2 1;
147+
#X connect 5 0 7 1;
148+
#X connect 6 0 8 0;
149+
#X connect 8 0 7 0;
150+
#X connect 16 0 20 1;
151+
#X connect 17 0 18 0;
152+
#X connect 18 0 19 0;
153+
#X connect 19 0 20 0;
154+
#X connect 25 0 0 0;
155+
#X connect 25 1 3 0;

0 commit comments

Comments
 (0)