diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38c0e69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ + +Processing/OSCReceive/application\.linux-arm64/ + +Processing/OSCReceive/application\.linux-armv6hf/ + +Processing/OSCReceive/application\.linux32/ + +Processing/OSCReceive/application\.linux64/ diff --git a/Conf/MovedulationJ7.json b/Conf/MovedulationJ7.json new file mode 100644 index 0000000..0f8001a --- /dev/null +++ b/Conf/MovedulationJ7.json @@ -0,0 +1,175 @@ +{ +contents: [ +{ + type:"hslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [155, 0, 0], + height: 120, + slidedFillColor: [100, 0, 0], + width: 480, + rect: [304, 826, 784, 946], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/lx $1" +}, +{ + type:"vslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [255, 0, 0], + height: 480, + slidedFillColor: [100, 0, 0], + width: 120, + rect: [165, 320, 285, 800], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/ly $1" +}, +{ + type:"vslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [255, 0, 0], + height: 480, + slidedFillColor: [100, 0, 0], + width: 120, + rect: [1662, 314, 1782, 794], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/ry $1" +}, +{ + type:"hslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [155, 0, 0], + height: 120, + slidedFillColor: [100, 0, 0], + width: 480, + rect: [1156, 827, 1636, 947], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/rx $1" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "1", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "1", + width: 150, + rect: [406, 320, 556, 470], + oscToggleOn: "/lt1 1", + oscToggleOff: "/lt1 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "2", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "2", + width: 150, + rect: [628, 321, 778, 471], + oscToggleOn: "/lt2 1", + oscToggleOff: "/lt2 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "3", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "3", + width: 150, + rect: [405, 584, 555, 734], + oscToggleOn: "/lt3 1", + oscToggleOff: "/lt3 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "4", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "4", + width: 150, + rect: [625, 579, 775, 729], + oscToggleOn: "/lt4 1", + oscToggleOff: "/lt4 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "1", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "1", + width: 150, + rect: [1159, 322, 1309, 472], + oscToggleOn: "/rt1 1", + oscToggleOff: "/rt1 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "2", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "2", + width: 150, + rect: [1415, 320, 1565, 470], + oscToggleOn: "/rt2 1", + oscToggleOff: "/rt2 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "3", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "3", + width: 150, + rect: [1162, 580, 1312, 730], + oscToggleOn: "/rt3 1", + oscToggleOff: "/rt3 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "4", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "4", + width: 150, + rect: [1410, 581, 1560, 731], + oscToggleOn: "/rt4 1", + oscToggleOff: "/rt4 0", + fireOSCOnToggleOff: "true" +} +]} \ No newline at end of file diff --git a/Processing/OSCReceive/OSC.pde b/Processing/OSCReceive/OSC.pde new file mode 100644 index 0000000..33ec6a3 --- /dev/null +++ b/Processing/OSCReceive/OSC.pde @@ -0,0 +1,96 @@ +int[] OSCleftToggle = {0,0,0,0}; +int OSCleftToggleActive = 0; +int[] OSCrightToggle = {0,0,0,0}; +int OSCrightToggleActive = 0; +float OSCleftX = 0; +float OSCleftY = 0; +float OSCrightX = 0; +float OSCrightY = 0; +float OSCvalue = 0; + +void oscEvent(OscMessage theOscMessage) { + + if(theOscMessage.checkTypetag("s")){ + OSCvalue = parseFloat(theOscMessage.get(0).toString().replaceAll(",",".")); + } + + switch(theOscMessage.addrPattern()) { + case "/lt1": + OSCleftToggle[0] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[0] == 1) {OSCleftToggleActive = 1;} + break; + case "/lt2": + OSCleftToggle[1] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[1] == 1) {OSCleftToggleActive = 2;} + break; + case "/lt3": + OSCleftToggle[2] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[2] == 1) {OSCleftToggleActive = 3;} + break; + case "/lt4": + OSCleftToggle[3] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[3] == 1) {OSCleftToggleActive = 4;} + break; + case "/lx": + OSCleftX = OSCvalue; + break; + case "/ly": + OSCleftY = OSCvalue; + break; + + case "/rt1": + OSCrightToggle[0] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[0] == 1) {OSCrightToggleActive = 1;} + break; + case "/rt2": + OSCrightToggle[1] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[1] == 1) {OSCrightToggleActive = 2;} + break; + case "/rt3": + OSCrightToggle[2] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[2] == 1) {OSCrightToggleActive = 3;} + break; + case "/rt4": + OSCrightToggle[3] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[3] == 1) {OSCrightToggleActive = 4;} + break; + case "/rx": + OSCrightX = OSCvalue; + break; + case "/ry": + OSCrightY = OSCvalue; + break; + } + + printOSC(false, theOscMessage); +} + + +void printOSC(boolean show, OscMessage theOscMessage) { + + if(show) { + print("Pattern:"+theOscMessage.addrPattern()); + print("\tTagType:"+theOscMessage.typetag()); + if(theOscMessage.checkTypetag("i")){ + print("\t\tValue:"+theOscMessage.get(0).intValue()); + } + if(theOscMessage.checkTypetag("s")){ + OSCvalue = parseFloat(theOscMessage.get(0).toString().replaceAll(",",".")); + print("\t\tValue:"+OSCvalue); + } + println(); + } + + print(OSCleftToggle[0]+"\t"); + print(OSCleftToggle[1]+"\t"); + print(OSCleftToggle[2]+"\t"); + print(OSCleftToggle[3]+"\t"); + print(OSCrightToggle[0]+"\t"); + print(OSCrightToggle[1]+"\t"); + print(OSCrightToggle[2]+"\t"); + print(OSCrightToggle[3]+"\t"); + print(OSCleftX+"\t"); + print(OSCleftY+"\t"); + print(OSCrightX+"\t"); + println(OSCrightY+"\t"); +} diff --git a/Processing/OSCReceive/OSCReceive.pde b/Processing/OSCReceive/OSCReceive.pde new file mode 100644 index 0000000..3f49b12 --- /dev/null +++ b/Processing/OSCReceive/OSCReceive.pde @@ -0,0 +1,43 @@ + +import oscP5.*; + +OscP5 oscP5; + +void setup() { + size(900, 500); + noStroke(); + stroke(255); + strokeWeight(3); + oscP5 = new OscP5(this,7000); +} + +void draw() { + background(50); + + for ( int i=0; i<4; i++) { + noStroke(); + fill(150); + + if(OSCleftToggle[i]==1) {fill(100,200,100,200);} else {fill(150);} + if(OSCleftToggleActive==i+1) {stroke(255);} else {noStroke();} + ellipse((50)+(100*i), 50, 40, 40); + + if(OSCrightToggle[i]==1) {fill(100,200,100,200);} else {fill(150);} + if(OSCrightToggleActive==i+1) {stroke(255);} else {noStroke();} + ellipse((550)+(100*i), 50, 40, 40); + } + + fill(200); + rect(190, 150, 20, 255, 10); + rect(70, 265, 255, 20, 10); + fill(100,200,100,200); + ellipse(200, OSCleftY+150, 40, 40); + ellipse(OSCleftX+70, 275, 40, 40); + + fill(200); + rect(690, 150, 20, 255, 10); + rect(570, 265, 255, 20, 10); + fill(100,200,100,200); + ellipse(700, OSCrightY+150, 40, 40); + ellipse(OSCrightX+570, 275, 40, 40); +} diff --git a/V3-WeMos/Circuit/CIRCUIT.pdf b/V3-WeMos/Circuit/CIRCUIT.pdf new file mode 100644 index 0000000..5766e4f Binary files /dev/null and b/V3-WeMos/Circuit/CIRCUIT.pdf differ diff --git a/V3-WeMos/Circuit/CIRCUIT.svg b/V3-WeMos/Circuit/CIRCUIT.svg new file mode 100644 index 0000000..62a47a7 --- /dev/null +++ b/V3-WeMos/Circuit/CIRCUIT.svg @@ -0,0 +1,4559 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NEW MEDIA ARTS + + MO{VE}DULATION v.3.2 + + + + + diff --git a/V3-WeMos/Circuit/WeMos-D1-mini.svg b/V3-WeMos/Circuit/WeMos-D1-mini.svg new file mode 100644 index 0000000..aa890e9 --- /dev/null +++ b/V3-WeMos/Circuit/WeMos-D1-mini.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/V3-WeMos/Circuit/mpu6050.svg b/V3-WeMos/Circuit/mpu6050.svg new file mode 100644 index 0000000..4d95b87 --- /dev/null +++ b/V3-WeMos/Circuit/mpu6050.svg @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 475C + + + 115C2 + + + + + + ITG/MPU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INVENSENSE + MPU-6050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 102 + + + 472 + + + 472 + + + 472 + + + + + + S201 + + + + + + X + + + Y + + + + + + + + + + + VCC + + + GND + + + SCL + + + SDA + + + XDA + + + XCL + + + AD0 + + + INT + + + + + \ No newline at end of file diff --git a/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino b/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino new file mode 100644 index 0000000..997e322 --- /dev/null +++ b/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino @@ -0,0 +1,76 @@ + +#include +#include +#include +#include +#include + +const int MPU=0x68; +int16_t AcX,AcY,AcZ; + +char ssid[] = "NETGEAR41"; +char pass[] = "magicalbanana0"; + +WiFiUDP Udp; +const IPAddress outIp(192,168,0,29); // remote IP of receiver computer +const unsigned int outPort = 7000; // remote port to receive OSC + +void setup() { + + Wire.begin(); + Wire.beginTransmission(MPU); + Wire.write(0x6B); + Wire.write(0); + Wire.endTransmission(true); + + Serial.begin(115200); + + Serial.print("Connecting to "); + Serial.println(ssid); + WiFi.begin(ssid, pass); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + +} + +void loop() { + + Wire.beginTransmission(MPU); + Wire.write(0x3B); + Wire.endTransmission(false); + Wire.requestFrom(MPU,14); + AcX=Wire.read()<<8|Wire.read(); + AcY=Wire.read()<<8|Wire.read(); + AcZ=Wire.read()<<8|Wire.read(); + + Serial.print(AcX); + Serial.print("\t"); + Serial.print(AcY); + Serial.print("\t"); + Serial.println(AcZ); + + OSCMessage msgRX("/movedulation/sliderRX"); + msgRX.add(AcX); + Udp.beginPacket(outIp, outPort); + msgRX.send(Udp); + Udp.endPacket(); + msgRX.empty(); + + OSCMessage msgRY("/movedulation/sliderRY"); + msgRY.add(AcY); + Udp.beginPacket(outIp, outPort); + msgRY.send(Udp); + Udp.endPacket(); + msgRX.empty(); + + + delay(100); +} diff --git a/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde b/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde new file mode 100644 index 0000000..442672a --- /dev/null +++ b/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde @@ -0,0 +1,27 @@ + +import oscP5.*; +import netP5.*; + +OscP5 oscP5; + +void setup() { + size(400,400); + frameRate(25); + oscP5 = new OscP5(this,7000); +} + +void draw() { + background(0); +} + +void oscEvent(OscMessage theOscMessage) { + print("### Pattern: "+theOscMessage.addrPattern()); + print(" TypeTag:"+theOscMessage.typetag()); + if(theOscMessage.checkTypetag("i")){ + print(" Value: "+theOscMessage.get(0).intValue()); + } + if(theOscMessage.checkTypetag("s")){ + print(" Value: "+theOscMessage.get(0)); + } + println(); +}