From b9af688b7a3098e3d6a1cbb33432366eef28e3d8 Mon Sep 17 00:00:00 2001 From: Ben Denham Date: Sat, 28 Nov 2020 18:11:17 +1300 Subject: [PATCH] Use version of load() with option handling for window.loadAudio --- dist/audio-loader.min.js | 2 +- lib/browser.js | 2 ++ lib/load.js | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dist/audio-loader.min.js b/dist/audio-loader.min.js index 221c4b5..89a050a 100644 --- a/dist/audio-loader.min.js +++ b/dist/audio-loader.min.js @@ -1 +1 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o64&&nChr<91?nChr-65:nChr>96&&nChr<123?nChr-71:nChr>47&&nChr<58?nChr+4:nChr===43?62:nChr===47?63:0}function decode(sBase64,nBlocksSize){var sB64Enc=sBase64.replace(/[^A-Za-z0-9\+\/]/g,"");var nInLen=sB64Enc.length;var nOutLen=nBlocksSize?Math.ceil((nInLen*3+1>>2)/nBlocksSize)*nBlocksSize:nInLen*3+1>>2;var taBytes=new Uint8Array(nOutLen);for(var nMod3,nMod4,nUint24=0,nOutIdx=0,nInIdx=0;nInIdx>>(16>>>nMod3&24)&255}nUint24=0}}return taBytes}module.exports={decode:decode}},{}],2:[function(require,module,exports){"use strict";var load=require("./load");var context=require("audio-context");module.exports=function(source,options,cb){if(options instanceof Function){cb=options;options={}}options=options||{};options.ready=cb||function(){};var ac=options&&options.context?options.context:context();var defaults={decode:getAudioDecoder(ac),fetch:fetch};var opts=Object.assign(defaults,options);return load(source,opts)};function getAudioDecoder(ac){return function decode(buffer){return new Promise(function(resolve,reject){ac.decodeAudioData(buffer,function(data){resolve(data)},function(err){reject(err)})})}}function fetch(url,type){return new Promise(function(resolve,reject){var req=new XMLHttpRequest;if(type)req.responseType=type;req.open("GET",url);req.onload=function(){req.status===200?resolve(req.response):reject(Error(req.statusText))};req.onerror=function(){reject(Error("Network Error"))};req.send()})}},{"./load":3,"audio-context":4}],3:[function(require,module,exports){"use strict";var base64=require("./base64");var isBuffer=require("is-buffer");function fromRegex(r){return function(o){return typeof o==="string"&&r.test(o)}}function prefix(pre,name){return typeof pre==="string"?pre+name:typeof pre==="function"?pre(name):name}function load(source,options,defVal){var loader=isArrayBuffer(source)||isBuffer(source)?decodeBuffer:isAudioFileName(source)?loadAudioFile:isPromise(source)?loadPromise:isArray(source)?loadArrayData:isObject(source)?loadObjectData:isJsonFileName(source)?loadJsonFile:isBase64Audio(source)?loadBase64Audio:isJsFileName(source)?loadMidiJSFile:null;var opts=options||{};var promise=loader?loader(source,opts):defVal?Promise.resolve(defVal):Promise.reject("Source not valid ("+source+")");return promise.then(function(data){opts.ready(null,data);return data},function(err){opts.ready(err);throw err})}function isArrayBuffer(o){return o instanceof ArrayBuffer}function decodeBuffer(array,options){return options.decode(array)}var isAudioFileName=fromRegex(/\.(mp3|wav|ogg)(\?.*)?$/i);function loadAudioFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"arraybuffer"),options)}function isPromise(o){return o&&typeof o.then==="function"}function loadPromise(promise,options){return promise.then(function(value){return load(value,options)})}var isArray=Array.isArray;function loadArrayData(array,options){return Promise.all(array.map(function(data){return load(data,options,data)}))}function isObject(o){return o&&typeof o==="object"}function loadObjectData(obj,options){var dest={};var promises=Object.keys(obj).map(function(key){if(options.only&&options.only.indexOf(key)===-1)return null;var value=obj[key];return load(value,options,value).then(function(audio){dest[key]=audio})});return Promise.all(promises).then(function(){return dest})}var isJsonFileName=fromRegex(/\.json(\?.*)?$/i);function loadJsonFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"text").then(JSON.parse),options)}var isBase64Audio=fromRegex(/^data:audio/);function loadBase64Audio(source,options){var i=source.indexOf(",");return load(base64.decode(source.slice(i+1)).buffer,options)}var isJsFileName=fromRegex(/\.js(\?.*)?$/i);function loadMidiJSFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"text").then(midiJsToJson),options)}function midiJsToJson(data){var begin=data.indexOf("MIDI.Soundfont.");if(begin<0)throw Error("Invalid MIDI.js Soundfont format");begin=data.indexOf("=",begin)+2;var end=data.lastIndexOf(",");return JSON.parse(data.slice(begin,end)+"}")}if(typeof module==="object"&&module.exports)module.exports=load;if(typeof window!=="undefined")window.loadAudio=load},{"./base64":1,"is-buffer":6}],4:[function(require,module,exports){"use strict";var window=require("global/window");var OfflineContext=window.OfflineAudioContext||window.webkitOfflineAudioContext;var Context=window.AudioContext||window.webkitAudioContext;var cache={};module.exports=function getContext(options){if(!Context)return null;if(typeof options==="number"){options={sampleRate:options}}var sampleRate=options&&options.sampleRate;if(options&&options.offline){if(!OfflineContext)return null;return new OfflineContext(options.channels||2,options.length,sampleRate||44100)}var ctx=cache[sampleRate];if(ctx)return ctx;ctx=new Context(options);cache[ctx.sampleRate]=cache[sampleRate]=ctx;return ctx}},{"global/window":5}],5:[function(require,module,exports){(function(global){var win;if(typeof window!=="undefined"){win=window}else if(typeof global!=="undefined"){win=global}else if(typeof self!=="undefined"){win=self}else{win={}}module.exports=win}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],6:[function(require,module,exports){module.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer)};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)}function isSlowBuffer(obj){return typeof obj.readFloatLE==="function"&&typeof obj.slice==="function"&&isBuffer(obj.slice(0,0))}},{}]},{},[2]); \ No newline at end of file +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o64&&nChr<91?nChr-65:nChr>96&&nChr<123?nChr-71:nChr>47&&nChr<58?nChr+4:nChr===43?62:nChr===47?63:0}function decode(sBase64,nBlocksSize){var sB64Enc=sBase64.replace(/[^A-Za-z0-9\+\/]/g,"");var nInLen=sB64Enc.length;var nOutLen=nBlocksSize?Math.ceil((nInLen*3+1>>2)/nBlocksSize)*nBlocksSize:nInLen*3+1>>2;var taBytes=new Uint8Array(nOutLen);for(var nMod3,nMod4,nUint24=0,nOutIdx=0,nInIdx=0;nInIdx>>(16>>>nMod3&24)&255}nUint24=0}}return taBytes}module.exports={decode:decode}},{}],2:[function(require,module,exports){"use strict";var load=require("./load");var context=require("audio-context");module.exports=function(source,options,cb){if(options instanceof Function){cb=options;options={}}options=options||{};options.ready=cb||function(){};var ac=options&&options.context?options.context:context();var defaults={decode:getAudioDecoder(ac),fetch:fetch};var opts=Object.assign(defaults,options);return load(source,opts)};function getAudioDecoder(ac){return function decode(buffer){return new Promise(function(resolve,reject){ac.decodeAudioData(buffer,function(data){resolve(data)},function(err){reject(err)})})}}function fetch(url,type){return new Promise(function(resolve,reject){var req=new XMLHttpRequest;if(type)req.responseType=type;req.open("GET",url);req.onload=function(){req.status===200?resolve(req.response):reject(Error(req.statusText))};req.onerror=function(){reject(Error("Network Error"))};req.send()})};if(typeof window!=="undefined")window.loadAudio=module.exports},{"./load":3,"audio-context":4}],3:[function(require,module,exports){"use strict";var base64=require("./base64");var isBuffer=require("is-buffer");function fromRegex(r){return function(o){return typeof o==="string"&&r.test(o)}}function prefix(pre,name){return typeof pre==="string"?pre+name:typeof pre==="function"?pre(name):name}function load(source,options,defVal){var loader=isArrayBuffer(source)||isBuffer(source)?decodeBuffer:isAudioFileName(source)?loadAudioFile:isPromise(source)?loadPromise:isArray(source)?loadArrayData:isObject(source)?loadObjectData:isJsonFileName(source)?loadJsonFile:isBase64Audio(source)?loadBase64Audio:isJsFileName(source)?loadMidiJSFile:null;var opts=options||{};var promise=loader?loader(source,opts):defVal?Promise.resolve(defVal):Promise.reject("Source not valid ("+source+")");return promise.then(function(data){opts.ready(null,data);return data},function(err){opts.ready(err);throw err})}function isArrayBuffer(o){return o instanceof ArrayBuffer}function decodeBuffer(array,options){return options.decode(array)}var isAudioFileName=fromRegex(/\.(mp3|wav|ogg)(\?.*)?$/i);function loadAudioFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"arraybuffer"),options)}function isPromise(o){return o&&typeof o.then==="function"}function loadPromise(promise,options){return promise.then(function(value){return load(value,options)})}var isArray=Array.isArray;function loadArrayData(array,options){return Promise.all(array.map(function(data){return load(data,options,data)}))}function isObject(o){return o&&typeof o==="object"}function loadObjectData(obj,options){var dest={};var promises=Object.keys(obj).map(function(key){if(options.only&&options.only.indexOf(key)===-1)return null;var value=obj[key];return load(value,options,value).then(function(audio){dest[key]=audio})});return Promise.all(promises).then(function(){return dest})}var isJsonFileName=fromRegex(/\.json(\?.*)?$/i);function loadJsonFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"text").then(JSON.parse),options)}var isBase64Audio=fromRegex(/^data:audio/);function loadBase64Audio(source,options){var i=source.indexOf(",");return load(base64.decode(source.slice(i+1)).buffer,options)}var isJsFileName=fromRegex(/\.js(\?.*)?$/i);function loadMidiJSFile(name,options){var url=prefix(options.from,name);return load(options.fetch(url,"text").then(midiJsToJson),options)}function midiJsToJson(data){var begin=data.indexOf("MIDI.Soundfont.");if(begin<0)throw Error("Invalid MIDI.js Soundfont format");begin=data.indexOf("=",begin)+2;var end=data.lastIndexOf(",");return JSON.parse(data.slice(begin,end)+"}")}if(typeof module==="object"&&module.exports)module.exports=load},{"./base64":1,"is-buffer":6}],4:[function(require,module,exports){"use strict";var window=require("global/window");var OfflineContext=window.OfflineAudioContext||window.webkitOfflineAudioContext;var Context=window.AudioContext||window.webkitAudioContext;var cache={};module.exports=function getContext(options){if(!Context)return null;if(typeof options==="number"){options={sampleRate:options}}var sampleRate=options&&options.sampleRate;if(options&&options.offline){if(!OfflineContext)return null;return new OfflineContext(options.channels||2,options.length,sampleRate||44100)}var ctx=cache[sampleRate];if(ctx)return ctx;ctx=new Context(options);cache[ctx.sampleRate]=cache[sampleRate]=ctx;return ctx}},{"global/window":5}],5:[function(require,module,exports){(function(global){var win;if(typeof window!=="undefined"){win=window}else if(typeof global!=="undefined"){win=global}else if(typeof self!=="undefined"){win=self}else{win={}}module.exports=win}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],6:[function(require,module,exports){module.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer)};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)}function isSlowBuffer(obj){return typeof obj.readFloatLE==="function"&&typeof obj.slice==="function"&&isBuffer(obj.slice(0,0))}},{}]},{},[2]); diff --git a/lib/browser.js b/lib/browser.js index 644f0d1..70d27ab 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -49,3 +49,5 @@ function fetch (url, type) { req.send() }) } + +if (typeof window !== 'undefined') window.loadAudio = module.exports diff --git a/lib/load.js b/lib/load.js index 9706127..aad55b2 100644 --- a/lib/load.js +++ b/lib/load.js @@ -145,4 +145,3 @@ function midiJsToJson (data) { } if (typeof module === 'object' && module.exports) module.exports = load -if (typeof window !== 'undefined') window.loadAudio = load