Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sound issues

edited June 2015 in Help! with 1.x
I used to following code in my Twine 1.4 Sugarcane game to making playing sound easier
(function () {
  "use strict";
  version.extensions['soundMacros'] = {
    major: 1,
    minor: 1,
    revision: 2
  };
  var p = macros['playsound'] = {
    soundtracks: {},
    handler: function (a, b, c, d) {
      var loop = function (m) {
          if (m.loop == undefined) {
            m.loopfn = function () {
              this.play();
            };
            m.addEventListener('ended', m.loopfn, 0);
          } else m.loop = true;
          m.play();
          };
      var s = eval(d.fullArgs());
      if (s) {
        s = s.toString();
        var m = this.soundtracks[s.slice(0, s.lastIndexOf("."))];
        if (m) {
          if (b == "playsound") {
            m.play();
          } else if (b == "loopsound") {
            loop(m);
          } else if (b == "pausesound") {
            m.pause();
          } else if (b == "unloopsound") {
            if (m.loop != undefined) {
              m.loop = false;
            } else if (m.loopfn) {
              m.removeEventListener('ended', m.loopfn);
              delete m.loopfn;
            }
          } else if (b == "stopsound") {
            m.pause();
            m.currentTime = 0;
          } else if (b == "fadeoutsound" || b == "fadeinsound") {
            if (m.interval) clearInterval(m.interval);
            if (b == "fadeinsound") {
              if (m.currentTime>0) return;
              m.volume = 0;
              loop(m);
            } else {
              if (!m.currentTime) return;
              m.play();
            }
            var v = m.volume;
            m.interval = setInterval(function () {
              v = Math.min(1, Math.max(0, v + 0.005 * (b == "fadeinsound" ? 1 : -1)));
              m.volume = Math.easeInOut(v);
              if (v == 0 || v == 1) clearInterval(m.interval);
              if (v == 0) {
                m.pause();
                m.currentTime = 0;
                m.volume = 1;
              }
            }, 10);
          }
        }
      }
    }
  }
  macros['fadeinsound'] = p;
  macros['fadeoutsound'] = p;
  macros['unloopsound'] = p;
  macros['loopsound'] = p;
  macros['pausesound'] = p;
  macros['stopsound'] = p;
  macros['stopallsound'] = {
    handler: function () {
      var s = macros.playsound.soundtracks;
      for (var j in s) {
		if (s.hasOwnProperty(j)) {
          s[j].pause();
          if (s[j].currentTime) {
		    s[j].currentTime = 0;
		  }
		}
      }
    }
  }
  var div = document.getElementById("storeArea").firstChild;
  var fe = ["ogg", "mp3", "wav", "webm"];
  while (div) {
    var b = String.fromCharCode(92);
    var q = '"';
    var re = "['" + q + "]([^" + q + "']*?)" + b + ".(ogg|mp3|wav|webm)['" + q + "]";
    k(new RegExp(re, "gi"));
    div = div.nextSibling;
  }

  function k(c, e) {
    do {
      var d = c.exec(div.innerHTML);
      if (d) {
        var a = new Audio();
        if (a.canPlayType) {
          for (var i = -1; i < fe.length; i += 1) {
            if (i >= 0) d[2] = fe[i];
            if (a.canPlayType("audio/" + d[2])) break;
          }
          if (i < fe.length) {
            a.setAttribute("src", d[1] + "." + d[2]);
            a.interval = null;
            macros.playsound.soundtracks[d[1]] = a;
          } else console.log("Browser can't play '" + d[1] + "'");
        }
      }
    } while (d);
  }
}());

And it worked-the first time. Now for whatever reason, sound isn't playing. I've saved all the sound files in the same area as the game but it simply isn't working. I heard that certain browsers can't play specific files but like I said, this was perfectly fine before. So far though, I've been using mp3 files with Internet Explorer. I'm just curious, can some provide an explanation for why this is happening and how I can fix it?
Thanks!
Sign In or Register to comment.