code: function getOfflineContext(numOfChannels, length, sampleRate) {
      if (offlineCtx) {
          return offlineCtx;
      }
      numOfChannels = numOfChannels || 2;
      sampleRate = sampleRate || 44100;
      length = sampleRate || numOfChannels;
  
      const OfflineCtx = window.OfflineAudioContext || window.webkitOfflineAudioContext;
  
      offlineCtx = (OfflineCtx ? new OfflineCtx(numOfChannels, length, sampleRate) : null);
  
      return offlineCtx;
  }
docs: /*
  In contrast with a standard AudioContext, an OfflineAudioContext doesn't render
  the audio to the device hardware;
  instead, it generates it, as fast as it can, and outputs the result to an AudioBuffer.