signalsmith-stretch/web/release/SignalsmithStretch.js
2024-10-22 12:24:55 +01:00

430 lines
93 KiB
JavaScript

var SignalsmithStretch = (() => {
var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
return (
function(moduleArg = {}) {
var moduleRtn;
var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var crypto=globalThis?.crypto||{getRandomValues:array=>{for(var i=0;i<array.length;i++)array[i]=Math.random()*256|0}};var performance=globalThis?.performance||{now:_=>Date.now()};var moduleOverrides=Object.assign({},Module);var arguments_=[];var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_SHELL){readBinary=f=>{if(typeof readbuffer=="function"){return new Uint8Array(readbuffer(f))}let data=read(f,"binary");assert(typeof data=="object");return data};readAsync=f=>new Promise((resolve,reject)=>{setTimeout(()=>resolve(readBinary(f)))});if(typeof clearTimeout=="undefined"){globalThis.clearTimeout=id=>{}}if(typeof setTimeout=="undefined"){globalThis.setTimeout=f=>typeof f=="function"?f():abort()}if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit=="function"){quit_=(status,toThrow)=>{setTimeout(()=>{if(!(toThrow instanceof ExitStatus)){let toLog=toThrow;if(toThrow&&typeof toThrow=="object"&&toThrow.stack){toLog=[toThrow,toThrow.stack]}err(`exiting due to exception: ${toLog}`)}quit(status)});throw toThrow}}if(typeof print!="undefined"){if(typeof console=="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=console.log.bind(console);var err=console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;var wasmBinary;if(typeof atob=="undefined"){if(typeof global!="undefined"&&typeof globalThis=="undefined"){globalThis=global}globalThis.atob=function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output}}function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){callRuntimeCallbacks(__ATPOSTRUN__)}function addOnInit(cb){__ATINIT__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++}function removeRunDependency(id){runDependencies--;if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f="data:application/octet-stream;base64,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QQA2AgggAEIANwIAQQAhAwsCQCABQYCAgIAETw0AQf////8DIANBAXUiBCABIAEgBEkbIANB/P///wdPGyIDQYCAgIAETw0AIAAgA0ECdCIDEAUiBDYCACAAIAMgBGo2AgggAioCACELIAQhAyABQQdxIgIEQANAIAMgCzgCACADQQRqIQMgBUEBaiIFIAJHDQALCyABQQJ0IARqIQIgAUEBa0H/////A3FBB08EQANAIAMgCzgCHCADIAs4AhggAyALOAIUIAMgCzgCECADIAs4AgwgAyALOAIIIAMgCzgCBCADIAs4AgAgA0EgaiIDIAJHDQALCyAAIAI2AgQPCxAHAAuGAgEHfyABIAAoAggiAiAAKAIEIgNrQQN1TQRAIAAgAQR/IAMgAUEDdCIAEAYgAGoFIAMLNgIEDwsCQCADIAAoAgAiBGtBA3UiByABaiIFQYCAgIACSQRAQf////8BIAIgBGsiAkECdSIIIAUgBSAISRsgAkH4////B08bIgUEQCAFQYCAgIACTw0CIAVBA3QQBSEGCyAHQQN0IAZqIgIgAUEDdCIBEAYgAWohASADIARHBEADQCACQQhrIgIgA0EIayIDKQIANwIAIAMgBEcNAAsgACgCACEECyAAIAYgBUEDdGo2AgggACABNgIEIAAgAjYCACAEBEAgBBAECw8LEAcACxAKAAtPAQJ/QZAwKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAEAINAQtB5DNBMDYCAEF/DwtBkDAgADYCACABC4ADAgF8A38jAEEQayIEJAACQCAAvCIDQf////8HcSICQdqfpPoDTQRAIAJBgICAzANJDQEgALsQCCEADAELIAJB0aftgwRNBEAgALshASACQeOX24AETQRAIANBAEgEQCABRBgtRFT7Ifk/oBAJjCEADAMLIAFEGC1EVPsh+b+gEAkhAAwCC0QYLURU+yEJwEQYLURU+yEJQCADQQBOGyABoJoQCCEADAELIAJB1eOIhwRNBEAgAkHf27+FBE0EQCAAuyEBIANBAEgEQCABRNIhM3982RJAoBAJIQAMAwsgAUTSITN/fNkSwKAQCYwhAAwCC0QYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQCCEADAELIAJBgICA/AdPBEAgACAAkyEA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IA1qcUECdGogAioCCDgCACAIIAYgACAJanFBAnRqIAIqAgw4AgAgAEEEaiIAIAFHDQALCyAFQQFqIgUgA0cNAAsLQagyIAEgBGo2AgAMAwtBmDAgACABajYCAAwBC0GcMEEBOgAAQZgwQQA2AgALIARBAEoEQEEAIQIDQCARQZgwNgIgIBFBzDM2AiQgESARKQIgNwMQIBEgEUEoajYCHCARIBFBLGo2AhggESARKQIYNwMIIwBBEGsiDCQAQewwKAIAIgAgAiIOSARAA0BBACEIIwBBEGsiEiQAIBEoAhAiAygCSCEBAn8gESgCCCgCALIgAEEBaiIYspQgESgCDCgCALKVEBwgAbKTIhuLQwAAAE9dBEAgG6gMAQtBgICAgHgLIQsgAygCrAIhACADIAs2AqwCAkAgAy0AvAIgCyAAayINQQBKciITQQFxRQ0AAn8gAygCpAJBAEwEQCADQQA6AL0CQQAMAQtBACALayIPQQAgD0EAShshAkEBIA8gD0EBTBsiAEH8////B3EhFCAAQQNxIRAgA0H8AGohFSADQfgBaiEXIAtBAE4hFgNAAkAgFg0AIAMoApACIAMoAowCIAhsIAtqaiEBIAMoArACIQQgAygCmAIhByADKAKUAiEKQQAhBkEAIQBBACEFIA9BA0oEQANAIAQgAEECdGogByAKIAAgAWpxQQJ0aioCADgCACAEIABBAXIiCUECdGogByAKIAEgCWpxQQJ0aioCADgCACAEIABBAnIiCUECdGogByAKIAEgCWpxQQJ0aioCADgCACAEIABBA3IiCUECdGogByAKIAEgCWpxQQJ0aioCADgCACAAQQRqIQAgBUEEaiIFIBRHDQALCyAQRQ0AA0AgBCAAQQJ0aiAHIAogACABanFBAnRqKgIAOAIAIABBAWohACAGQQFqIgYgEEcNAAsLAkAgAiADKAJIIgZODQAgESgCFCgCACAIQQJ0aigCACALQQJ0aiEBIAMoArACIQVBACEEIAYgAiIAa0EDcSIHBEADQCAFIABBAnQiCmogASAKaioCADgCACAAQQFqIQAgBEEBaiIEIAdHDQALCyACIAZrQXxLDQADQCAFIABBAnQiBGogASAEaioCADgCACAFIARBBGoiB2ogASAHaioCADgCACAFIARBCGoiB2ogASAHaioCADgCACAFIARBDGoi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";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["e"];updateMemoryViews();addOnInit(wasmExports["f"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}wasmBinaryFile??=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=true;var __abort_js=()=>{abort("")};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){abortOnCannotGrowMemory(requestedSize)}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.5/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}abortOnCannotGrowMemory(requestedSize)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var _getentropy=(buffer,size)=>{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var wasmImports={d:__abort_js,b:__emscripten_memcpy_js,c:_emscripten_resize_heap,a:_getentropy};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["f"])();var _setBuffers=Module["_setBuffers"]=(a0,a1)=>(_setBuffers=Module["_setBuffers"]=wasmExports["h"])(a0,a1);var _blockSamples=Module["_blockSamples"]=()=>(_blockSamples=Module["_blockSamples"]=wasmExports["i"])();var _intervalSamples=Module["_intervalSamples"]=()=>(_intervalSamples=Module["_intervalSamples"]=wasmExports["j"])();var _inputLatency=Module["_inputLatency"]=()=>(_inputLatency=Module["_inputLatency"]=wasmExports["k"])();var _outputLatency=Module["_outputLatency"]=()=>(_outputLatency=Module["_outputLatency"]=wasmExports["l"])();var _reset=Module["_reset"]=()=>(_reset=Module["_reset"]=wasmExports["m"])();var _presetDefault=Module["_presetDefault"]=(a0,a1)=>(_presetDefault=Module["_presetDefault"]=wasmExports["n"])(a0,a1);var _presetCheaper=Module["_presetCheaper"]=(a0,a1)=>(_presetCheaper=Module["_presetCheaper"]=wasmExports["o"])(a0,a1);var _configure=Module["_configure"]=(a0,a1,a2)=>(_configure=Module["_configure"]=wasmExports["p"])(a0,a1,a2);var _setTransposeFactor=Module["_setTransposeFactor"]=(a0,a1)=>(_setTransposeFactor=Module["_setTransposeFactor"]=wasmExports["q"])(a0,a1);var _setTransposeSemitones=Module["_setTransposeSemitones"]=(a0,a1)=>(_setTransposeSemitones=Module["_setTransposeSemitones"]=wasmExports["r"])(a0,a1);var _seek=Module["_seek"]=(a0,a1)=>(_seek=Module["_seek"]=wasmExports["s"])(a0,a1);var _process=Module["_process"]=(a0,a1)=>(_process=Module["_process"]=wasmExports["t"])(a0,a1);var _flush=Module["_flush"]=a0=>(_flush=Module["_flush"]=wasmExports["u"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["v"])(a0,a1);Module["UTF8ToString"]=UTF8ToString;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(shouldRunNow)callMain();postRun()}{doRun()}}var shouldRunNow=true;run();moduleRtn=readyPromise;
return moduleRtn;
}
);
})();
function registerWorkletProcessor(Module, audioNodeKey) {
class WasmProcessor extends AudioWorkletProcessor {
constructor(options) {
super(options);
this.wasmReady = false;
this.wasmModule = null;
this.channels = 0;
this.buffersIn = [];
this.buffersOut = [];
this.audioBuffers = []; // list of (multi-channel) audio buffers
this.audioBuffersStart = 0; // time-stamp for the first audio buffer
this.audioBuffersEnd = 0; // just to be helpful
this.timeIntervalSamples = sampleRate*0.1;
this.timeIntervalCounter = 0;
this.timeMap = [{
active: false,
input: 0,
output: 0,
rate: 1,
semitones: 0,
loopStart: 0,
loopEnd: 0
}];
let remoteMethods = {
setUpdateInterval: seconds => {
this.timeIntervalSamples = sampleRate*seconds;
},
stop: when => {
if (typeof when !== 'number') when = currentTime;
return remoteMethods.schedule({active: false, output: when});
},
start: (when, offset, duration, rate, semitones) => {
if (typeof when === 'object') {
if (!('active' in when)) when.active = true;
return remoteMethods.schedule(when);
}
let obj = {active: true, input: 0, output: currentTime + this.outputLatencySeconds};
if (typeof when === 'number') obj.output = when;
if (typeof offset === 'number') obj.input = offset;
if (typeof rate === 'number') obj.rate = rate;
if (typeof semitones === 'number') obj.semitones = semitones;
let result = remoteMethods.schedule(obj);
if (typeof duration === 'number') {
remoteMethods.stop(obj.output + duration);
obj.output += duration;
obj.active = false;
remoteMethods.schedule(obj);
}
return result;
},
schedule: (objIn, adjustPrevious) => {
let outputTime = ('outputTime' in objIn) ? objIn.outputTime : currentTime;
let latestSegment = this.timeMap[this.timeMap.length - 1];
while (this.timeMap.length && this.timeMap[this.timeMap.length - 1].output >= outputTime) {
latestSegment = this.timeMap.pop();
}
let obj = {
active: latestSegment.active,
input: null,
output: outputTime,
rate: latestSegment.rate,
semitones: latestSegment.semitones,
loopStart: latestSegment.loopStart,
loopEnd: latestSegment.loopEnd
};
Object.assign(obj, objIn);
if (obj.input === null) {
let rate = (latestSegment.active ? latestSegment.rate : 0);
obj.input = latestSegment.input + (obj.output - latestSegment.output)*rate;
}
this.timeMap.push(obj);
if (adjustPrevious && this.timeMap.length > 1) {
let previous = this.timeMap[this.timeMap.length - 2];
if (previous.output < currentTime) {
let rate = (previous.active ? previous.rate : 0);
previous.input += (currentTime - previous.output)*rate;
previous.output = currentTime;
}
previous.rate = (obj.input - previous.input)/(obj.output - previous.output);
}
let currentMapSegment = this.timeMap[0];
while (this.timeMap.length > 1 && this.timeMap[1].output <= outputTime) {
this.timeMap.shift();
currentMapSegment = this.timeMap[0];
}
let rate = (currentMapSegment.active ? currentMapSegment.rate : 0);
let inputTime = currentMapSegment.input + (outputTime - currentMapSegment.output)*rate;
this.timeIntervalCounter = this.timeIntervalSamples;
this.port.postMessage(['time', inputTime]);
return obj;
},
dropBuffers: toSeconds => {
if (typeof toSeconds !== 'number') {
let buffers = this.audioBuffers.flat(1).map(b => b.buffer);;
this.audioBuffers = [];
this.audioBuffersStart = this.audioBuffersEnd = 0;
return {
value: {start: 0, end: 0},
transfer: buffers
};
}
let transfer = [];
while (this.audioBuffers.length) {
let first = this.audioBuffers[0];
let length = first[0].length;
let endSamples = this.audioBuffersStart + length;
let endSeconds = endSamples/sampleRate;
if (endSeconds > toSeconds) break;
this.audioBuffers.shift().forEach(b => transfer.push(b.buffer));
this.audioBuffersStart += length;
}
return {
value: {
start: this.audioBuffersStart/sampleRate,
end: this.audioBuffersEnd/sampleRate
},
transfer: transfer
};
},
addBuffers: sampleBuffers => {
sampleBuffers = [].concat(sampleBuffers);
this.audioBuffers.push(sampleBuffers);
let length = sampleBuffers[0].length;
this.audioBuffersEnd += length;
return this.audioBuffersEnd/sampleRate;
}
};
let pendingMessages = [];
this.port.onmessage = event => pendingMessages.push(event);
Module().then(wasmModule => {
this.wasmModule = wasmModule;
this.wasmReady = true;
wasmModule._main();
this.channels = options.numberOfOutputs ? options.outputChannelCount[0] : 2; // stereo by default
this.configure();
this.port.onmessage = event => {
let data = event.data;
let messageId = data.shift();
let method = data.shift();
let result = remoteMethods[method](...data);
if (result?.transfer) {
this.port.postMessage([messageId, result.value], result.transfer);
} else {
this.port.postMessage([messageId, result]);
}
};
let methodArgCounts = {};
for (let key in remoteMethods) {
methodArgCounts[key] = remoteMethods[key].length;
}
this.port.postMessage(['ready', methodArgCounts]);
pendingMessages.forEach(this.port.onmessage);
pendingMessages = null;
});
}
configure() {
this.wasmModule._presetDefault(this.channels, sampleRate);
this.updateBuffers();
this.inputLatencySeconds = this.wasmModule._inputLatency()/sampleRate;
this.outputLatencySeconds = this.wasmModule._outputLatency()/sampleRate;
}
updateBuffers() {
let wasmModule = this.wasmModule;
// longer than one STFT block, so we can seek smoothly
this.bufferLength = (wasmModule._inputLatency() + wasmModule._outputLatency());
let lengthBytes = this.bufferLength*4;
let bufferPointer = wasmModule._setBuffers(this.channels, this.bufferLength);
this.buffersIn = [];
this.buffersOut = [];
for (let c = 0; c < this.channels; ++c) {
this.buffersIn.push(bufferPointer + lengthBytes*c);
this.buffersOut.push(bufferPointer + lengthBytes*(c + this.channels));
}
}
process(inputList, outputList, parameters) {
if (!this.wasmReady) {
outputList.forEach(output => {
output.forEach(channel => {
channel.fill(0);
});
});
return true;
}
if (!outputList[0]?.length) return false;
let outputTime = currentTime + this.outputLatencySeconds;
while (this.timeMap.length > 1 && this.timeMap[1].output <= outputTime) {
this.timeMap.shift();
}
let currentMapSegment = this.timeMap[0];
let wasmModule = this.wasmModule;
wasmModule._setTransposeSemitones(currentMapSegment.semitones, 8000/sampleRate)
// Check the input/output channel counts
if (outputList[0].length != this.channels) {
this.channels = outputList[0]?.length || 0;
configure();
}
let outputBlockSize = outputList[0][0].length;
let memory = wasmModule.exports ? wasmModule.exports.memory.buffer : wasmModule.HEAP8.buffer;
// Buffer list (one per channel)
let inputs = inputList[0];
if (!currentMapSegment.active) {
outputList[0].forEach((_, c) => {
let channelBuffer = inputs[c%inputs.length];
let buffer = new Float32Array(memory, this.buffersIn[c], outputBlockSize);
buffer.fill(0);
});
// Should detect silent input and skip processing
wasmModule._process(outputBlockSize, outputBlockSize);
} else if (inputs?.length) {
// Live input
outputList[0].forEach((_, c) => {
let channelBuffer = inputs[c%inputs.length];
let buffer = new Float32Array(memory, this.buffersIn[c], outputBlockSize);
if (channelBuffer) {
buffer.set(channelBuffer);
} else {
buffer.fill(0);
}
})
wasmModule._process(outputBlockSize, outputBlockSize);
} else {
let inputTime = currentMapSegment.input + (outputTime - currentMapSegment.output)*currentMapSegment.rate;
let loopLength = currentMapSegment.loopEnd - currentMapSegment.loopStart;
if (loopLength > 0 && inputTime >= currentMapSegment.loopEnd) {
currentMapSegment.input -= loopLength;
inputTime -= loopLength;
}
inputTime += this.inputLatencySeconds;
let inputSamplesEnd = Math.round(inputTime*sampleRate);
// Fill the buffer with previous input
let buffers = outputList[0].map((_, c) => new Float32Array(memory, this.buffersIn[c], this.bufferLength));
let blockSamples = 0; // current write position in the temporary input buffer
let audioBufferIndex = 0;
let audioSamples = this.audioBuffersStart; // start of current audio buffer
// zero-pad until the start of the audio data
let inputSamples = inputSamplesEnd - this.bufferLength;
if (inputSamples < audioSamples) {
blockSamples = audioSamples - inputSamples;
buffers.forEach(b => b.fill(0, 0, blockSamples));
inputSamples = audioSamples;
}
while (audioBufferIndex < this.audioBuffers.length && audioSamples < inputSamplesEnd) {
let audioBuffer = this.audioBuffers[audioBufferIndex];
let startIndex = inputSamples - audioSamples; // start index within the audio buffer
let bufferEnd = audioSamples + audioBuffer[0].length;
// how many samples to copy: min(how many left in the buffer, how many more we need)
let count = Math.min(audioBuffer[0].length - startIndex, inputSamplesEnd - inputSamples);
if (count > 0) {
buffers.forEach((buffer, c) => {
let channelBuffer = audioBuffer[c%audioBuffer.length];
buffer.subarray(blockSamples).set(channelBuffer.subarray(startIndex, startIndex + count));
});
audioSamples += count;
blockSamples += count;
} else { // we're already past this buffer - skip it
audioSamples += audioBuffer[0].length;
}
++audioBufferIndex;
}
if (blockSamples < this.bufferLength) {
buffers.forEach(buffer => buffer.subarray(blockSamples).fill(0));
}
// constantly seeking, so we don't have to worry about the input buffers needing to be a rate-dependent size
wasmModule._seek(this.bufferLength, currentMapSegment.rate);
wasmModule._process(0, outputBlockSize);
this.timeIntervalCounter -= outputBlockSize;
if (this.timeIntervalCounter <= 0) {
this.timeIntervalCounter = this.timeIntervalSamples;
this.port.postMessage(['time', inputTime]);
}
}
// Re-fetch in case the memory changed (even though there *shouldn't* be any allocations)
memory = wasmModule.exports ? wasmModule.exports.memory.buffer : wasmModule.HEAP8.buffer;
outputList[0].forEach((channelBuffer, c) => {
let buffer = new Float32Array(memory, this.buffersOut[c], outputBlockSize);
channelBuffer.set(buffer);
});
return true;
}
}
registerProcessor(audioNodeKey, WasmProcessor);
}
/**
Creates a Stretch node
@async
@function SignalsmithStretch
@param {AudioContext} audioContext
@param {Object} options - channel configuration (as per [options]{@link https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletNode/AudioWorkletNode#options})
@returns {Promise<StretchNode>}
*/
SignalsmithStretch = ((Module, audioNodeKey) => {
if (typeof AudioWorkletProcessor === "function" && typeof registerProcessor === "function") {
// AudioWorklet side
registerWorkletProcessor(Module, audioNodeKey);
return {};
}
let promiseKey = Symbol();
let createNode = async function(audioContext, options) {
/**
@classdesc An `AudioWorkletNode` with Signalsmith Stretch extensions
@name StretchNode
@augments AudioWorkletNode
@property {number} inputTime - the current playback (in seconds) within the input audio stored by the node
*/
let audioNode;
options = options || {
numberOfInputs: 1,
numberOfOutputs: 1,
outputChannelCount: [2]
};
try {
audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
} catch (e) {
if (!audioContext[promiseKey]) {
let moduleUrl = createNode.moduleUrl;
if (!moduleUrl) {
let moduleCode = `(${registerWorkletProcessor})((_scriptName=>${Module})(),${JSON.stringify(audioNodeKey)})`;
moduleUrl = URL.createObjectURL(new Blob([moduleCode], {type: 'text/javascript'}));
}
audioContext[promiseKey] = audioContext.audioWorklet.addModule(moduleUrl);
}
await audioContext[promiseKey];
audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
}
// messages with Promise responses
let requestMap = {};
let idCounter = 0;
let timeUpdateCallback = null;
let post = (transfer, ...data) => {
let id = idCounter++;
return new Promise(resolve => {
requestMap[id] = resolve;
audioNode.port.postMessage([id].concat(data), transfer);
});
};
audioNode.inputTime = 0;
audioNode.port.onmessage = (event) => {
let data = event.data;
let id = data[0], value = data[1];
if (id == 'time') {
audioNode.inputTime = value;
if (timeUpdateCallback) timeUpdateCallback(value);
}
if (id in requestMap) {
requestMap[id](value);
delete requestMap[id];
}
};
return new Promise(resolve => {
requestMap['ready'] = remoteMethodKeys => {
Object.keys(remoteMethodKeys).forEach(key => {
let argCount = remoteMethodKeys[key];
audioNode[key] = (...args) => {
let transfer = null;
if (args.length > argCount) {
transfer = args.pop();
}
return post(transfer, key, ...args);
}
});
/** @lends StretchNode.prototype
@method setUpdateInterval
*/
audioNode.setUpdateInterval = (seconds, callback) => {
timeUpdateCallback = callback;
return post(null, 'setUpdateInterval', seconds);
}
resolve(audioNode);
}
});
};
return createNode;
})(SignalsmithStretch, "signalsmith-stretch");
// register as a CommonJS/AMD module
if (typeof exports === 'object' && typeof module === 'object') {
module.exports = SignalsmithStretch;
} else if (typeof define === 'function' && define['amd']) {
define([], () => SignalsmithStretch);
}