play_now = function(sfile) {
    if (sfile.buffer) {
      sfile.source = sfile.p5s.audiocontext.createBufferSource();
      sfile.source.buffer = sfile.buffer;
      sfile.source.loop = sfile.looping;

      // firefox
      if (!sfile.source.gain) {
        sfile.source.gain = sfile.p5s.audiocontext.createGain();
        sfile.source.connect(sfile.source.gain);
        // connect to output
        sfile.source.gain.connect(sfile.output); 
      }
      else {
        //connect to output
        sfile.source.connect(sfile.output); 
      }

      // set variables like playback rate, gain and panning
      sfile.source.playbackRate.value = sfile.playbackRate;

      sfile.source.onended = function() {
        if (sfile.playing) {
          sfile.playing = !sfile.playing;
          sfile.stop();
         }
       };

      // play the sound
      sfile.source.start(0, sfile.startTime);
      sfile.startSeconds = sfile.p5s.audiocontext.currentTime;
      sfile.playing = true;
      sfile.paused = false;

      sfile.sources.push(sfile.source);
    }

    else {
      console.log(sfile.url + ' not loaded yet');
    }
  }
Private callbacks to be used for soundfile playback & loading