{"id":464,"date":"2017-02-12T14:34:11","date_gmt":"2017-02-12T19:34:11","guid":{"rendered":"http:\/\/seriousplaylab.com\/courses\/7001\/?page_id=464"},"modified":"2017-02-12T14:35:29","modified_gmt":"2017-02-12T19:35:29","slug":"sound","status":"publish","type":"page","link":"https:\/\/seriousplaylab.com\/courses\/7001\/resources-gizmos\/sound\/","title":{"rendered":"twine (sound)"},"content":{"rendered":"<pre>(function () {\r\n  \"use strict\";\r\n  version.extensions['soundMacros'] = {\r\n    major: 1,\r\n    minor: 1,\r\n    revision: 2\r\n  };\r\n  var p = macros['playsound'] = {\r\n    soundtracks: {},\r\n    handler: function (a, b, c, d) {\r\n      var loop = function (m) {\r\n          if (m.loop == undefined) {\r\n            m.loopfn = function () {\r\n              this.play();\r\n            };\r\n            m.addEventListener('ended', m.loopfn, 0);\r\n          } else m.loop = true;\r\n          m.play();\r\n          };\r\n      var s = eval(d.fullArgs());\r\n      if (s) {\r\n        s = s.toString();\r\n        var m = this.soundtracks[s.slice(0, s.lastIndexOf(\".\"))];\r\n        if (m) {\r\n          if (b == \"playsound\") {\r\n            m.play();\r\n          } else if (b == \"loopsound\") {\r\n            loop(m);\r\n          } else if (b == \"pausesound\") {\r\n            m.pause();\r\n          } else if (b == \"unloopsound\") {\r\n            if (m.loop != undefined) {\r\n              m.loop = false;\r\n            } else if (m.loopfn) {\r\n              m.removeEventListener('ended', m.loopfn);\r\n              delete m.loopfn;\r\n            }\r\n          } else if (b == \"stopsound\") {\r\n            m.pause();\r\n            m.currentTime = 0;\r\n          } else if (b == \"fadeoutsound\" || b == \"fadeinsound\") {\r\n            if (m.interval) clearInterval(m.interval);\r\n            if (b == \"fadeinsound\") {\r\n              if (m.currentTime&gt;0) return;\r\n              m.volume = 0;\r\n              loop(m);\r\n            } else {\r\n              if (!m.currentTime) return;\r\n              m.play();\r\n            }\r\n            var v = m.volume;\r\n            m.interval = setInterval(function () {\r\n              v = Math.min(1, Math.max(0, v + 0.005 * (b == \"fadeinsound\" ? 1 : -1)));\r\n              m.volume = Math.easeInOut(v);\r\n              if (v == 0 || v == 1) clearInterval(m.interval);\r\n              if (v == 0) {\r\n                m.pause();\r\n                m.currentTime = 0;\r\n                m.volume = 1;\r\n              }\r\n            }, 10);\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  macros['fadeinsound'] = p;\r\n  macros['fadeoutsound'] = p;\r\n  macros['unloopsound'] = p;\r\n  macros['loopsound'] = p;\r\n  macros['pausesound'] = p;\r\n  macros['stopsound'] = p;\r\n  macros['stopallsound'] = {\r\n    handler: function () {\r\n      var s = macros.playsound.soundtracks;\r\n      for (var j in s) {\r\n\t\tif (s.hasOwnProperty(j)) {\r\n          s[j].pause();\r\n          if (s[j].currentTime) {\r\n\t\t    s[j].currentTime = 0;\r\n\t\t  }\r\n\t\t}\r\n      }\r\n    }\r\n  }\r\n  var div = document.getElementById(\"storeArea\").firstChild;\r\n  var fe = [\"ogg\", \"mp3\", \"wav\", \"webm\"];\r\n  while (div) {\r\n    var b = String.fromCharCode(92);\r\n    var q = '\"';\r\n    var re = \"['\" + q + \"]([^\" + q + \"']*?)\" + b + \".(ogg|mp3|wav|webm)['\" + q + \"]\";\r\n    k(new RegExp(re, \"gi\"));\r\n    div = div.nextSibling;\r\n  }\r\n\r\n  function k(c, e) {\r\n    do {\r\n      var d = c.exec(div.innerHTML);\r\n      if (d) {\r\n        var a = new Audio();\r\n        if (a.canPlayType) {\r\n          for (var i = -1; i &lt; fe.length; i += 1) {\r\n            if (i &gt;= 0) d[2] = fe[i];\r\n            if (a.canPlayType(\"audio\/\" + d[2])) break;\r\n          }\r\n          if (i &lt; fe.length) {\r\n            a.setAttribute(\"src\", d[1] + \".\" + d[2]);\r\n            a.interval = null;\r\n            macros.playsound.soundtracks[d[1]] = a;\r\n          } else console.log(\"Browser can't play '\" + d[1] + \"'\");\r\n        }\r\n      }\r\n    } while (d);\r\n  }\r\n}());<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>(function () { &#8220;use strict&#8221;; version.extensions[&#8216;soundMacros&#8217;] = { major: 1, minor: 1, revision: 2 }; var p = macros[&#8216;playsound&#8217;] = { soundtracks: {}, handler: function (a, b, c, d) { var loop = function (m) { if (m.loop == undefined) { m.loopfn = function () { this.play(); }; m.addEventListener(&#8216;ended&#8217;, m.loopfn, 0); } else m.loop =&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":31,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/pages\/464"}],"collection":[{"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":2,"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/pages\/464\/revisions"}],"predecessor-version":[{"id":466,"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/pages\/464\/revisions\/466"}],"up":[{"embeddable":true,"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/pages\/31"}],"wp:attachment":[{"href":"https:\/\/seriousplaylab.com\/courses\/7001\/wp-json\/wp\/v2\/media?parent=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}