{"id":4,"date":"2016-02-15T22:50:59","date_gmt":"2016-02-15T22:50:59","guid":{"rendered":"http:\/\/www.duncanmetcalfe.net\/blog\/?p=4"},"modified":"2022-09-12T09:28:13","modified_gmt":"2022-09-12T09:28:13","slug":"fun-with-web-midi-part-1","status":"publish","type":"post","link":"http:\/\/www.duncanmetcalfe.net\/blog\/2016\/02\/15\/fun-with-web-midi-part-1\/","title":{"rendered":"Fun with Web MIDI Part 1"},"content":{"rendered":"<p>While what I do these days for a living is as far from my &#8216;roots&#8217; of web development as is possible to be, I still like to dip my toe in it&#8217;s waters occasionally, simply because regardless of the bad rep it used to get in the old days, JavaScript is a fantastic language for getting shit done quickly with insta- results.<\/p>\n<p>Also, Google, who are borderline obsessed with their &#8216;Chromebook&#8217; project are trying to port as many functions as would be available to Real Programmers as possible, with the aim of most native features of a desktop to a browser, so that even a simple guy such as myself can play around with features that would have traditionally been out of reach.<\/p>\n<p>However, one of the W3C&#8217;s latest additions &#8211; Web MIDI &#8211; is of particular interest to me. As an incredibly amateur musician, I&#8217;ve always found playing with a handful of VSTs and Ableton Live is a enjoyable way to pass the time, even though completing actual tracks is becoming a challenge, thanks to the time poor nature of having young children.<\/p>\n<p>Nevertheless, my mid-life crisis has spurred me on to buy the occasional piece of hardware, and to date, I have a few Korg Volcas, a Novation Circuit and, more recently, a Korg Minilogue to cock about within the evening.<\/p>\n<p>The discovery of the Web MIDI API, then, made me imagine a way of controling these via my browser in some way. In particular, the Circuit which, while it looks like a relatively simple groovebox, is in fact two instances of a pretty powerful virtual analogue synth\u00a0presumably based on the &#8216;Nova&#8217; range of synths, including the Ultra and MiniNovas.<\/p>\n<p>Novation did enlist the help of Isotonik Studios to put together an <a href=\"http:\/\/isotonikstudios.com\/novation-x-isotonik\/novation-circuit-editor\/\" target=\"_blank\" rel=\"noopener\">editor<\/a>,\u00a0but by it&#8217;s very nature of being an incredibly deep synth, is still pretty dense. So I tried to write my version with big controls for my fat fingers.<\/p>\n<p>I also figured that there would be no harm in writing some code that basically randomised every parameter available to see if I could make &#8216;happy accidents&#8217; simply by touching a button.<\/p>\n<p>Part two will go through how this was achieved, what tools to use, and\u00a0whether it actually\u00a0made any patches that sounded half decent.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While what I do these days for a living is as far from my &#8216;roots&#8217; of web development as is possible to be, I still like to dip my toe in it&#8217;s waters occasionally, simply because regardless of the bad rep it used to get in the old days, JavaScript is a fantastic language for &hellip; <a href=\"http:\/\/www.duncanmetcalfe.net\/blog\/2016\/02\/15\/fun-with-web-midi-part-1\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Fun with Web MIDI Part 1<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-4","post","type-post","status-publish","format-standard","hentry","category-music"],"_links":{"self":[{"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/posts\/4","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/comments?post=4"}],"version-history":[{"count":2,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/posts\/4\/revisions"}],"predecessor-version":[{"id":141,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/posts\/4\/revisions\/141"}],"wp:attachment":[{"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/media?parent=4"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/categories?post=4"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.duncanmetcalfe.net\/blog\/wp-json\/wp\/v2\/tags?post=4"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}