{"id":569,"date":"2012-03-16T15:35:31","date_gmt":"2012-03-16T13:35:31","guid":{"rendered":"http:\/\/tomashg.com\/?p=569"},"modified":"2012-03-18T16:05:47","modified_gmt":"2012-03-18T14:05:47","slug":"kontrolpad","status":"publish","type":"post","link":"https:\/\/tomashg.com\/?p=569","title":{"rendered":"[k]ontrolPad"},"content":{"rendered":"<p><iframe width=\"560\" height=\"315\" src=\"http:\/\/www.youtube.com\/embed\/CQH06LTKFF4?rel=0\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>Greetings once again, the last few days I gave more emphasis on working on the [k]ontrolPad and realized that my previous video did not demonstrate much the original concept I had in mind. So here is one more little demonstration video and some pictures of the development process.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPad.jpg\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPad-300x225.jpg\" alt=\"\" title=\"kontrolPad\" width=\"300\" height=\"225\" class=\"alignnone size-medium wp-image-565\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPad-300x225.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPad-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>As I noted in my previous post, there is a lot of noise in the analog readings, I&#8217;m not really sure what is causing it but I managed to reduce that by lowering the resolution of the readings, anyway the MIDI protocol does not support 10-bit numbers though some spikes occasionally do get through. I tried taking the average of the previous few readings but that definitely slowed things to an unusable level, although it did produce amazingly smooth graphs. Also another way is implementing a LP filter using capacitors which I didn&#8217;t test either.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPrototype.jpg\"><img decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPrototype-225x300.jpg\" alt=\"\" title=\"kontrolPrototype\" width=\"225\" height=\"300\" class=\"alignnone size-medium wp-image-568\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPrototype-225x300.jpg 225w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolPrototype-768x1024.jpg 768w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/a><\/p>\n<p>The communication protocol is quite similar as before, button presses send <code>b01 or b00<\/code> (where first digit denotes the button number and second the state), similarly the device recieves <code>l11 or l10<\/code> for setting LEDs and <code>r<\/code> requesting for the analog values which are then sent back as one string separated by commas <code>v64,101,0,0,15,30,50,0,127,0,0,0,13,40,45,36,<\/code>.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolRoom.jpg\"><img decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolRoom-269x300.jpg\" alt=\"\" title=\"kontrolRoom\" width=\"269\" height=\"300\" class=\"alignnone size-medium wp-image-574\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolRoom-269x300.jpg 269w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolRoom.jpg 430w\" sizes=\"(max-width: 269px) 100vw, 269px\" \/><\/a><\/p>\n<p>The driver application then listens for changes in those values and sends them down to the virtual MIDI port. Unfortunately there are some bottlenecks with the set led commands. Which are most likely due to too many analog values coming through.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/buttonsBreakout.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/buttonsBreakout-300x225.jpg\" alt=\"\" title=\"buttonsBreakout\" width=\"300\" height=\"225\" class=\"alignnone size-medium wp-image-566\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/buttonsBreakout-300x225.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/buttonsBreakout-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Also for the accelerometer and distance sensor I&#8217;ve set an option to choose which kind of MIDI command to send, the default CC passing the value or a NoteOn if the values pass a certain threshold so those can be used as a switch as well. This is demonstrated in the video above.<\/p>\n<p>And finally designed a plywood jigsaw case to hold everything together.<\/p>\n<p><a href=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolEnclosure.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolEnclosure-300x225.jpg\" alt=\"\" title=\"kontrolEnclosure\" width=\"300\" height=\"225\" class=\"alignnone size-medium wp-image-567\" srcset=\"https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolEnclosure-300x225.jpg 300w, https:\/\/tomashg.com\/wp-content\/uploads\/2012\/03\/kontrolEnclosure-1024x768.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Greetings once again, the last few days I gave more emphasis on working on the [k]ontrolPad and realized that my previous video did not demonstrate much the original concept I had in mind. So here is one more little demonstration video and some pictures of the development process. As I noted in my previous post, [&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],"tags":[95,126,80,123,124,63,130,127,94,128,125,129],"class_list":["post-569","post","type-post","status-publish","format-standard","hentry","category-arduino","category-controllers","category-music-2","tag-ableton","tag-accelerometer","tag-arduino-2","tag-controller","tag-controllerism","tag-diy","tag-fader","tag-ir-sensor","tag-midi","tag-potentiometer","tag-remix","tag-slider"],"_links":{"self":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/569","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=569"}],"version-history":[{"count":4,"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/tomashg.com\/index.php?rest_route=\/wp\/v2\/posts\/569\/revisions\/575"}],"wp:attachment":[{"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tomashg.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}