Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

161 linhas
8.6 KiB

  1. /*! howler.js v2.0.9 | Spatial Plugin | (c) 2013-2018, James Simpson of GoldFire Studios | MIT License | howlerjs.com */ ! function () {
  2. "use strict";
  3. HowlerGlobal.prototype._pos = [0, 0, 0], HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0], HowlerGlobal.prototype.stereo = function (n) {
  4. var e = this;
  5. if (!e.ctx || !e.ctx.listener) return e;
  6. for (var t = e._howls.length - 1; t >= 0; t--) e._howls[t].stereo(n);
  7. return e
  8. }, HowlerGlobal.prototype.pos = function (n, e, t) {
  9. var o = this;
  10. return o.ctx && o.ctx.listener ? (e = "number" != typeof e ? o._pos[1] : e, t = "number" != typeof t ? o._pos[2] : t, "number" != typeof n ? o._pos : (o._pos = [n, e, t], o.ctx.listener.setPosition(o._pos[0], o._pos[1], o._pos[2]), o)) : o
  11. }, HowlerGlobal.prototype.orientation = function (n, e, t, o, r, a) {
  12. var i = this;
  13. if (!i.ctx || !i.ctx.listener) return i;
  14. var p = i._orientation;
  15. return e = "number" != typeof e ? p[1] : e, t = "number" != typeof t ? p[2] : t, o = "number" != typeof o ? p[3] : o, r = "number" != typeof r ? p[4] : r, a = "number" != typeof a ? p[5] : a, "number" != typeof n ? p : (i._orientation = [n, e, t, o, r, a], i.ctx.listener.setOrientation(n, e, t, o, r, a), i)
  16. }, Howl.prototype.init = function (n) {
  17. return function (e) {
  18. var t = this;
  19. return t._orientation = e.orientation || [1, 0, 0], t._stereo = e.stereo || null, t._pos = e.pos || null, t._pannerAttr = {
  20. coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : 360,
  21. coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : 360,
  22. coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : 0,
  23. distanceModel: void 0 !== e.distanceModel ? e.distanceModel : "inverse",
  24. maxDistance: void 0 !== e.maxDistance ? e.maxDistance : 1e4,
  25. panningModel: void 0 !== e.panningModel ? e.panningModel : "HRTF",
  26. refDistance: void 0 !== e.refDistance ? e.refDistance : 1,
  27. rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : 1
  28. }, t._onstereo = e.onstereo ? [{
  29. fn: e.onstereo
  30. }] : [], t._onpos = e.onpos ? [{
  31. fn: e.onpos
  32. }] : [], t._onorientation = e.onorientation ? [{
  33. fn: e.onorientation
  34. }] : [], n.call(this, e)
  35. }
  36. }(Howl.prototype.init), Howl.prototype.stereo = function (e, t) {
  37. var o = this;
  38. if (!o._webAudio) return o;
  39. if ("loaded" !== o._state) return o._queue.push({
  40. event: "stereo",
  41. action: function () {
  42. o.stereo(e, t)
  43. }
  44. }), o;
  45. var r = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
  46. if (void 0 === t) {
  47. if ("number" != typeof e) return o._stereo;
  48. o._stereo = e, o._pos = [e, 0, 0]
  49. }
  50. for (var a = o._getSoundIds(t), i = 0; i < a.length; i++) {
  51. var p = o._soundById(a[i]);
  52. if (p) {
  53. if ("number" != typeof e) return p._stereo;
  54. p._stereo = e, p._pos = [e, 0, 0], p._node && (p._pannerAttr.panningModel = "equalpower", p._panner && p._panner.pan || n(p, r), "spatial" === r ? p._panner.setPosition(e, 0, 0) : p._panner.pan.setValueAtTime(e, Howler.ctx.currentTime)), o._emit("stereo", p._id)
  55. }
  56. }
  57. return o
  58. }, Howl.prototype.pos = function (e, t, o, r) {
  59. var a = this;
  60. if (!a._webAudio) return a;
  61. if ("loaded" !== a._state) return a._queue.push({
  62. event: "pos",
  63. action: function () {
  64. a.pos(e, t, o, r)
  65. }
  66. }), a;
  67. if (t = "number" != typeof t ? 0 : t, o = "number" != typeof o ? -.5 : o, void 0 === r) {
  68. if ("number" != typeof e) return a._pos;
  69. a._pos = [e, t, o]
  70. }
  71. for (var i = a._getSoundIds(r), p = 0; p < i.length; p++) {
  72. var s = a._soundById(i[p]);
  73. if (s) {
  74. if ("number" != typeof e) return s._pos;
  75. s._pos = [e, t, o], s._node && (s._panner && !s._panner.pan || n(s, "spatial"), s._panner.setPosition(e, t, o)), a._emit("pos", s._id)
  76. }
  77. }
  78. return a
  79. }, Howl.prototype.orientation = function (e, t, o, r) {
  80. var a = this;
  81. if (!a._webAudio) return a;
  82. if ("loaded" !== a._state) return a._queue.push({
  83. event: "orientation",
  84. action: function () {
  85. a.orientation(e, t, o, r)
  86. }
  87. }), a;
  88. if (t = "number" != typeof t ? a._orientation[1] : t, o = "number" != typeof o ? a._orientation[2] : o, void 0 === r) {
  89. if ("number" != typeof e) return a._orientation;
  90. a._orientation = [e, t, o]
  91. }
  92. for (var i = a._getSoundIds(r), p = 0; p < i.length; p++) {
  93. var s = a._soundById(i[p]);
  94. if (s) {
  95. if ("number" != typeof e) return s._orientation;
  96. s._orientation = [e, t, o], s._node && (s._panner || (s._pos || (s._pos = a._pos || [0, 0, -.5]), n(s, "spatial")), s._panner.setOrientation(e, t, o)), a._emit("orientation", s._id)
  97. }
  98. }
  99. return a
  100. }, Howl.prototype.pannerAttr = function () {
  101. var e, t, o, r = this,
  102. a = arguments;
  103. if (!r._webAudio) return r;
  104. if (0 === a.length) return r._pannerAttr;
  105. if (1 === a.length) {
  106. if ("object" != typeof a[0]) return o = r._soundById(parseInt(a[0], 10)), o ? o._pannerAttr : r._pannerAttr;
  107. e = a[0], void 0 === t && (e.pannerAttr || (e.pannerAttr = {
  108. coneInnerAngle: e.coneInnerAngle,
  109. coneOuterAngle: e.coneOuterAngle,
  110. coneOuterGain: e.coneOuterGain,
  111. distanceModel: e.distanceModel,
  112. maxDistance: e.maxDistance,
  113. refDistance: e.refDistance,
  114. rolloffFactor: e.rolloffFactor,
  115. panningModel: e.panningModel
  116. }), r._pannerAttr = {
  117. coneInnerAngle: void 0 !== e.pannerAttr.coneInnerAngle ? e.pannerAttr.coneInnerAngle : r._coneInnerAngle,
  118. coneOuterAngle: void 0 !== e.pannerAttr.coneOuterAngle ? e.pannerAttr.coneOuterAngle : r._coneOuterAngle,
  119. coneOuterGain: void 0 !== e.pannerAttr.coneOuterGain ? e.pannerAttr.coneOuterGain : r._coneOuterGain,
  120. distanceModel: void 0 !== e.pannerAttr.distanceModel ? e.pannerAttr.distanceModel : r._distanceModel,
  121. maxDistance: void 0 !== e.pannerAttr.maxDistance ? e.pannerAttr.maxDistance : r._maxDistance,
  122. refDistance: void 0 !== e.pannerAttr.refDistance ? e.pannerAttr.refDistance : r._refDistance,
  123. rolloffFactor: void 0 !== e.pannerAttr.rolloffFactor ? e.pannerAttr.rolloffFactor : r._rolloffFactor,
  124. panningModel: void 0 !== e.pannerAttr.panningModel ? e.pannerAttr.panningModel : r._panningModel
  125. })
  126. } else 2 === a.length && (e = a[0], t = parseInt(a[1], 10));
  127. for (var i = r._getSoundIds(t), p = 0; p < i.length; p++)
  128. if (o = r._soundById(i[p])) {
  129. var s = o._pannerAttr;
  130. s = {
  131. coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : s.coneInnerAngle,
  132. coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : s.coneOuterAngle,
  133. coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : s.coneOuterGain,
  134. distanceModel: void 0 !== e.distanceModel ? e.distanceModel : s.distanceModel,
  135. maxDistance: void 0 !== e.maxDistance ? e.maxDistance : s.maxDistance,
  136. refDistance: void 0 !== e.refDistance ? e.refDistance : s.refDistance,
  137. rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : s.rolloffFactor,
  138. panningModel: void 0 !== e.panningModel ? e.panningModel : s.panningModel
  139. };
  140. var l = o._panner;
  141. l ? (l.coneInnerAngle = s.coneInnerAngle, l.coneOuterAngle = s.coneOuterAngle, l.coneOuterGain = s.coneOuterGain, l.distanceModel = s.distanceModel, l.maxDistance = s.maxDistance, l.refDistance = s.refDistance, l.rolloffFactor = s.rolloffFactor, l.panningModel = s.panningModel) : (o._pos || (o._pos = r._pos || [0, 0, -.5]), n(o, "spatial"))
  142. }
  143. return r
  144. }, Sound.prototype.init = function (n) {
  145. return function () {
  146. var e = this,
  147. t = e._parent;
  148. e._orientation = t._orientation, e._stereo = t._stereo, e._pos = t._pos, e._pannerAttr = t._pannerAttr, n.call(this), e._stereo ? t.stereo(e._stereo) : e._pos && t.pos(e._pos[0], e._pos[1], e._pos[2], e._id)
  149. }
  150. }(Sound.prototype.init), Sound.prototype.reset = function (n) {
  151. return function () {
  152. var e = this,
  153. t = e._parent;
  154. return e._orientation = t._orientation, e._pos = t._pos, e._pannerAttr = t._pannerAttr, n.call(this)
  155. }
  156. }(Sound.prototype.reset);
  157. var n = function (n, e) {
  158. e = e || "spatial", "spatial" === e ? (n._panner = Howler.ctx.createPanner(), n._panner.coneInnerAngle = n._pannerAttr.coneInnerAngle, n._panner.coneOuterAngle = n._pannerAttr.coneOuterAngle, n._panner.coneOuterGain = n._pannerAttr.coneOuterGain, n._panner.distanceModel = n._pannerAttr.distanceModel, n._panner.maxDistance = n._pannerAttr.maxDistance, n._panner.refDistance = n._pannerAttr.refDistance, n._panner.rolloffFactor = n._pannerAttr.rolloffFactor, n._panner.panningModel = n._pannerAttr.panningModel, n._panner.setPosition(n._pos[0], n._pos[1], n._pos[2]), n._panner.setOrientation(n._orientation[0], n._orientation[1], n._orientation[2])) : (n._panner = Howler.ctx.createStereoPanner(), n._panner.pan.setValueAtTime(n._stereo, Howler.ctx.currentTime)), n._panner.connect(n._node), n._paused || n._parent.pause(n._id, !0).play(n._id, !0)
  159. }
  160. }();