max patch updated

This commit is contained in:
Tom Igoe 2009-04-16 19:09:13 +00:00
parent 85c43b874b
commit 240e35be80
1 changed files with 684 additions and 257 deletions

View File

@ -1,6 +1,23 @@
int redPin = 0; /*
int greenPin = 1; This example reads three analog sensors (potentiometers are easiest)
int bluePin = 2; and sends their values serially. The Processing and Max/MSP programs at the bottom
take those three values and use them to change the background color of the screen.
The circuit:
* potentiometers attached to analog inputs 0, 1, and 2
http://www.arduino.cc/en/Tutorial/VirtualColorMixer
created 2 Dec 2006
by David A. Mellis
modified 14 Apr 2009
by Tom Igoe and Scott Fitzgerald
*/
#define redPin 0
#define greenPin 1
#define bluePin 2
void setup() void setup()
{ {
@ -9,262 +26,672 @@ void setup()
void loop() void loop()
{ {
Serial.print("R"); Serial.print(analogRead(redPin));
Serial.println(analogRead(redPin)); Serial.print(",");
Serial.print("G"); Serial.print(analogRead(greenPin));
Serial.println(analogRead(greenPin)); Serial.print(",");
Serial.print("B");
Serial.println(analogRead(bluePin)); Serial.println(analogRead(bluePin));
delay(100);
} }
/* Processing code for this example /* Processing code for this example
// Color Mixer
// by David A. Mellis
//
// Created 2 December 2006
//
// based on Analog In
// by <a href="http://itp.jtnimoy.com">Josh Nimoy</a>.
//
// Created 8 February 2003
// Updated 2 April 2005
import processing.serial.*; import processing.serial.*;
String buff = ""; float redValue = 0; // red value
int rval = 0, gval = 0, bval = 0; float greenValue = 0; // green value
int NEWLINE = 10; float blueValue = 0; // blue value
Serial port; Serial myPort;
void setup() void setup() {
{
size(200, 200); size(200, 200);
// Print a list in case COM1 doesn't work out // List all the available serial ports
println("Available serial ports:");
println(Serial.list()); println(Serial.list());
// I know that the first port in the serial list on my mac
//port = new Serial(this, "COM1", 9600); // is always my Arduino, so I open Serial.list()[0].
// Uses the first available port // Open whatever port is the one you're using.
port = new Serial(this, Serial.list()[0], 9600); myPort = new Serial(this, Serial.list()[0], 9600);
} // don't generate a serialEvent() unless you get a newline character:
myPort.bufferUntil('\n');
void draw()
{
while (port.available() > 0) {
serialEvent(port.read());
} }
background(rval, gval, bval);
}
void serialEvent(int serial) void draw() {
{ // set the background color with the color values:
// If the variable "serial" is not equal to the value for background(redValue, greenValue, blueValue);
// a new line, add the value to the variable "buff". If the
// value "serial" is equal to the value for a new line,
// save the value of the buffer into the variable "val".
if(serial != NEWLINE) {
buff += char(serial);
} else {
// The first character tells us which color this value is for
char c = buff.charAt(0);
// Remove it from the string
buff = buff.substring(1);
// Discard the carriage return at the end of the buffer
buff = buff.substring(0, buff.length()-1);
// Parse the String into an integer
if (c == 'R')
rval = Integer.parseInt(buff);
else if (c == 'G')
gval = Integer.parseInt(buff);
else if (c == 'B')
bval = Integer.parseInt(buff);
// Clear the value of "buff"
buff = "";
} }
}
*/ void serialEvent(Serial myPort) {
// get the ASCII string:
String inString = myPort.readStringUntil('\n');
if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
// split the string on the commas and convert the
// resulting substrings into an integer array:
float[] colors = float(split(inString, ","));
// if the array has at least three elements, you know
// you got the whole thing. Put the numbers in the
// color variables:
if (colors.length >=3) {
// map them to the range 0-255:
redValue = map(colors[0], 0, 1023, 0, 255);
greenValue = map(colors[1], 0, 1023, 0, 255);
blueValue = map(colors[2], 0, 1023, 0, 255);
}
}
}
*/
/* Max/MSP patch for this example /* Max/MSP patch for this example
{
"boxes" : [ {
"box" : {
"maxclass" : "newobj",
"text" : "/ 4",
"patching_rect" : [ 448.0, 502.0, 32.5, 20.0 ],
"numoutlets" : 1,
"fontsize" : 12.0,
"outlettype" : [ "int" ],
"id" : "obj-25",
"fontname" : "Arial",
"numinlets" : 2
}
max v2; }
#N vpatcher 0 44 587 638; , {
#P window setfont "Sans Serif" 9.; "box" : {
#P comment 137 34 100 196617 Read the serial port every two milliseconds; "maxclass" : "newobj",
#P window linecount 1; "text" : "/ 4",
#P newex 156 276 27 196617 / 4; "patching_rect" : [ 398.0, 502.0, 32.5, 20.0 ],
#P number 156 254 35 9 0 1023 3 3 0 0 0 221 221 221 222 222 222 0 0 0; "numoutlets" : 1,
#P newex 106 276 27 196617 / 4; "fontsize" : 12.0,
#P number 106 254 35 9 0 1023 3 3 0 0 0 221 221 221 222 222 222 0 0 0; "outlettype" : [ "int" ],
#P newex 55 276 27 196617 / 4; "id" : "obj-24",
#P number 55 254 35 9 0 1023 3 3 0 0 0 221 221 221 222 222 222 0 0 0; "fontname" : "Arial",
#P hidden newex 55 303 112 196617 bgcolor 220 120 192; "numinlets" : 2
#P user multiSlider 167 145 125 91 0. 1023. 1 3449 15 0 0 2 0 0 0; }
#M frgb 0 0 0;
#M brgb 255 255 255; }
#M rgb2 127 127 127; , {
#M rgb3 0 0 0; "box" : {
#M rgb4 37 52 91; "maxclass" : "newobj",
#M rgb5 74 105 182; "text" : "/ 4",
#M rgb6 112 158 18; "patching_rect" : [ 348.0, 502.0, 32.5, 20.0 ],
#M rgb7 149 211 110; "numoutlets" : 1,
#M rgb8 187 9 201; "fontsize" : 12.0,
#M rgb9 224 62 37; "outlettype" : [ "int" ],
#M rgb10 7 114 128; "id" : "obj-23",
#P user multiSlider 438 145 125 91 0. 1023. 1 3449 15 0 0 2 0 0 0; "fontname" : "Arial",
#M frgb 0 0 0; "numinlets" : 2
#M brgb 255 255 255; }
#M rgb2 127 127 127;
#M rgb3 0 0 0; }
#M rgb4 37 52 91; , {
#M rgb5 74 105 182; "box" : {
#M rgb6 112 158 18; "maxclass" : "comment",
#M rgb7 149 211 110; "text" : "Virtual color mixer\n\nThis patch takes a string, containing three comma-separated ASCII formatted numbers from 0 to 1023, with a carriage return and linefeed at the end. It converts the string to three integers and uses them to set the background color.\n\n created 2 Dec 2006\n by David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe",
#M rgb8 187 9 201; "linecount" : 11,
#M rgb9 224 62 37; "patching_rect" : [ 524.0, 51.0, 398.0, 158.0 ],
#M rgb10 7 114 128; "numoutlets" : 0,
#P user multiSlider 301 144 125 91 0. 1023. 1 3449 15 0 0 2 0 0 0; "fontsize" : 12.0,
#M frgb 0 0 0; "id" : "obj-32",
#M brgb 255 255 255; "fontname" : "Arial",
#M rgb2 127 127 127; "numinlets" : 1
#M rgb3 0 0 0; }
#M rgb4 37 52 91;
#M rgb5 74 105 182; }
#M rgb6 112 158 18; , {
#M rgb7 149 211 110; "box" : {
#M rgb8 187 9 201; "maxclass" : "newobj",
#M rgb9 224 62 37; "text" : "select 0 1",
#M rgb10 7 114 128; "patching_rect" : [ 372.0, 125.0, 62.0, 20.0 ],
#N vpatcher 20 74 303 387; "numoutlets" : 3,
#P window setfont "Sans Serif" 9.; "fontsize" : 12.0,
#P newex 92 248 62 196617 fromsymbol; "outlettype" : [ "bang", "bang", "" ],
#B color 5; "id" : "obj-30",
#P message 134 231 73 196617 "fontname" : "Arial",
; "numinlets" : 1
#P newex 134 211 62 196617 prepend set; }
#B color 5;
#P newex 92 211 40 196617 itoa; }
#B color 5; , {
#P newex 92 191 55 196617 zl group 4; "box" : {
#P newex 50 158 52 196617 select 10; "maxclass" : "comment",
#P message 130 86 14 196617 1; "text" : "click here to close the serial port",
#P message 112 86 14 196617 0; "patching_rect" : [ 457.0, 276.0, 206.0, 20.0 ],
#P newex 50 132 27 196617 gate; "numoutlets" : 0,
#P newex 130 64 52 196617 select 82; "fontsize" : 12.0,
#P comment 151 45 25 196617 "R"; "id" : "obj-26",
#P inlet 130 44 15 0; "fontname" : "Arial",
#P outlet 92 270 15 0; "numinlets" : 1
#P fasten 5 0 4 0 117 111 55 111; }
#P fasten 6 0 4 0 135 111 55 111;
#P connect 4 0 7 0; }
#P fasten 3 1 4 1 177 128 72 128; , {
#P connect 7 0 8 0; "box" : {
#P connect 7 1 8 0; "maxclass" : "comment",
#P connect 8 0 9 0; "text" : "click here to open the serial port",
#P connect 9 0 12 0; "patching_rect" : [ 457.0, 250.0, 206.0, 20.0 ],
#P connect 12 0 0 0; "numoutlets" : 0,
#P connect 7 0 5 0; "fontsize" : 12.0,
#P connect 1 0 3 0; "id" : "obj-27",
#P connect 3 0 6 0; "fontname" : "Arial",
#P connect 9 0 10 0; "numinlets" : 1
#P connect 10 0 11 0; }
#P pop;
#P newobj 55 96 49 196617 p parseR; }
#N vpatcher 20 74 620 474; , {
#P window setfont "Sans Serif" 9.; "box" : {
#P newex 92 250 62 196617 fromsymbol; "maxclass" : "message",
#B color 5; "text" : "close",
#P message 134 233 73 196617 501 "patching_rect" : [ 372.0, 276.0, 39.0, 18.0 ],
; "numoutlets" : 1,
#P newex 134 213 62 196617 prepend set; "fontsize" : 12.0,
#B color 5; "outlettype" : [ "" ],
#P newex 92 213 40 196617 itoa; "id" : "obj-21",
#B color 5; "fontname" : "Arial",
#P newex 92 193 55 196617 zl group 4; "numinlets" : 2
#P newex 50 160 52 196617 select 10; }
#P message 130 88 14 196617 1;
#P message 112 88 14 196617 0; }
#P newex 50 134 27 196617 gate; , {
#P newex 130 66 52 196617 select 66; "box" : {
#P comment 169 50 25 196617 "B"; "maxclass" : "message",
#P inlet 130 46 15 0; "text" : "port a",
#P outlet 92 272 15 0; "patching_rect" : [ 394.0, 250.0, 41.0, 18.0 ],
#P fasten 5 0 4 0 117 113 55 113; "numoutlets" : 1,
#P fasten 6 0 4 0 135 113 55 113; "fontsize" : 12.0,
#P connect 4 0 7 0; "outlettype" : [ "" ],
#P fasten 3 1 4 1 177 130 72 130; "id" : "obj-19",
#P connect 7 0 8 0; "fontname" : "Arial",
#P connect 7 1 8 0; "numinlets" : 2
#P connect 8 0 9 0; }
#P connect 9 0 12 0;
#P connect 12 0 0 0; }
#P connect 7 0 5 0; , {
#P connect 1 0 3 0; "box" : {
#P connect 3 0 6 0; "maxclass" : "comment",
#P connect 9 0 10 0; "text" : "Click here to get a list of serial ports",
#P connect 10 0 11 0; "patching_rect" : [ 457.0, 224.0, 207.0, 20.0 ],
#P pop; "numoutlets" : 0,
#P newobj 156 96 49 196617 p parseB; "fontsize" : 12.0,
#N vpatcher 589 252 861 563; "id" : "obj-2",
#P window setfont "Sans Serif" 9.; "fontname" : "Arial",
#P comment 153 47 25 196617 "G"; "numinlets" : 1
#P newex 92 250 62 196617 fromsymbol; }
#B color 5;
#P message 134 233 73 196617 718 }
; , {
#P newex 134 213 62 196617 prepend set; "box" : {
#B color 5; "maxclass" : "comment",
#P newex 92 213 40 196617 itoa; "text" : "Convert ASCII to symbol",
#B color 5; "patching_rect" : [ 424.0, 423.0, 147.0, 20.0 ],
#P newex 92 193 55 196617 zl group 4; "numoutlets" : 0,
#P newex 50 160 52 196617 select 10; "fontsize" : 12.0,
#P message 130 88 14 196617 1; "id" : "obj-4",
#P message 112 88 14 196617 0; "fontname" : "Arial",
#P newex 50 134 27 196617 gate; "numinlets" : 1
#P newex 130 66 52 196617 select 71; }
#P inlet 130 46 15 0;
#P outlet 92 272 15 0; }
#P fasten 5 0 3 0 135 113 55 113; , {
#P fasten 4 0 3 0 117 113 55 113; "box" : {
#P connect 3 0 6 0; "maxclass" : "comment",
#P fasten 2 1 3 1 177 130 72 130; "text" : "Convert integer to ASCII",
#P connect 6 0 7 0; "patching_rect" : [ 424.0, 400.0, 147.0, 20.0 ],
#P connect 6 1 7 0; "numoutlets" : 0,
#P connect 7 0 8 0; "fontsize" : 12.0,
#P connect 8 0 11 0; "id" : "obj-5",
#P connect 11 0 0 0; "fontname" : "Arial",
#P connect 6 0 4 0; "numinlets" : 1
#P connect 1 0 2 0; }
#P connect 2 0 5 0;
#P connect 8 0 9 0; }
#P connect 9 0 10 0; , {
#P pop; "box" : {
#P newobj 106 96 49 196617 p parseG; "maxclass" : "newobj",
#P toggle 55 34 15 0; "text" : "fromsymbol",
#P hidden newex 55 52 46 196617 metro 2; "patching_rect" : [ 347.0, 423.0, 74.0, 20.0 ],
#P newex 55 72 71 196617 serial a 9600; "numoutlets" : 1,
#B color 5; "fontsize" : 12.0,
#P window linecount 3; "outlettype" : [ "" ],
#P comment 319 50 100 196617 Virtual Color Fader Most of the code by Jamie Allen; "id" : "obj-7",
#P connect 3 0 2 0; "fontname" : "Arial",
#P connect 2 0 1 0; "color" : [ 1.0, 0.890196, 0.090196, 1.0 ],
#P connect 1 0 6 0; "numinlets" : 1
#P connect 6 0 11 0; }
#P connect 11 0 12 0;
#P fasten 12 0 10 0 60 298 60 298; }
#P fasten 1 0 4 0 60 92 111 92; , {
#P fasten 4 0 13 0 111 243 111 243; "box" : {
#P connect 13 0 14 0; "maxclass" : "newobj",
#P connect 14 0 10 1; "text" : "itoa",
#P fasten 1 0 5 0 60 92 161 92; "patching_rect" : [ 347.0, 400.0, 46.0, 20.0 ],
#P fasten 5 0 15 0 161 243 161 243; "numoutlets" : 1,
#P connect 15 0 16 0; "fontsize" : 12.0,
#P fasten 16 0 10 2 161 298 162 298; "outlettype" : [ "int" ],
#P fasten 6 0 9 0 60 129 172 129; "id" : "obj-8",
#P fasten 4 0 7 0 111 129 306 129; "fontname" : "Arial",
#P fasten 5 0 8 0 161 129 443 129; "color" : [ 1.0, 0.890196, 0.090196, 1.0 ],
#P pop; "numinlets" : 3
*/ }
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "zl group",
"patching_rect" : [ 347.0, 377.0, 53.0, 20.0 ],
"numoutlets" : 2,
"fontsize" : 12.0,
"outlettype" : [ "", "" ],
"id" : "obj-9",
"fontname" : "Arial",
"numinlets" : 2
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "select 10 13",
"patching_rect" : [ 289.0, 326.0, 77.0, 20.0 ],
"numoutlets" : 3,
"fontsize" : 12.0,
"outlettype" : [ "bang", "bang", "" ],
"id" : "obj-10",
"fontname" : "Arial",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "toggle",
"patching_rect" : [ 289.0, 88.0, 15.0, 15.0 ],
"numoutlets" : 1,
"outlettype" : [ "int" ],
"id" : "obj-11",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "qmetro 10",
"patching_rect" : [ 289.0, 125.0, 65.0, 20.0 ],
"numoutlets" : 1,
"fontsize" : 12.0,
"outlettype" : [ "bang" ],
"id" : "obj-12",
"fontname" : "Arial",
"numinlets" : 2
}
}
, {
"box" : {
"maxclass" : "message",
"text" : "print",
"patching_rect" : [ 414.0, 224.0, 36.0, 18.0 ],
"numoutlets" : 1,
"fontsize" : 12.0,
"outlettype" : [ "" ],
"id" : "obj-13",
"fontname" : "Arial",
"numinlets" : 2
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "serial a 9600",
"patching_rect" : [ 289.0, 300.0, 84.0, 20.0 ],
"numoutlets" : 2,
"fontsize" : 12.0,
"outlettype" : [ "int", "" ],
"id" : "obj-14",
"fontname" : "Arial",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "comment",
"text" : "Read serial input buffer every 10 milliseconds",
"linecount" : 2,
"patching_rect" : [ 98.0, 117.0, 185.0, 34.0 ],
"numoutlets" : 0,
"fontsize" : 12.0,
"id" : "obj-15",
"fontname" : "Arial",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "comment",
"text" : "If you get newline (ASCII 10), send the list. If you get return (ASCII 13) do nothing. Any other value, add to the list",
"linecount" : 3,
"patching_rect" : [ 377.0, 314.0, 320.0, 48.0 ],
"numoutlets" : 0,
"fontsize" : 12.0,
"id" : "obj-16",
"fontname" : "Arial",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "comment",
"text" : "Click to open/close serial port and start/stop patch",
"linecount" : 2,
"patching_rect" : [ 316.0, 77.0, 199.0, 34.0 ],
"numoutlets" : 0,
"fontsize" : 12.0,
"id" : "obj-17",
"fontname" : "Arial",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "bgcolor 0 0 0",
"patching_rect" : [ 348.0, 585.0, 169.0, 19.0 ],
"numoutlets" : 0,
"fontsize" : 10.0,
"id" : "obj-6",
"fontname" : "Verdana",
"numinlets" : 4
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "unpack 0 0 0 0 0",
"patching_rect" : [ 347.0, 470.0, 119.0, 19.0 ],
"numoutlets" : 5,
"fontsize" : 10.0,
"outlettype" : [ "int", "int", "int", "int", "int" ],
"id" : "obj-20",
"fontname" : "Verdana",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "number",
"patching_rect" : [ 448.0, 535.0, 50.0, 19.0 ],
"numoutlets" : 2,
"fontsize" : 10.0,
"outlettype" : [ "int", "bang" ],
"id" : "obj-18",
"fontname" : "Verdana",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "number",
"patching_rect" : [ 398.0, 535.0, 50.0, 19.0 ],
"numoutlets" : 2,
"fontsize" : 10.0,
"outlettype" : [ "int", "bang" ],
"id" : "obj-1",
"fontname" : "Verdana",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "number",
"patching_rect" : [ 348.0, 535.0, 50.0, 19.0 ],
"numoutlets" : 2,
"fontsize" : 10.0,
"outlettype" : [ "int", "bang" ],
"id" : "obj-22",
"fontname" : "Verdana",
"numinlets" : 1
}
}
, {
"box" : {
"maxclass" : "comment",
"text" : "Here's the numbers from Arduino's analog input",
"linecount" : 3,
"patching_rect" : [ 198.0, 484.0, 138.0, 48.0 ],
"numoutlets" : 0,
"fontsize" : 12.0,
"id" : "obj-3",
"fontname" : "Arial",
"numinlets" : 1
}
}
],
"lines" : [ {
"patchline" : {
"source" : [ "obj-18", 0 ],
"destination" : [ "obj-6", 2 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-1", 0 ],
"destination" : [ "obj-6", 1 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-22", 0 ],
"destination" : [ "obj-6", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-25", 0 ],
"destination" : [ "obj-18", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-20", 4 ],
"destination" : [ "obj-25", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-20", 2 ],
"destination" : [ "obj-24", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-24", 0 ],
"destination" : [ "obj-1", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-23", 0 ],
"destination" : [ "obj-22", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-20", 0 ],
"destination" : [ "obj-23", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-8", 0 ],
"destination" : [ "obj-7", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-14", 0 ],
"destination" : [ "obj-10", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-12", 0 ],
"destination" : [ "obj-14", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-11", 0 ],
"destination" : [ "obj-12", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-13", 0 ],
"destination" : [ "obj-14", 0 ],
"hidden" : 0,
"midpoints" : [ 423.5, 245.5, 298.5, 245.5 ]
}
}
, {
"patchline" : {
"source" : [ "obj-19", 0 ],
"destination" : [ "obj-14", 0 ],
"hidden" : 0,
"midpoints" : [ 403.5, 273.5, 298.5, 273.5 ]
}
}
, {
"patchline" : {
"source" : [ "obj-21", 0 ],
"destination" : [ "obj-14", 0 ],
"hidden" : 0,
"midpoints" : [ 381.5, 296.5, 298.5, 296.5 ]
}
}
, {
"patchline" : {
"source" : [ "obj-30", 0 ],
"destination" : [ "obj-21", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-30", 1 ],
"destination" : [ "obj-19", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-11", 0 ],
"destination" : [ "obj-30", 0 ],
"hidden" : 0,
"midpoints" : [ 298.0, 116.0, 381.5, 116.0 ]
}
}
, {
"patchline" : {
"source" : [ "obj-7", 0 ],
"destination" : [ "obj-20", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-9", 0 ],
"destination" : [ "obj-8", 0 ],
"hidden" : 0,
"midpoints" : [ ]
}
}
, {
"patchline" : {
"source" : [ "obj-10", 0 ],
"destination" : [ "obj-9", 0 ],
"hidden" : 0,
"midpoints" : [ 298.5, 353.0, 356.5, 353.0 ]
}
}
, {
"patchline" : {
"source" : [ "obj-10", 2 ],
"destination" : [ "obj-9", 0 ],
"hidden" : 0,
"midpoints" : [ 356.5, 365.0, 356.5, 365.0 ]
}
}
]
}
*/