{"id":116,"date":"2013-11-12T21:16:55","date_gmt":"2013-11-12T21:16:55","guid":{"rendered":"http:\/\/www.casperschipper.nl\/v2\/?p=116"},"modified":"2017-09-13T05:15:19","modified_gmt":"2017-09-13T05:15:19","slug":"web-audio-api-where-to-start","status":"publish","type":"post","link":"https:\/\/www.casperschipper.nl\/v2\/uncategorized\/web-audio-api-where-to-start\/","title":{"rendered":"Web Audio API: where to start ?"},"content":{"rendered":"<p>Here&#8217;s a list of links that helped me grasp the Web Audio API. Have fun!<\/p>\n<p><strong>start here:<br \/>\n<\/strong>simple tutorial about playing sounds, using filters, changing parameters, loading samples into buffers: <a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/webaudio\/intro\/\">http:\/\/www.html5rocks.com\/en\/tutorials\/webaudio\/intro\/<\/a><\/p>\n<p><strong>timing:<\/strong><br \/>\ndealing with the bad clock of javascript (and making full use of the accurate API one): <a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/audio\/scheduling\/\">http:\/\/www.html5rocks.com\/en\/tutorials\/audio\/scheduling\/<\/a><\/p>\n<p><strong>details:<\/strong><br \/>\nthe web audio api specification should be your main reference document: <a href=\"http:\/\/www.w3.org\/TR\/webaudio\/\">http:\/\/www.w3.org\/TR\/webaudio\/<\/a><br \/>\nnote that some of the names are different for Safari and Chrome.<br \/>\nthere is a fix called\u00a0<a href=\"https:\/\/github.com\/cwilso\/webkitAudioContext-MonkeyPatch\">monkey patch<\/a> for dealing with these differences.<\/p>\n<p><strong>writing your own scriptProcessorNode (web audio uGen):<\/strong><br \/>\nwhen using these self written nodes in a graph of other nodes you may find out that they have some limitations compared to normal nodes (in terms of garbage collection). Here an explanation of working around these: <a href=\"http:\/\/sriku.org\/blog\/2013\/01\/30\/taming-the-scriptprocessornode\/#vanishing-script-node\">http:\/\/sriku.org\/blog\/2013\/01\/30\/taming-the-scriptprocessornode\/#vanishing-script-node<\/a><\/p>\n<p><strong>GUI:<\/strong><br \/>\n<a href=\"http:\/\/workshop.chromeexperiments.com\/examples\/gui\/#1--Basic-Usage\">dat.GUI<\/a> can be a nice start to make a quick GUI, don&#8217;t forget that making your own is not that hard with HTML5 and jQuery.<\/p>\n<p><strong>Chris<\/strong><br \/>\n<a href=\"http:\/\/www.youtube.com\/watch?v=k77MHvQbF-g\">video<\/a> of Chris Rogers, showing off some the api using some nice demo&#8217;s and talking about the history.<\/p>\n<p><strong>JavaScript<\/strong>:<br \/>\nRead the small book by Crockford, <a href=\"http:\/\/it-ebooks.info\/book\/274\/\">\u201cJavaScript: the good parts\u201d<\/a>. This is not strictly a JavaScript tutorial, it is more like a very precise description of how to code properly in the language. Other tutorials might be easier, but this will bring a deeper understanding of how to make coding pleasant.<\/p>\n<p>Finally (this may be very obvious) but don\u2019t forget that you can test JavaScript snippets &amp;\u00a0commands in the error console of Safari [alt+apple+c] &amp; [alt+apple+j] in Chrome.<\/p>\n<p><strong>my own stuff:<\/strong><br \/>\n<a href=\"http:\/\/www.maze.nu\/mazetrail\/\">maze ensemble web app<\/a><br \/>\n<a href=\"http:\/\/www.monotonestudio.nl\/monotree\/\">maze ensemble web app (earlier version)<\/a><br \/>\n<a href=\"http:\/\/www.casperschipper.nl\/WebAudioTests\/FeedbackDelay\/\">feedback delay test<\/a><\/p>\n<p>Keep an eye on this website for future experiments !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a list of links that helped me grasp the Web Audio API. Have fun! start here: simple tutorial about playing sounds, using filters, changing parameters, loading samples into buffers: http:\/\/www.html5rocks.com\/en\/tutorials\/webaudio\/intro\/ timing: dealing with the bad clock of javascript (and &hellip; <a href=\"https:\/\/www.casperschipper.nl\/v2\/uncategorized\/web-audio-api-where-to-start\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-116","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/posts\/116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/comments?post=116"}],"version-history":[{"count":25,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/posts\/116\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/posts\/116\/revisions\/143"}],"wp:attachment":[{"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/media?parent=116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/categories?post=116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.casperschipper.nl\/v2\/wp-json\/wp\/v2\/tags?post=116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}