| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | /** * @license ------------------------------------------------------------------- *   module: WebAudioShim - Fix naming issues for WebAudioAPI supports *      src: https://github.com/Dinahmoe/webaudioshim *   author: Dinahmoe AB * ------------------------------------------------------------------- * Copyright (c) 2012 DinahMoe AB *  * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: *  * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. *  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */window.AudioContext = window.AudioContext || window.webkitAudioContext || null;window.OfflineAudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext || null;(function (Context) {	var isFunction = function (f) {		return Object.prototype.toString.call(f) === "[object Function]" ||			Object.prototype.toString.call(f) === "[object AudioContextConstructor]";	};	var contextMethods = [		["createGainNode", "createGain"],		["createDelayNode", "createDelay"],		["createJavaScriptNode", "createScriptProcessor"]	];	///	var proto;	var instance;	var sourceProto;	///	if (!isFunction(Context)) {		return;	}	instance = new Context();	if (!instance.destination || !instance.sampleRate) {		return;	}	proto = Context.prototype;	sourceProto = Object.getPrototypeOf(instance.createBufferSource());	if (!isFunction(sourceProto.start)) {		if (isFunction(sourceProto.noteOn)) {			sourceProto.start = function (when, offset, duration) {				switch (arguments.length) {					case 0:						throw new Error("Not enough arguments.");					case 1:						this.noteOn(when);						break;					case 2:						if (this.buffer) {							this.noteGrainOn(when, offset, this.buffer.duration - offset);						} else {							throw new Error("Missing AudioBuffer");						}						break;					case 3:						this.noteGrainOn(when, offset, duration);				}			};		}	}	if (!isFunction(sourceProto.noteOn)) {		sourceProto.noteOn = sourceProto.start;	}	if (!isFunction(sourceProto.noteGrainOn)) {		sourceProto.noteGrainOn = sourceProto.start;	}	if (!isFunction(sourceProto.stop)) {		sourceProto.stop = sourceProto.noteOff;	}	if (!isFunction(sourceProto.noteOff)) {		sourceProto.noteOff = sourceProto.stop;	}	contextMethods.forEach(function (names) {		var name1;		var name2;		while (names.length) {			name1 = names.pop();			if (isFunction(this[name1])) {				this[names.pop()] = this[name1];			} else {				name2 = names.pop();				this[name1] = this[name2];			}		}	}, proto);})(window.AudioContext);
 |