{"id":206,"date":"2011-12-08T18:23:37","date_gmt":"2011-12-08T18:23:37","guid":{"rendered":"http:\/\/www.phanv.com\/blog\/?p=206"},"modified":"2012-03-11T02:04:28","modified_gmt":"2012-03-11T02:04:28","slug":"final-project-max-sending-serial-to-arduino-%e2%80%93-multi-out","status":"publish","type":"post","link":"https:\/\/www.phanv.com\/blog\/final-project-max-sending-serial-to-arduino-%e2%80%93-multi-out\/","title":{"rendered":"Final Project: Max sending serial to Arduino \u2013 Multi Out from Ableton Live"},"content":{"rendered":"<p><div class=\"videoContainer\"><iframe loading=\"lazy\" src=\"http:\/\/player.vimeo.com\/video\/33136789\" width=\"500\" height=\"331\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen><\/iframe><\/div><\/p>\n<p>Input audio is coming from Ableton Live through Sound Flower 16 to Max then Serial Send to Arduino.<\/p>\n<p>Max Patch:<\/p>\n<pre><code>\r\n----------begin_max5_patcher----------\r\n2936.3oc6cssiiiaD8Y2eEB94NNjEum21jEIAIOFfffrXQC01Z7ncbKYXqtm\r\nM6hc+1ijH8EYaYSYRSqVSOMFeQxh5TmpXwpHKI8qOLZ7y4+bx5wQ+oneHZzn\r\ne8gQip2T0FFY99nwuD+ySWDut9mM9kj0qimmL9Q89JR94h5smuLIayFyesXQ\r\nRQw+aYhtkGON5GM65S4YEqS+k5cfQSPlMuLtX5mSyl+zpjoE5ChSjk6NhiIU\r\nuQpeEymf11TYu9RZV44oFWfYioyzn44e5OPIi26jlE+R8Ic72sJMdw3csgFr\r\n0MBtZi+1COT8xiNxGSWjuNwqDBSnzDBqlPnclPHhPPHYIes7jcDerL9KQo69\r\nyulJrZxfIqeSxmvJYFYaLC+XlASCAy77qEE4s2I443r46j9SHlTh1..D0pdS\r\nWhp2NsfhOgIf7lqniKxaW6tHccw0ngU06NhQ4UuoescML4DBN8NZ6eSnDIl6\r\nHkPFZTh.ntQIfZnQIb.6HkvGZTBCXNRIrgFkPINZkfY2yXsjjHAJx7mWirPh\r\nX5gbqG4EXrNGzEFeOYl+sWYCEU2yAWasPf53r5BYH42Sx3u3WxPyBLcjIWCY\r\nHtmjw+wu8SnRGsLn2Sx3+5WxvDY10SF2Uuo+SuRFBpxQx.tmjw+vujAV3HYb\r\nWmSi+tmyZG6HYftmjweyujAfbjLtqwY7W86LcYlOmqlLDx6IY789kL.WIC08\r\njL9WdkLnbvMx.C2USiuyurAnbkMtmY2uNYQD97SG5iNknBkJlvHJkPtkcjco\r\niSmIGvujC51PN5UTwUxQbmImaikiIQFWIG5fzxwjXiqjCaPZ4XRzwUxAFjVN\r\nBrW5VQFjVNlDgbkbPCRKGShQtRN3AokiIQIGIGtbPZ4XRbxUxQMHsbLIR4J4\r\nLLiP1jWkqjSPhyoHe97EsWnQoYEmslRTf1N.U+l1Wa0qVWQILQ.Jcn0EQnIb\r\nhkkNSGREpR54bDsTAy0SZOb9097TLPPlQAG0yRc0B4fdlEL8r2Uy0BeC07kV\r\nh6SQ.72ApYAg6nZlDJ0L06p4Zg2Y0L8cfZlqqWCGTy3Pol8uS6Zg2Y0L7NPM\r\nyzk.80qloxPolwdWMWK7NqlQuCTyUwY5lZFBvb0WQYQwQJNBcVI8ZyyWVK8b\r\npZhDvHZUz1fryJb58bVPtY8EpsPbsu.8dVbquNa45jrYk5zRIo7ObjfhZnqr\r\niIvk4sJQJDfKsUPzc1J3taqP5Lgf7nsxpjkUDxerXU7zu7Dh60UFDjjIBkRI\r\nKSckgTaSiUg6NKA2yqZjCXIleYIhnzXp7ejlI6eMrDtGwRTuxRXEZKK4psDp\r\nGwRD+xRThurkBSIJXIKA9snYE9xTBD8HRB62J9A4KKIdPJWvOsHurQZkBJ2c\r\nbcXgWazOfjsW7wLT2sUBxxweyoAc1falnxqfFHCAZ.qvNZMfFDz.k5l0.VMD\r\nnAkzMiArbHvB5BHvAag6YwbsL56+ysO94im3+WOCoyRDXP2uDw6ryS99nIYk\r\ngXLLSYyjtH4sjUqSyy1SqLZb7xk6s4Q6cHUz4OkW2PrG2tozL8lva2zpj2R2\r\nb7J8FKUROrYmanDBqdZm.dsiDg9hmmUshXaHkRE57E4S+RRMMf1rwYIepasR\r\n08FhcGQs4YiWZ9KSyJCuZcRVQbgQH1+LG+5hhmNsdu49+T7zjVO3Sp+FMd9p\r\nzY4Y02JK1+Hq17lSWomW8EAHaebW+KxhWdhCtHOewywqpTIOuHogptr6RbV5\r\nKwEIEoZ7.nsGW5KKWUOyg60VIYwkswmWOcU9hEMZJ8dd6D6YVo0vzjulNq3y\r\n0s0N1pw89i8sy1uibisetNzGLegSi2NinWHx3yzSt8R6PouPLYm9F9Pq8nOJ\r\n.Y53C.wosLZIP4QabBZ5ick7ntYGakLC5R9QeMLCryIy3VjYV6R0979z7WdI\r\nQa.NdrGk1Z.dVSi0oyyJ49FR1I8oqiDDaKgfZgP3mQMG.B4bciRm+xqYy98y\r\nRWaCeX6GbpuklUwHycbiCClvd6Lw012hDHx8l5ihpsK8fOJz6FeTzM8Ec1GE\r\ndf3ihBD+3iB9vG0QrpG7QQ9l1GEwTtaN6ihwe23ixHyt6ihIFH9nH56kbN6i\r\nZagP9gOpcrp69nXpuo8QAbhm7QAua7QYjYO3ihLP7QAlqnWm8QQ+vG0QrpG7\r\nQw9l1GEVv7iOJp7ciOJiL6tOJpZf3iBqmJb28Qg9vG0QrpG7Qg+l1GkT3GWT\r\nf3ciKJsH6tGJXnLaTbkebP8g+oC4T2cOg8p6ocKM4hzr1VkuZooZ+mlzWm+5\r\npoaHsMKTRTSIaVx5hzrsqT6Orap+O3G94zYyZtxn5Uud1x7zrBC.i9QqLS5L\r\ntqfC1FbS6W3lZKey5W3FYKtw8KbSr0NA0uvMXKeS5U3tZBCsB2USAVeB2JKs\r\nSX79Ets0+Mqe4+lYq8MqmYeyr0NA5W311wcX8qwcX1NtCqeMtSMbrwNgJ6U3\r\nlZq+aZ+x+MHrD2P+xNAaqcBzy7eaIci8Ica13lJec7532Rl8T4ooLysmhKJV\r\nk97qE5LiZTVtmpzQuU0a5Y10kJ004KxeNdgo1h21FieXGKzwpyN4WlEOcShy\r\nieKdWiF+ZQ9mSVr7oxev31KwZBAOQ.BPwdLBn5qlawlWs9tlDr8BNaQ9z38K\r\nkUObs311sk20E4K86i..8jBHtx6Kuvc8l485h3UE98FUrazANP2n2KRVssCv\r\nz7EyJ+ut152Vz5blTBTSkqi2SDZYRl1t+hjkoMaOdUqT1aghgSzdeMd0KM94\r\nRFRIeb+ObvQ777F+dJhnf5V93Os+gcxa4h5ILUWaP5WwztbmFXCIV5hNY0al\r\ndwaJs8OTUdTUgbTUw9PUEHUk4oS40qpfOTUgRUYVgjqVUQ9PUEJUkoRotZUk\r\n7CUUnTUfi8pT2ZUUaOxEmM82KS6FhHQzHVDORDIaM7XyJw9nW9zUGpM27LhV\r\nd9qy0Sco.20Psk6Qz0mklq3nl2ObFCLr+wyvQ0D3x1B1Vl8tFS6zwSQvomdf\r\nirErESGb5rYFyu4XplmnWBS7vxSba3IVXwD0FLQButibILQCKOA1vS3vySvk\r\nvDDdLguDlPgU2grP2QkgmmtHlTAESGb5ZASA1dxhg6NXLwP.IpMPhFTHQrAR\r\njfBIvFHAAERXafDNXPRZSHAjvNTmTzCwjMgoPBaXJRVODS1DlBD1gUjjdHlr\r\nIj.HroGHw8OLIrI0NHrorHT8OLU+TS8hfBGZPw6efRXCljA1J2lQ7jgcBLD1\r\nLhmLriBKrYDOYfsmrYDOYXSZQXyHdxvFYfvlQ7jgMwbgMi3IC6jpvswQtHrS\r\nV.2lQ7DgMBJtUis.AlnXVApvN5B0FOTbVODSAlmromGW0CwTfWtEa7ZJv8PL\r\nE3o80ln5D7dHlBajlLabZJn8PLE3kJyln5DPODSgMRShMisP5nebPQl.add8\r\nvYS3RDiVUREBXBw73NZ21cUBv2BIfJJQp4Q6wMWBP2BI.gBmDX0DpzUI.yHA\r\nTBD2BI.EPqHN4FHA7.ZDYU0x.z9Wko.8vJt.P8upa.q5eU2.NroC.VszXgMr\r\nDvJGGgMEEvpgDCrMtUKkQfqLEaF1hGX+SVsLThfWYJhKAIHnUSPEj31.odVc\r\nNgCulCYScfDPmSVgotAIUcsMqqvY11OG.tqiiIqwFVA5GTU3IhS7U8iuJPro\r\nz3CPo.Q5Zj4rILAlB7cnG2PzLeSKJTeJJWJLIYWSSBlvofjQ1AdBeBvN9qZg\r\nwbK9xOByEiCsiBiRMoRsHT6PeYZfri9lVTTHOJJWr.z65THvmHjLQUNRa.u.\r\n0Pur4q5qtbrOElKkGEs6ynirpCiXG5M2BFa9MsnP7lnf7uqVWgjUKaUXSSEr\r\nFSgK9F6pmEZPKpTPYKlBWs2RH1hovUhxDpsXJfUxsMXhF3TBshmvAseGQz+3\r\nIJ4Vioxu7aO7+AXCB0E.\r\n-----------end_max5_patcher-----------\r\n<\/code><\/pre>\n<p>Arduino:<\/p>\n<p>const int buzz1 = 3;<br \/>\nconst int buzz2 = 5;<br \/>\nconst int buzz3 = 6;<br \/>\nconst int buzz4 = 9;<br \/>\nconst int buzz5 = 10;<br \/>\nconst int buzz6 = 11;\/\/ the pin that the LED is attached to<br \/>\nint incomingByte;      \/\/ a variable to read incoming serial data into<\/p>\n<p>void setup() {<br \/>\n  \/\/ initialize serial communication:<br \/>\n  Serial.begin(9600);<br \/>\n  \/\/ initialize the LED pin as an output:<br \/>\n  pinMode(buzz1, OUTPUT);<br \/>\n  pinMode(buzz2, OUTPUT);<br \/>\n  pinMode(buzz3, OUTPUT);<br \/>\n  pinMode(buzz4, OUTPUT);<br \/>\n  pinMode(buzz5, OUTPUT);<br \/>\n  pinMode(buzz6, OUTPUT);<br \/>\n}<\/p>\n<p>void loop() {<br \/>\n  \/\/ see if there&#8217;s incoming serial data:<br \/>\n  if (Serial.available() > 0) {<br \/>\n    \/\/ read the oldest byte in the serial buffer:<br \/>\n    incomingByte = Serial.read();<br \/>\n    \/\/ if it&#8217;s a capital H (ASCII 72), turn on the LED:<br \/>\n    if (incomingByte == &#8216;S&#8217;) {<br \/>\n      analogWrite(buzz1, 70);<\/p>\n<p>\/\/      analogWrite(buzz, 90);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;A&#8217;) {<br \/>\n      analogWrite(buzz1, LOW);<br \/>\n    }<br \/>\n    if (incomingByte == &#8216;F&#8217;) {<br \/>\n      analogWrite(buzz2, HIGH);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;D&#8217;) {<br \/>\n      analogWrite(buzz2, LOW);<br \/>\n    }<br \/>\n    if (incomingByte == &#8216;H&#8217;) {<br \/>\n      digitalWrite(buzz3, HIGH);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;G&#8217;) {<br \/>\n      digitalWrite(buzz3, LOW);<br \/>\n    }<br \/>\n    if (incomingByte == &#8216;K&#8217;) {<br \/>\n      analogWrite(buzz4, 200);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;J&#8217;) {<br \/>\n      analogWrite(buzz4, LOW);<br \/>\n    }<br \/>\n    if (incomingByte == &#8216;X&#8217;) {<br \/>\n      digitalWrite(buzz5, 100);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;Z&#8217;) {<br \/>\n      analogWrite(buzz5, 200);<br \/>\n    }<br \/>\n    if (incomingByte == &#8216;V&#8217;) {<br \/>\n      digitalWrite(buzz6, HIGH);<br \/>\n    }<br \/>\n    \/\/ if it&#8217;s an L (ASCII 76) turn off the LED:<br \/>\n    if (incomingByte == &#8216;C&#8217;) {<br \/>\n      digitalWrite(buzz6, LOW);<br \/>\n    }<br \/>\n  }<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Input audio is coming from Ableton Live through Sound Flower 16 to Max then Serial Send to Arduino. Max Patch: &#8212;&#8212;&#8212;-begin_max5_patcher&#8212;&#8212;&#8212;- 2936.3oc6cssiiiaD8Y2eEB94NNjEum21jEIAIOFfffrXQC01Z7ncbKYXqtm M6hc+1ijH8EYaYSYRSqVSOMFeQxh5TmpXwpHKI8qOLZ7y4+bx5wQ+oneHZzn e8gQip2T0FFY99nwuD+ySWDut9mM9kj0qimmL9Q89JR94h5smuLIayFyesXQ RQw+aYhtkGON5GM65S4YEqS+k5cfQSPlMuLtX5mSyl+zpjoE5ChSjk6NhiIU uQpeEymf11TYu9RZV44oFWfYioyzn44e5OPIi26jlE+R8Ic72sJMdw3csgFr 0MBtZi+1COT8xiNxGSWjuNwqDBSnzDBqlPnclPHhPPHYIes7jcDerL9KQo69 yulJrZxfIqeSxmvJYFYaLC+XlASCAy77qEE4s2I443r46j9SHlTh1..D0pdS Whp2NsfhOgIf7lqniKxaW6tHccw0ngU06NhQ4UuoescML4DBN8NZ6eSnDIl6 HkPFZTh.ntQIfZnQIb.6HkvGZTBCXNRIrgFkPINZkfY2yXsjjHAJx7mWirPh X5gbqG4EXrNGzEFeOYl+sWYCEU2yAWasPf53r5BYH42Sx3u3WxPyBLcjIWCY Htmjw+wu8SnRGsLn2Sx3+5WxvDY10SF2Uuo+SuRFBpxQx.tmjw+vujAV3HYb WmSi+tmyZG6HYftmjweyujAfbjLtqwY7W86LcYlOmqlLDx6IY789kL.WIC08 jL9WdkLnbvMx.C2USiuyurAnbkMtmY2uNYQD97SG5iNknBkJlvHJkPtkcjco iSmIGvujC51PN5UTwUxQbmImaikiIQFWIG5fzxwjXiqjCaPZ4XRzwUxAFjVN BrW5VQFjVNlDgbkbPCRKGShQtRN3AokiIQIGIGtbPZ4XRbxUxQMHsbLIR4J4 LLiP1jWkqjSPhyoHe97EsWnQoYEmslRTf1N.U+l1Wa0qVWQILQ.Jcn0EQnIb hkkNSGREpR54bDsTAy0SZOb9097TLPPlQAG0yRc0B4fdlEL8r2Uy0BeC07kV h6SQ.72ApYAg6nZlDJ0L06p4Zg2Y0L8cfZlqqWCGTy3Pol8uS6Zg2Y0L7NPM yzk.80qloxPolwdWMWK7NqlQuCTyUwY5lZFBvb0WQYQwQJNBcVI8ZyyWVK8b pZhDvHZUz1fryJb58bVPtY8EpsPbsu.8dVbquNa45jrYk5zRIo7ObjfhZnqr iIvk4sJQJDfKsUPzc1J3taqP5Lgf7nsxpjkUDxerXU7zu7Dh60UFDjjIBkRI KSckgTaSiUg6NKA2yqZjCXIleYIhnzXp7ejlI6eMrDtGwRTuxRXEZKK4psDp GwRD+xRThurkBSIJXIKA9snYE9xTBD8HRB62J9A4KKIdPJWvOsHurQZkBJ2c bcXgWazOfjsW7wLT2sUBxxweyoAc1falnxqfFHCAZ.qvNZMfFDz.k5l0.VMD nAkzMiArbHvB5BHvAag6YwbsL56+ysO94im3+WOCoyRDXP2uDw6ryS99nIYk gXLLSYyjtH4sjUqSyy1SqLZb7xk6s4Q6cHUz4OkW2PrG2tozL8lva2zpj2R2 b7J8FKUROrYmanDBqdZm.dsiDg9hmmUshXaHkRE57E4S+RRMMf1rwYIepasR 08FhcGQs4YiWZ9KSyJCuZcRVQbgQH1+LG+5hhmNsdu49+T7zjVO3Sp+FMd9p zY4Y02JK1+Hq17lSWomW8EAHaebW+KxhWdhCtHOewywqpTIOuHogptr6RbV5 KwEIEoZ7.nsGW5KKWUOyg60VIYwkswmWOcU9hEMZJ8dd6D6YVo0vzjulNq3y 0s0N1pw89i8sy1uibisetNzGLegSi2NinWHx3yzSt8R6PouPLYm9F9Pq8nOJ .Y53C.wosLZIP4QabBZ5ick7ntYGakLC5R9QeMLCryIy3VjYV6R0979z7WdI Qa.NdrGk1Z.dVSi0oyyJ49FR1I8oqiDDaKgfZgP3mQMG.B4bciRm+xqYy98y RWaCeX6GbpuklUwHycbiCClvd6Lw012hDHx8l5ihpsK8fOJz6FeTzM8Ec1GE [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-206","post","type-post","status-publish","format-standard","hentry","category-physical-computing"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/posts\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":6,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/posts\/206\/revisions"}],"predecessor-version":[{"id":227,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/posts\/206\/revisions\/227"}],"wp:attachment":[{"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/media?parent=206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/categories?post=206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phanv.com\/blog\/wp-json\/wp\/v2\/tags?post=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}