{"id":534,"date":"2012-02-15T21:41:14","date_gmt":"2012-02-15T19:41:14","guid":{"rendered":"http:\/\/tomashg.com\/?p=534"},"modified":"2012-04-25T15:57:00","modified_gmt":"2012-04-25T13:57:00","slug":"buttonpad-updates-growing-family","status":"publish","type":"post","link":"https:\/\/tomashg.com\/?p=534","title":{"rendered":"[b]uttonPad updates (Growing Family)"},"content":{"rendered":"<p><iframe width=\"560\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/EeUTimc8Fbo\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01246s.jpg\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01246s-300x197.jpg\" alt=\"\" title=\"DSC01246s\" width=\"300\" height=\"197\" class=\"alignnone size-medium wp-image-551\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01246s-300x197.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01246s-1024x675.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>I have a lot of updates on the project since last time, tons of changes made mostly on driver application. I discovered that one of the main sources of latency was the serial port class of Processing, so I decided to re-implement the driver in C#, since <a href=\"http:\/\/cycling74.com\/\">Max\/MSP<\/a> and Ableton Live are not running under Linux anyway. <\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/buttonControl.jpg\"><img decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/buttonControl-274x300.jpg\" alt=\"\" title=\"buttonControl\" width=\"274\" height=\"300\" class=\"alignnone size-medium wp-image-559\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/buttonControl-274x300.jpg 274w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/buttonControl.jpg 313w\" sizes=\"(max-width: 274px) 100vw, 274px\" \/><\/a><\/p>\n<p>Also this gave me the opportunity to implement monome applications compatibility and it works pretty much flawlessly with any Max patch I threw at it, tough I did not implement <a href=\"http:\/\/docs.monome.org\/doku.php?id=tech:autoconfig\">AutoConfig<\/a> protocol so its limited to the monomeOSC version of applications that run with OSC extensions. Also further more, worked on reducing latency and read\/write buffer bottlenecks with pleasing results, now I can finally enjoy mashing on <a href=\"http:\/\/parallelogram.cc\/mlrv\/\">mlrV<\/a> \ud83d\ude09<\/p>\n<p>Also made some silly Processing sketches, like displaying 8&#215;8 3bit image files on the pad.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01149s.jpg\"><img decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01149s-300x162.jpg\" alt=\"\" title=\"DSC01149s\" width=\"300\" height=\"162\" class=\"alignnone size-medium wp-image-550\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01149s-300x162.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01149s-1024x553.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Plus designed more plywood face plates for the pad and other devices.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01217s.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01217s-300x223.jpg\" alt=\"\" title=\"DSC01217s\" width=\"300\" height=\"223\" class=\"alignnone size-medium wp-image-553\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01217s-300x223.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01217s-1024x763.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>This gives me the opportunity to introduce my new device [k]ontrolPad. This controller consists of 4 faders, 8 knobs, 8 buttons with LEDs, XYZ accelerometer and an infrared proximity sensor. But for now unfortunately only the buttons and LEDs seem to work properly. The rest of the analog values are quite unstable and must be normalized, also I have to figure out a way to send their values synchronously and only when it changes, instead of just sending a bunch of redundant data over the serial port, which by the way dead-locked my serial port in Linux..<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01225s.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01225s-300x215.jpg\" alt=\"\" title=\"DSC01225s\" width=\"300\" height=\"215\" class=\"alignnone size-medium wp-image-552\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01225s-300x215.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/02\/DSC01225s-1024x734.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>And finally, since a lot of people asked me for, I have released the firmware and drivers, also some processing sketches. You can find everything on my <a href=\"http:\/\/bazaar.launchpad.net\/~ghz-tomash\/buttonpad\/windows_driver\/files\">Bazaar repository<\/a>, just browse the code and you will find a zip\/rar file to download. Or use the following direct links:<br \/>\n<a href=\"http:\/\/bazaar.launchpad.net\/~ghz-tomash\/buttonpad\/windows_driver\/view\/head:\/Button_Control_v3.rar\">Driver<\/a><br \/>\n<a href=\"http:\/\/bazaar.launchpad.net\/~ghz-tomash\/buttonpad\/windows_driver\/view\/head:\/firmware\/ButtonPadControllerUSB_v20.zip\">Firmware<\/a><br \/>\n<a href=\"http:\/\/bazaar.launchpad.net\/~ghz-tomash\/buttonpad\/p5_sketches\/files\">Testing<\/a><\/p>\n<p>And a bit older video just to demo it working with Live in MIDI mode.<br \/>\n<iframe width=\"560\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/u3qsGRyoMYo\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have a lot of updates on the project since last time, tons of changes made mostly on driver application. I discovered that one of the main sources of latency was the serial port class of Processing, so I decided to re-implement the driver in C#, since Max\/MSP and Ableton Live are not running under [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79,112,113,32,1],"tags":[95,102,40,120,119,110,115,116,94,111,114,93,117,109,118,121,122,131],"class_list":["post-534","post","type-post","status-publish","format-standard","hentry","category-arduino","category-controllers","category-music-2","category-technology","category-uncategorized","tag-ableton","tag-button-pad","tag-c","tag-code","tag-drivers","tag-firmware","tag-max","tag-maxmsp","tag-midi","tag-mlr","tag-mlrv","tag-monome","tag-monomeosc","tag-osc","tag-serial-port","tag-source-code","tag-spark-fun","tag-traktor"],"_links":{"self":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=534"}],"version-history":[{"count":22,"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions"}],"predecessor-version":[{"id":596,"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions\/596"}],"wp:attachment":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}