diff --git a/signalsmith-stretch.h b/signalsmith-stretch.h index 1af7061..1ff7b5f 100644 --- a/signalsmith-stretch.h +++ b/signalsmith-stretch.h @@ -93,14 +93,21 @@ struct SignalsmithStretch { template void seek(Inputs &&inputs, int inputSamples, double playbackRate) { inputBuffer.reset(); + Sample totalEnergy = 0; for (int c = 0; c < channels; ++c) { auto &&inputChannel = inputs[c]; auto &&bufferChannel = inputBuffer[c]; int startIndex = std::max(0, inputSamples - stft.windowSize() - stft.interval()); for (int i = startIndex; i < inputSamples; ++i) { - bufferChannel[i] = inputChannel[i]; + Sample s = inputChannel[i]; + totalEnergy += s*s; + bufferChannel[i] = s; } } + if (totalEnergy >= noiseFloor) { + silenceCounter = 0; + silenceFirst = true; + } inputBuffer += inputSamples; didSeek = true; seekTimeFactor = (playbackRate*stft.interval() > 1) ? 1/playbackRate : stft.interval(); diff --git a/web/Makefile b/web/Makefile new file mode 100644 index 0000000..3b80e49 --- /dev/null +++ b/web/Makefile @@ -0,0 +1,23 @@ +release/SignalsmithStretch.mjs: release/SignalsmithStretch.js + @ echo "let module = {}, exports = {};" > release/SignalsmithStretch.mjs + @ cat release/SignalsmithStretch.js >> release/SignalsmithStretch.mjs + @ echo "let _export=SignalsmithStretch;export default _export;" >> release/SignalsmithStretch.mjs + +release/SignalsmithStretch.js: emscripten/main.js web-wrapper.js ../signalsmith-stretch.h + @ cp emscripten/main.js release/SignalsmithStretch.js + @ cat web-wrapper.js >> release/SignalsmithStretch.js + +emscripten/main.js: emscripten/main.cpp + @ emscripten/compile.sh emscripten/main.cpp emscripten/main.js SignalsmithStretch + +## Development helpers + +jsdoc: release/SignalsmithStretch.js release/SignalsmithStretch.mjs + npx jsdoc release --verbose + +server: + python3 -m http.server + +watch: + # pip3 install watchdog + watchmedo shell-command --patterns='*.js;Makefile' --command='make jsdoc;echo "rebuilt"' --drop \ No newline at end of file diff --git a/web/Scope.mjs b/web/Scope.mjs new file mode 100644 index 0000000..fc467f1 --- /dev/null +++ b/web/Scope.mjs @@ -0,0 +1 @@ +var Scope=(()=>{var b="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(A={}){var g,B,C,Q=A,I=(Q.ready=new Promise((A,I)=>{g=A,B=I}),globalThis?.crypto,globalThis?.performance,Object.assign({},Q)),E=(A,I)=>{throw I},i="object"==typeof window,o="function"==typeof importScripts,s="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,e="";i||s||o?(i||o)&&(o?e=self.location.href:"undefined"!=typeof document&&document.currentScript&&(e=document.currentScript.src),e=0!==(e=b||e).indexOf("blob:")?e.substr(0,e.replace(/[?#].*/,"").lastIndexOf("/")+1):"",o)&&(C=A=>{var I=new XMLHttpRequest;return I.open("GET",A,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)}):(C=A=>"function"==typeof readbuffer?new Uint8Array(readbuffer(A)):(A=read(A,"binary"),assert("object"==typeof A),A),"undefined"==typeof clearTimeout&&(globalThis.clearTimeout=A=>{}),"undefined"==typeof setTimeout&&(globalThis.setTimeout=A=>("function"==typeof A?A:y)()),"function"==typeof quit&&(E=(A,I)=>{throw setTimeout(()=>{if(!(I instanceof M)){let A=I;I&&"object"==typeof I&&I.stack&&(A=[I,I.stack]),D("exiting due to exception: "+A)}quit(A)}),I}),"undefined"!=typeof print&&((console="undefined"==typeof console?{}:console).log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)),console.log.bind(console);var t,D=console.error.bind(console);Object.assign(Q,I),"object"!=typeof WebAssembly&&y("no native wasm support detected"),"undefined"==typeof atob&&((globalThis="undefined"!=typeof global&&"undefined"==typeof globalThis?global:globalThis).atob=function(A){var I,g,B,C,Q,E,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="",s=0;for(A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");B=i.indexOf(A.charAt(s++)),I=(15&(C=i.indexOf(A.charAt(s++))))<<4|(Q=i.indexOf(A.charAt(s++)))>>2,g=(3&Q)<<6|(E=i.indexOf(A.charAt(s++))),o+=String.fromCharCode(B<<2|C>>4),64!==Q&&(o+=String.fromCharCode(I)),64!==E&&(o+=String.fromCharCode(g)),sA.startsWith(R);function M(A){this.name="ExitStatus",this.message=`Program terminated with exit(${A})`,this.status=A}S(s="data:application/octet-stream;base64,AGFzbQEAAAABdhRgAX8AYAJ/fwBgAX8Bf2ADf39/AGAAAGADf39/AX9gAn9/AX9gBH9/f38AYAF/AX1gAAF/YAV/f39/fwBgAn5/AX9gA398fABgAn98AGAGf3x/f39/AX9gBH9/f38Bf2ACfH8BfGABfAF8YAJ9fQBgAn1/AX8CHwUBYQFhAAQBYQFiAAMBYQFjAAIBYQFkAAMBYQFlAAMDYF8AAgMKBAAFAwEGCwIBAQMDAgAGBgYBAwEBAQwEDQEFAQMDAQ4DAg8QBgIRBQMAAQEBAAAFAAIABgEAAQcIAAcAAQACAgABAgACBBIFCQAACQQEAgICBAATAQEAAAAAAAQFAXABHx8FBgEBCICAAgYIAX8BQdCbBAsHWRYBZgIAAWcAIAFoAGEBaQBgAWoAXwFrAF4BbABdAW0AXAFuAFoBbwBZAXAAWAFxAFcBcgBWAXMAVQF0AFQBdQBTAXYAUQF3AFABeABPAXkATgF6ADwBQQEACSQBAEEBCx5bUkxCOzk3NmNiTTJLSkkySEdGRURDQUA/Pj0oJzgK0oICX9ILAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUECcUUNASACIAIoAgAiAWsiAkGwFigCAEkNASAAIAFqIQACQAJAQbQWKAIAIAJHBEAgAUH/AU0EQCABQQN2IQQgAigCDCIBIAIoAggiA0YEQEGgFkGgFigCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAIoAhghBiACIAIoAgwiAUcEQCACKAIIIgMgATYCDCABIAM2AggMAwsgAkEUaiIEKAIAIgNFBEAgAigCECIDRQ0CIAJBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUoAgQiAUEDcUEDRw0CQagWIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAFIAA2AgAPC0EAIQELIAZFDQACQCACKAIcIgNBAnRB0BhqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQaQWQaQWKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAkYbaiABNgIAIAFFDQELIAEgBjYCGCACKAIQIgMEQCABIAM2AhAgAyABNgIYCyACKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBuBYoAgAgBUYEQEG4FiACNgIAQawWQawWKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJBtBYoAgBHDQZBqBZBADYCAEG0FkEANgIADwtBtBYoAgAgBUYEQEG0FiACNgIAQagWQagWKAIAIABqIgA2AgAgAiAAQQFyNgIEIAAgAmogADYCAA8LIAFBeHEgAGohACABQf8BTQRAIAFBA3YhBCAFKAIMIgEgBSgCCCIDRgRAQaAWQaAWKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAQbAWKAIAGiAFKAIIIgMgATYCDCABIAM2AggMAwsgBUEUaiIEKAIAIgNFBEAgBSgCECIDRQ0CIAVBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUgAUF+cTYCBCACIABBAXI2AgQgACACaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiA0ECdEHQGGoiBCgCACAFRgRAIAQgATYCACABDQFBpBZBpBYoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAwRAIAEgAzYCECADIAE2AhgLIAUoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIABBAXI2AgQgACACaiAANgIAIAJBtBYoAgBHDQBBqBYgADYCAA8LIABB/wFNBEAgAEF4cUHIFmohAQJ/QaAWKAIAIgNBASAAQQN2dCIAcUUEQEGgFiAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggPC0EfIQMgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAwsgAiADNgIcIAJCADcCECADQQJ0QdAYaiEBAkACQAJAQaQWKAIAIgRBASADdCIHcUUEQEGkFiAEIAdyNgIAIAEgAjYCACACIAE2AhgMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACEBA0AgASIEKAIEQXhxIABGDQIgA0EddiEBIANBAXQhAyAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAI2AhAgAiAENgIYCyACIAI2AgwgAiACNgIIDAELIAQoAggiACACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgADYCCAtBwBZBwBYoAgBBAWsiAEF/IAAbNgIACws1AQF/QQEgACAAQQFNGyEAAkADQCAAEDoiAQ0BQcwbKAIAIgEEQCABEQQADAELCxAAAAsgAQvAAQEDfyAALQAAQSBxRQRAAkAgAiAAKAIQIgMEfyADBSAAEC4NASAAKAIQCyAAKAIUIgRrSwRAIAAgASACIAAoAiQRBQAaDAELAkACQCAAKAJQQQBIDQAgAkUNACACIQMDQCABIANqIgVBAWstAABBCkcEQCADQQFrIgMNAQwCCwsgACABIAMgACgCJBEFACADSQ0CIAIgA2shAiAAKAIUIQQMAQsgASEFCyAEIAUgAhAMIAAgACgCFCACajYCFAsLC28BAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbEAsaIAFFBEADQCAAIAVBgAIQByADQYACayIDQf8BSw0ACwsgACAFIAMQBwsgBUGAAmokAAsFABAAAAsGACAAEAUL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAAL/AMBAn8gAkGABE8EQCAAIAEgAhADDwsgACACaiEDAkAgACABc0EDcUUEQAJA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CyAAIAI2AgAgACAAKAIIQYCAgIB4cSAEKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAEQRBqJAAMAQsQCQALIAAgATYCBAsgBQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgZqIQMgByEBIwBBEGsiBCQAIARBADoADwNAIAEEQCADIAQtAA86AAAgAUEBayEBIANBAWohAwwBCwsgBEEQaiQAIAAgBSAHaiIAECQgCEEAOgAPIAAgBmogCC0ADzoAAAsgCEEQaiQADwsgAAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIAEQJgsLACABIAIgABAjGgsWACACEAYhASAAIAI2AgQgACABNgIAC3oBA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC+MDAgN/AXwgACAAKAIIIgJBAWoiATYCCAJAAkACQAJAAkACQAJAAn8gACgCACgCACIDIAJBA3RqKwMAIgSZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4Cw4GAAECAwQFBgsgAyABQQN0aisDACIERAAAAAAAABBAYQRAA0AgABAWIAAQFiAAKAIAKAIAIAAoAggiAUEDdGorAwAiBEQAAAAAAAAQQGENAAsLIAAgAUEBajYCCCAERAAAAAAAAPA/YQ0FQdIIIAQgAbcQHw8LQdcJIAK3RAAAAAAAAAAAEB8PCyAAIAJBAmo2AggCfyADIAFBA3RqKwMAIgREAAAAAAAA8EFjIAREAAAAAAAAAABmcQRAIASrDAELQQALIgJFDQNBACEBA0AgABAWIAFBAWoiASACRw0ACwwDCyAAIAJBAmo2AggPCyAAIAJBAmo2AggCfyADIAFBA3RqKwMAIgREAAAAAAAA8EFjIAREAAAAAAAAAABmcQRAIASrDAELQQALIgFFDQEgACABIAJqQQJqNgIIDwsgACACQQJqNgIIAn8gAyABQQN0aisDACIERAAAAAAAAPBBYyAERAAAAAAAAAAAZnEEQCAEqwwBC0EACyIBRQ0AIAAgASACakECajYCCAsLGwAgACABQcCEPW4iABAOIAEgAEHAhD1saxAYCxsAIAAgAUGQzgBuIgAQDiABIABBkM4AbGsQGQsZACAAIAFB5ABuIgAQDiABIABB5ABsaxAOC+4FAQd/IwBBIGsiAyQAAkAgA0EVaiIGIgIgA0EgaiIIIgVGDQAgAUEATg0AIAJBLToAACACQQFqIQJBACABayEBCyADAn8gBSACayIHQQlMBEBBPSAHQSAgAUEBcmdrQdEJbEEMdSIEIARBAnRBwA9qKAIAIAFNakgNARoLAn8gAUG/hD1NBEAgAUGPzgBNBEAgAUHjAE0EQCABQQlNBEAgAiABQTBqOgAAIAJBAWoMBAsgAiABEA4MAwsgAUHnB00EQCACIAFB5ABuIgRBMGo6AAAgAkEBaiABIARB5ABsaxAODAMLIAIgARAZDAILIAFBn40GTQRAIAIgAUGQzgBuIgRBMGo6AAAgAkEBaiABIARBkM4AbGsQGQwCCyACIAEQGAwBCyABQf/B1y9NBEAgAUH/rOIETQRAIAIgAUHAhD1uIgRBMGo6AAAgAkEBaiABIARBwIQ9bGsQGAwCCyACIAEQFwwBCyABQf+T69wDTQRAIAIgAUGAwtcvbiIEQTBqOgAAIAJBAWogASAEQYDC1y9saxAXDAELIAIgAUGAwtcvbiICEA4gASACQYDC1y9saxAXCyEFQQALNgIQIAMgBTYCDCADKAIMIQcjAEEQayIEJAAjAEEQayIDJAAgACEBAkAgByAGIgBrIgVB7////wdNBEACQCAFQQtJBEAgASABLQALQYABcSAFQf8AcXI6AAsgASABLQALQf8AcToACyABIQIMAQsgA0EIaiABIAVBC08EfyAFQRBqQXBxIgYgBkEBayIGIAZBC0YbBUEKC0EBahAUIAMoAgwaIAEgAygCCCICNgIAIAEgASgCCEGAgICAeHEgAygCDEH/////B3FyNgIIIAEgASgCCEGAgICAeHI2AgggASAFNgIECwNAIAAgB0cEQCACIAAtAAA6AAAgAkEBaiECIABBAWohAAwBCwsgA0EAOgAHIAIgAy0ABzoAACADQRBqJAAMAQsQCQALIARBEGokACAIJAAL2QEBAn8jAEEQayIEJAACQAJAIAJBC0kEQCAAIgMgAC0AC0GAAXEgAkH/AHFyOgALIAAgAC0AC0H/AHE6AAsMAQsgAkHv////B0sNASAEQQhqIAAgAkELTwR/IAJBEGpBcHEiAyADQQFrIgMgA0ELRhsFQQoLQQFqEBQgBCgCDBogACAEKAIIIgM2AgAgACAAKAIIQYCAgIB4cSAEKAIMQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAI2AgQLIAMgASACQQFqEBMgBEEQaiQADwsQCQAL+QMCB38BfAJAAkACQCAAKAIAIgQoAgQiAiAEKAIIIgVJBEAgAkKAgICAgICAhMAANwMAIAQgAkEIajYCBAwBCyACIAQoAgAiBmtBA3UiB0EBaiIDQYCAgIACTw0BQf////8BIAUgBmsiBUECdSIIIAMgAyAISRsgBUH4////B08bIgUEfyAFQYCAgIACTw0DIAVBA3QQBgVBAAsiCCAHQQN0aiIDQoCAgICAgICEwAA3AwAgA0EIaiEHIAIgBkcEQANAIANBCGsiAyACQQhrIgIrAwA5AwAgAiAGRw0ACwsgBCAIIAVBA3RqNgIIIAQgBzYCBCAEIAM2AgAgBkUNACAGEAULIAEoAgC3IQkgACgCACIAKAIEIgIgACgCCCIESQRAIAIgCTkDACAAIAJBCGo2AgQPCyACIAAoAgAiAWtBA3UiBkEBaiIDQYCAgIACTw0AQf////8BIAQgAWsiBEECdSIFIAMgAyAFSRsgBEH4////B08bIgQEfyAEQYCAgIACTw0CIARBA3QQBgVBAAsiBSAGQQN0aiIDIAk5AwAgA0EIaiEGIAEgAkcEQANAIANBCGsiAyACQQhrIgIrAwA5AwAgASACRw0ACwsgACAFIARBA3RqNgIIIAAgBjYCBCAAIAM2AgAgAQRAIAEQBQsPCxAAAAsQCQALgwIBB38gASAAKAIIIgIgACgCBCIDa0EDdU0EQCAAIAEEfyADQQAgAUEDdCIAEAsgAGoFIAMLNgIEDwsCQCADIAAoAgAiBWtBA3UiByABaiIEQYCAgIACSQRAQf////8BIAIgBWsiAkECdSIIIAQgBCAISRsgAkH4////B08bIgQEQCAEQYCAgIACTw0CIARBA3QQBiEGCyAHQQN0IAZqIgJBACABQQN0IgEQCyABaiEBIAMgBUcEQANAIAJBCGsiAiADQQhrIgMrAwA5AwAgAyAFRw0ACwsgACAGIARBA3RqNgIIIAAgATYCBCAAIAI2AgAgBQRAIAUQBQsPCxAAAAsQCQALqgMBB38gASAAKAIIIgQgACgCBCICa0EMbU0EQCAAIAEEfyACQQAgAUEMbEEMayIAIABBDHBrQQxqIgAQCyAAagUgAgs2AgQPCwJAAkACQCACIAAoAgAiBmtBDG0iBSABaiIDQdaq1aoBSQRAQdWq1aoBIAQgBmtBDG0iBEEBdCIHIAMgAyAHSRsgBEGq1arVAE8bIgQEQCAEQdaq1aoBTw0CIARBDGwQBiEICyAIIAVBDGxqIgNBACABQQxsQQxrIgEgAUEMcGtBDGoiARALIgcgAWohBSAIIARBDGxqIQEgAiAGRg0CA0AgA0EMayIDQQA2AgggAyACQQxrIgIoAgA2AgAgAyACKAIENgIEIAMgAigCCDYCCCACQQA2AgggAkIANwIAIAIgBkcNAAsgACABNgIIIAAoAgQhASAAIAU2AgQgACgCACECIAAgAzYCACABIAJGDQMDQCABQQxrIgAoAgAiAwRAIAFBCGsgAzYCACADEAULIAAiASACRw0ACwwDCxAAAAsQCQALIAAgATYCCCAAIAU2AgQgACAHNgIACyACBEAgAhAFCwvqAQEBfyMAQSBrIgMkAAJAIAEgAZxhBEAgA0EUagJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CxAaDAELIANBFGogARAhCwJAIAIgApxhBEAgA0EIagJ/IAKZRAAAAAAAAOBBYwRAIAKqDAELQYCAgIB4CxAaDAELIANBCGogAhAhCyAAIAMoAhQgA0EUaiADLAAfQQBIGyIAQYELIAAbIAMoAgggA0EIaiADLAATQQBIGyIAQYELIAAbEAEgAywAE0EASARAIAMoAggQBQsgAywAH0EASARAIAMoAhQQBQsgA0EgaiQAC64GAQp/IwBBEGsiBiQAQfAUQgA3AwBB6BRCgoCAgCA3AwBB4BRCgICAgICA3PPAADcDAEGIFUGAAjYCAEH4FEIANwMAQYAVQgA3AwBBmBVBADYCAEGQFUIANwIAQaQVQQA2AgBBnBVCADcCAEGwFUEANgIAQagVQgA3AgBBvBVBADYCAEG0FUIANwIAQcwVQQA2AgBBxBVCADcCAEHYFUEANgIAQdAVQgA3AgBB5BVBADYCAEHcFUIANwIAQYAWQgA3AgBB+BVCADcCAEHwFUIANwIAQZgWQQA2AgBBkBZCADcCAEGIFkIANwIAIAZB7wk2AgwCQEHgFSgCACIBQeQVKAIASQRAIAEgBkEMahAzQeAVIAFBKGo2AgAMAQsgBkEMaiEDAkACQAJAQeAVKAIAQdwVKAIAIgFrQShtIgJBAWoiAEHnzJkzSQRAQebMmTNB5BUoAgAgAWtBKG0iBEEBdCIBIAAgACABSRsgBEGz5swZTxsiAAR/IABB58yZM08NAiAAQShsEAYFQQALIgQgAkEobGoiASADEDMgBCAAQShsaiEHIAFBKGohCEHgFSgCACIAQdwVKAIAIgNGDQIDQCABIgJBKGsiASAAIgRBKGsiACkDADcDACABIAAoAgg2AgggAEIANwMAIABBADYCCAJAIAAoAiAiCUUEQCACQQhrQQA2AgAMAQsgAkEIayEFIARBGGsgCUYEQCAFIAJBGGsiAjYCACAAKAIgIgQgAiAEKAIAKAIMEQEADAELIAUgCTYCACAAQQA2AiALIAAgA0cNAAtB5BUgBzYCAEHgFSgCACEDQeAVIAg2AgBB3BUoAgAhAEHcFSABNgIAIAAgA0YNAwNAAkACQCADQShrIgIoAiAiASADQRhrIgRGBEBBBCEFIAQhAQwBC0EFIQUgAUUNAQsgASABKAIAIAVBAnRqKAIAEQAACyADQR1rLAAAQQBIBEAgAigCABAFCyACIgMgAEcNAAsMAwsQAAALEAkAC0HkFSAHNgIAQeAVIAg2AgBB3BUgATYCAAsgAARAIAAQBQsLIAZBEGokAEGoG0GwGjYCAEHgGkEqNgIAC/UFAQx/IwBBEGsiCiQAIwBBEGsiAyQAIApBBGoiBCICQgA3AgAgAkEANgIIIANBEGokACACIAItAAtBB3YEfyACKAIIQf////8HcUEBawVBCgsQEiMAQRBrIgckAAJ/IAQtAAtBB3YEQCAEKAIEDAELIAQtAAtB/wBxCyEIA0ACQAJ/IAQtAAtBB3YEQCAEKAIADAELIAQLIQMgByABOQMAIAQCfyMAQRBrIgskACALIAc2AgwjAEGgAWsiAiQAIAIgAyACQZ4BaiAIQQFqIgMbIgY2ApQBQX8hBSACIANBAWsiCUEAIAMgCU8bNgKYASACQQBBkAEQCyICQX82AkwgAkEeNgIkIAJBfzYCUCACIAJBnwFqNgIsIAIgAkGUAWo2AlQCQCADQQBIBEBBnBZBPTYCAAwBCyAGQQA6AABBACEGIwBB0AFrIgMkACADIAc2AswBIANBoAFqIgVBAEEoEAsaIAMgAygCzAE2AsgBAkBBACADQcgBaiADQdAAaiAFECtBAEgEQEF/IQUMAQsgAigCTEEASCENIAIgAigCACIMQV9xNgIAAn8CQAJAIAIoAjBFBEAgAkHQADYCMCACQQA2AhwgAkIANwMQIAIoAiwhBiACIAM2AiwMAQsgAigCEA0BC0F/IAIQLg0BGgsgAiADQcgBaiADQdAAaiADQaABahArCyEFIAYEQCACQQBBACACKAIkEQUAGiACQQA2AjAgAiAGNgIsIAJBADYCHCACKAIUIQYgAkIANwMQIAVBfyAGGyEFCyACIAIoAgAiBiAMQSBxcjYCAEF/IAUgBkEgcRshBSANDQALIANB0AFqJAALIAJBoAFqJAAgC0EQaiQAIAVBAE4EQCAFIAhNDQIgBQwBCyAIQQF0QQFyCyIIEBIMAQsLIAQgBRASIAAgBCkCADcCACAAIAQoAgg2AgggBEIANwIAIARBADYCCCAHQRBqJAAgBC0AC0EHdgRAIAQoAggaIAQoAgAQBQsgCkEQaiQACwgAIAAgARAaC+YBAQV/IwBBEGsiBSQAIwBBIGsiAyQAIwBBEGsiBCQAIAQgADYCDCAEIAAgAWo2AgggAyAEKAIMNgIYIAMgBCgCCDYCHCAEQRBqJAAgAygCGCEEIAMoAhwhBiMAQRBrIgEkACABIAY2AgwgAiAEIAYgBGsiBBAlIAEgAiAEajYCCCADIAEoAgw2AhAgAyABKAIINgIUIAFBEGokACADIAAgAygCECAAa2o2AgwgAyACIAMoAhQgAmtqNgIIIAUgAygCDDYCCCAFIAMoAgg2AgwgA0EgaiQAIAUoAgwhByAFQRBqJAAgBws4ACAALQALQQd2BEAgACABNgIEDwsgACAALQALQYABcSABQf8AcXI6AAsgACAALQALQf8AcToACwsPACACBEAgACABIAIQMQsLLgEBfyMAQRBrIgMkACAAIAIQJCADQQA6AA8gASACaiADLQAPOgAAIANBEGokAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCADIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAFNwMIIAgpAwhCBIYgCCkDACIDQjyIhCECIAgpAxAgCCkDGIRCAFKtIANC//////////8Pg4QiA0KBgICAgICAgAhaBEAgAkIBfCECDAELIANCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgCEEgaiQAIAkgAiAGQoCAgICAgICAgH+DhL85AwALnRgDE38BfAJ+IwBBsARrIgwkACAMQQA2AiwCQCABvSIaQgBTBEBBASEPQaoIIRMgAZoiAb0hGgwBCyAEQYAQcQRAQQEhD0GtCCETDAELQbAIQasIIARBAXEiDxshEyAPRSEVCwJAIBpCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiAPQQNqIgMgBEH//3txEAggACATIA8QByAAQYEJQeAKIAVBIHEiBRtB0AlB5AogBRsgASABYhtBAxAHIABBICACIAMgBEGAwABzEAggAyACIAIgA0gbIQkMAQsgDEEQaiESAkACfwJAIAEgDEEsahAsIgEgAaAiAUQAAAAAAAAAAGIEQCAMIAwoAiwiBkEBazYCLCAFQSByIg5B4QBHDQEMAwsgBUEgciIOQeEARg0CIAwoAiwhCkEGIAMgA0EASBsMAQsgDCAGQR1rIgo2Aiwg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IAMoAgwiASADKAIQIgBHBEADQCAGIAEQESABQQxqIgEgAEcNAAsLDAILEAAACxAJAAtB7BUoAgAhACADKAIMIQEgBkGACBANIAYgASAAQQxsahARIAMoAgwiAQRAIAMoAhAiAiABIgBHBEADQCACQQxrIQAgAkEBaywAAEEASARAIAAoAgAQBQsgACICIAFHDQALIAMoAgwhAAsgAyABNgIQIAAQBQsgA0EgaiQAQQAL5AoCC38BfCMAQRBrIgEkACABQQE6AAwgAUHEFTYCCCABQQhqIgpBsQkQDQJAAkACQAJAIAooAgAiBCgCBCIGIAQoAggiA0kEQCAGQoCAgICAgICAwAA3AwAgBCAGQQhqNgIEDAELIAYgBCgCACIFa0EDdSIHQQFqIgJBgICAgAJPDQFB/////wEgAyAFayIDQQJ1IgggAiACIAhJGyADQfj///8HTxsiAwR/IANBgICAgAJPDQMgA0EDdBAGBUEACyIIIAdBA3RqIgJCgICAgICAgIDAADcDACACQQhqIQcgBSAGRwRAA0AgAkEIayICIAZBCGsiBisDADkDACAFIAZHDQALCyAEIAggA0EDdGo2AgggBCAHNgIEIAQgAjYCACAFRQ0AIAUQCgsgACgCCCAAKAIEa0EMbbghDQJAIAooAgAiBCgCBCIGIAQoAggiA0kEQCAGIA05AwAgBCAGQQhqNgIEDAELIAYgBCgCACIFa0EDdSIHQQFqIgJBgICAgAJPDQFB/////wEgAyAFayIDQQJ1IgggAiACIAhJGyADQfj///8HTxsiAwR/IANBgICAgAJPDQMgA0EDdBAGBUEACyIIIAdBA3RqIgIgDTkDACACQQhqIQcgBSAGRwRAA0AgAkEIayICIAZBCGsiBisDADkDACAFIAZHDQALCyAEIAggA0EDdGo2AgggBCAHNgIEIAQgAjYCACAFRQ0AIAUQCgsgACgCBCIGIAAoAggiCEcEQANAAkACQAJAAkAgCigCACIEKAIEIgAgBCgCCCIDSQRAIABCgICAgICAgIrAADcDACAEIABBCGo2AgQMAQsgACAEKAIAIgVrQQN1IgdBAWoiAkGAgICAAk8NAUH/////ASADIAVrIgNBAnUiCSACIAIgCUkbIANB+P///wdPGyIDBH8gA0GAgICAAk8NAyADQQN0EAYFQQALIgkgB0ED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")||(s=e+s);var U,k,Y=A=>{for(;0{y("OOM")},f="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,J=(A,I)=>{if(A){for(var g=w,B=A,C=B+I,Q=B;g[Q]&&!(C<=Q);)++Q;if(16>10,56320|1023&o)))):E+=String.fromCharCode(s)}return E}return""},q=(A,I)=>{A=a=A,E(a=A,new M(A))},m=A=>{if(A instanceof M||"unwind"==A)return a;E(1,A)},H=(n++,U={a:{a:()=>{y("")},b:function(A,I,g){A=J(A,1e3),I=J(I,1e3),g=J(g,1e3),console.error(A,I,g)},d:(A,I,g)=>w.copyWithin(A,I,I+g),c:I=>{for(var g,A=w.length,B=2147483648,C=(B<(I>>>=0)&&L(),1);C<=4;C*=2){var Q=A*(1+.5/C),Q=Math.min(Q,I+100663296);if((()=>{var A=(Math.min(B,(g=Math.max(I,Q))+(65536-g%65536)%65536)-t.buffer.byteLength+65535)/65536;try{return t.grow(A),F(),1}catch(A){}})())return!0}L()},e:function(A,I,g){A=J(A,1e3),I=J(I,1e3),g=J(g,1e3),console.log(A,I,g)}}},i=function(A){A=A.instance,H=A.exports,t=H.f,F(),A=H.g,G.unshift(A),0==--n&&(null!==h&&(clearInterval(h),h=null),c)&&(A=c,c=null,A())},k=s,Promise.resolve().then(()=>{var A=k,I=function(A){if(S(A)){for(var A=A.slice(R.length),I=atob(A),g=new Uint8Array(I.length),B=0;BWebAssembly.instantiate(A,U)).then(A=>A).then(i,A=>{D("failed to asynchronously prepare wasm: "+A),y(A)}).catch(B),{});Q._select=A=>(Q._select=H.h)(A),Q._configureInputChannels=A=>(Q._configureInputChannels=H.i)(A),Q._configureOutputChannels=A=>(Q._configureOutputChannels=H.j)(A),Q._configureAuxInputChannels=(A,I)=>(Q._configureAuxInputChannels=H.k)(A,I),Q._configureAuxOutputChannels=(A,I)=>(Q._configureAuxOutputChannels=H.l)(A,I),Q._configure=(A,I)=>(Q._configure=H.m)(A,I),Q._reset=()=>(Q._reset=H.n)(),Q._getInputBuffer=A=>(Q._getInputBuffer=H.o)(A),Q._getOutputBuffer=A=>(Q._getOutputBuffer=H.p)(A),Q._process=A=>(Q._process=H.q)(A),Q._writeState=()=>(Q._writeState=H.r)(),Q._readState=()=>(Q._readState=H.s)(),Q._getStateLength=()=>(Q._getStateLength=H.t)(),Q._setStateLength=A=>(Q._setStateLength=H.u)(A),Q._getStatePointer=()=>(Q._getStatePointer=H.v)(),Q._messageConnect=(A,I,g)=>(Q._messageConnect=H.w)(A,I,g),Q._messageMeters=(A,I)=>(Q._messageMeters=H.x)(A,I),Q._webInterface=()=>(Q._webInterface=H.y)();var K,d=Q._main=(A,I)=>(d=Q._main=H.z)(A,I);function l(){0Scope),(Scope=((A,t)=>{let C=new Float64Array(32),Q=0;function E(A){Q=0;let g=A=>{var I;Q>=C.length&&((I=new Float64Array(2*C.length)).set(C),C=I),C[Q++]=A};function B(I){if(ArrayBuffer.isView(I)&&"number"==typeof I.length){g(5),g(I.length);for(let A=0;A{let I=e.resources,g=("function"==typeof I&&I(e.resources=I={}),new URL("./",C));return"string"==typeof I?g=new URL(I,g):(A in I||!A&&o.page in I)&&(A=I[A||o.page]),A=new URL(A||g,g),/\/$/.test(A.pathname)&&(A=new URL(o.page,A)),Q.closeInterface(),(E=document.createElement("iframe")).dataset.defaultWidth=o.width,E.dataset.defaultHeight=o.height,E.src=A,i=A=>{A.source==E?.contentWindow&&(A=[].concat(A.data),Q.port.postMessage(A))},addEventListener("message",i),E},Q.closeInterface=()=>{E&&(removeEventListener("message",i),E.remove(),E.src="data:text/html,Interface%20closed",E=null)},{});return Q.getState=()=>new Promise(g=>{var A=Math.random();s[A]=A=>{var I={};D(I,A.readState,0),g(I)},Q.port.postMessage(["readState",A])}),Q.setState=I=>(E?.contentWindow&&E.contentWindow.postMessage(["state",I]),new Promise(g=>{var A=Math.random();s[A]=A=>{var I={};D(I,A.state,0),g(I)},Q.port.postMessage(["state",I,A])})),new Promise(g=>{Q.port.onmessage=A=>{var I;(A=A.data).messageId&&A.messageId in s&&(I=s[A.messageId],delete s[A.messageId],I(A)),A.ready&&(g&&g(Q),g=null),A.interface&&(o=A.interface),"key"in A&&(Q.effectKey=A.key),A.keys&&(Q.effectKeys=A.keys),A.state&&E&&(D(I={},A.state,0),E.contentWindow.postMessage(["state",I,!!A.complete])),A.log&&console.log("message: ",A.log),A.meters&&E&&(D(I={},A.meters,0),E.contentWindow.postMessage(["meters",I],{transfer:[A.meters.buffer]}))}})};return e.resources="./",e.scriptUrl=document.currentScript?.src||null,e}{class I extends AudioWorkletProcessor{constructor(Q){super(Q),this.wasmReady=!1,this.wasmModule=null,this.inputBufferPointers=[],this.outputBufferPointers=[],this.configuredOK=!1,this.maxBlockSize=256,this.averageProcessMs=10,A().then(C=>{this.wasmModule=C,this.wasmReady=!0,C._main();var A={};D(A,this.getPackedState(),0);let I=Q.processorOptions[0];0<=(g=A.keys.indexOf(I))?C._select(g):(I=A.defaultKey,1{var A=(I=I.data).shift();if("connect"==A){var g=I[0].split(".").map(parseInt),g=(C._messageConnect(g[0],g[1],g[2]),this.getPackedState().slice());this.port.postMessage({state:g,complete:!0},[g.buffer])}else if("meters"==A)C._messageMeters(I[0]||0,I[1]||0);else if("state"==A){var g=I[0],B=I[1];let A=E(g);this.wasmModule._setStateLength(A.length),this.getPackedState().set(A),this.wasmModule._writeState(),!(A=this.getPackedState()).length&&null==B||(A=A.slice(),this.port.postMessage({state:A,messageId:B},[A.buffer]))}else{if("readState"!=A)throw Error("unknown STFX message type: "+A);this.wasmModule._readState(),g=this.getPackedState().slice(),this.port.postMessage({readState:g,messageId:I[0]},[g.buffer])}}})}getPackedState(){var A=this.wasmModule,I=this.wasmModule._getStateLength(),g=this.wasmModule._getStatePointer(I),A=(A.exports?A.exports.memory:A.HEAP8).buffer;return new Float64Array(A,g,I)}reconfigure(){let g=this.wasmModule;g._configureInputChannels(this.inputBufferPointers.length),g._configureOutputChannels(this.outputBufferPointers.length),this.configuredOK=g._configure(sampleRate,this.maxBlockSize),this.configuredOK&&(this.inputBufferPointers.forEach((A,I)=>{this.inputBufferPointers[I]=g._getInputBuffer(I)}),this.outputBufferPointers.forEach((A,I)=>{this.outputBufferPointers[I]=g._getOutputBuffer(I)}))}process(A,I,g){if(this.wasmReady){var C=this.wasmModule;let B=0,g=!1;if(A.forEach((A,I)=>{A.length&&(B=A[0].length),0==I&&this.inputBufferPointers.length!=A.length&&(this.inputBufferPointers=A.map(A=>0),g=!0)}),I.forEach((A,I)=>{A.length&&(B=A[0].length),0==I&&this.outputBufferPointers.length!=A.length&&(this.outputBufferPointers=A.map(A=>0),g=!0)}),g&&(this.configuredOK||this.port.postMessage({log:["reconfiguring",this.inputBufferPointers.length,this.outputBufferPointers.length]}),this.reconfigure(),this.configuredOK||this.port.postMessage({error:"configuration failed",log:["buffer pointers",this.inputBufferPointers,this.outputBufferPointers]})),this.configuredOK){let g=(C.exports?C.exports.memory:C.HEAP8).buffer;A.forEach((A,I)=>{0==I&&A.forEach((A,I)=>{I=this.inputBufferPointers[I],new Float32Array(g,I,B).set(A)})}),g=null,C._process(B)&&(A=this.getPackedState().slice(),this.port.postMessage({meters:A},[A.buffer])),g=(C.exports?C.exports.memory:C.HEAP8).buffer,I.forEach((A,I)=>{0==I&&A.forEach((A,I)=>{I=this.outputBufferPointers[I],I=new Float32Array(g,I,B),A.set(I)})})}else I.forEach(A=>{A.forEach(A=>{A.fill(0)})})}else I.forEach(A=>{A.forEach(A=>{A.fill(0)})});return!0}}return registerProcessor(t,I),{}}})(Scope,"stfx-Scope")).scriptUrl=import.meta.url;let Scope_export=Scope;export default Scope_export;Scope.resources=A=>{var I=URL.createObjectURL(new Blob(['(s=>{if(!s.STFX){let a={},n,o=e=>{n.postMessage(e,"*")};s.STFX={connect:(e,t)=>{if(a=t,n=s.parent,s==n)throw Error(document.body.textContent="not hosted");o(["connect",e])},state:e=>{o(["state",e])},meters:(e,t)=>{o(["meters",e||0,t||0])}},addEventListener("message",e=>{e.source==n&&(e=[].concat(e.data),a[e[0]].apply(a,e.slice(1)))})}})(this),STFX.autoMeters=(e,t)=>{e=e||2,t=t||30;let o=100,s=Date.now(),r=!0;!function a(){let n=setTimeout(e=>r=!1,200);requestAnimationFrame(e=>{clearTimeout(n);var t=Date.now();r&&(o+=(t-s-o)/30),t-s<200&&(r=!0),s=t,a()})}(),setInterval(()=>{r&&STFX.meters(Math.max(o*e,t),500)},250)};'],{type:"text/javascript"}));A["scope.html"]=URL.createObjectURL(new Blob([` Scope `],{type:"text/html"}))}; diff --git a/web/demo.html b/web/demo.html new file mode 100644 index 0000000..157d471 --- /dev/null +++ b/web/demo.html @@ -0,0 +1,221 @@ + + + + Signalsmith Stretch Web Audio demo + + + + + + +
+ + + + + + + + + + + + + + +
+ + + diff --git a/web/emscripten/compile.sh b/web/emscripten/compile.sh new file mode 100755 index 0000000..60795e5 --- /dev/null +++ b/web/emscripten/compile.sh @@ -0,0 +1,53 @@ +# compile.sh main.cpp out.js ModuleName + +export SCRIPT_DIR=`dirname "$0"` + +if [ -z "$EMSDK_DIR" ] +then + export EMSDK_DIR="${SCRIPT_DIR}/emsdk" +fi + +if ! test -d "${EMSDK_DIR}" +then + echo "SDK not found - cloning from Github" + git clone https://github.com/emscripten-core/emsdk.git "${EMSDK_DIR}" + cd "${EMSDK_DIR}" && git pull && ./emsdk install latest && ./emsdk activate latest +fi +EMSDK_QUIET=1 . "${EMSDK_DIR}/emsdk_env.sh" \ + && emcc --check \ + && python3 --version \ + && cmake --version + +if [ "$#" -le 1 ]; then + echo "Missing .cpp / .js arguments" + exit 1 +fi + +INPUT_CPP="$1" +OUTPUT_JS="$2" +mkdir -p $(dirname $OUTPUT_JS) + +MODULE_NAME="$3" +if [ -z "$MODULE_NAME" ] +then + MODULE_NAME=$(basename "$OUTPUT_JS" ".${OUTPUT_JS##*.}") +fi + +echo "$MODULE_NAME: $INPUT_CPP -> $OUTPUT_JS" + +# -sSTRICT -sASSERTIONS --closure=0 \ + +em++ \ + $INPUT_CPP -o "${OUTPUT_JS}" \ + -sEXPORT_NAME=$MODULE_NAME -DEXPORT_NAME=$MODULE_NAME \ + -I "${SCRIPT_DIR}" \ + -std=c++11 -O3 -ffast-math -fno-exceptions -fno-rtti \ + --pre-js "${SCRIPT_DIR}/pre.js" --closure 0 \ + -Wall -Wextra -Wfatal-errors -Wpedantic -pedantic-errors \ + -sSINGLE_FILE=1 -sMODULARIZE -sENVIRONMENT=web,worker,shell -sNO_EXIT_RUNTIME=1 \ + -sFILESYSTEM=0 -sEXPORTED_RUNTIME_METHODS=HEAP8,UTF8ToString \ + -sINITIAL_MEMORY=512kb -sALLOW_MEMORY_GROWTH=1 -sMEMORY_GROWTH_GEOMETRIC_STEP=0.5 -sABORTING_MALLOC=1 \ + -sSTRICT=1 -sDYNAMIC_EXECUTION=0 + +# Remove last 4 lines (UMD definition) +node -e "let f=process.argv[1],fs=require('fs');fs.writeFileSync(f,fs.readFileSync(f,'utf8').split('\n').slice(0,-5).join('\n')+'\n')" "${OUTPUT_JS}" diff --git a/web/emscripten/main.cpp b/web/emscripten/main.cpp new file mode 100644 index 0000000..c52cfe6 --- /dev/null +++ b/web/emscripten/main.cpp @@ -0,0 +1,66 @@ +#include "../../signalsmith-stretch.h" +#include + +#include +int main() {} + +using Sample = float; +using Stretch = signalsmith::stretch::SignalsmithStretch; +Stretch stretch; + +// Allocates memory for buffers, and returns it +std::vector buffers; +std::vector buffersIn, buffersOut; + +extern "C" { + Sample * EMSCRIPTEN_KEEPALIVE setBuffers(int channels, int length) { + buffers.resize(length*channels*2); + Sample *data = buffers.data(); + for (int c = 0; c < channels; ++c) { + buffersIn.push_back(data + length*c); + buffersOut.push_back(data + length*(c + channels)); + } + return data; + } + + int EMSCRIPTEN_KEEPALIVE blockSamples() { + return stretch.blockSamples(); + } + int EMSCRIPTEN_KEEPALIVE intervalSamples() { + return stretch.intervalSamples(); + } + int EMSCRIPTEN_KEEPALIVE inputLatency() { + return stretch.inputLatency(); + } + int EMSCRIPTEN_KEEPALIVE outputLatency() { + return stretch.outputLatency(); + } + void EMSCRIPTEN_KEEPALIVE reset() { + stretch.reset(); + } + void EMSCRIPTEN_KEEPALIVE presetDefault(int nChannels, Sample sampleRate) { + stretch.presetDefault(nChannels, sampleRate); + } + void EMSCRIPTEN_KEEPALIVE presetCheaper(int nChannels, Sample sampleRate) { + stretch.presetDefault(nChannels, sampleRate); + } + void EMSCRIPTEN_KEEPALIVE configure(int nChannels, int blockSamples, int intervalSamples) { + stretch.configure(nChannels, blockSamples, intervalSamples); + } + void EMSCRIPTEN_KEEPALIVE setTransposeFactor(Sample multiplier, Sample tonalityLimit) { + stretch.setTransposeFactor(multiplier, tonalityLimit); + } + void EMSCRIPTEN_KEEPALIVE setTransposeSemitones(Sample semitones, Sample tonalityLimit) { + stretch.setTransposeSemitones(semitones, tonalityLimit); + } + // We can't do setFreqMap() + void EMSCRIPTEN_KEEPALIVE seek(int inputSamples, double playbackRate) { + stretch.seek(buffersIn, inputSamples, playbackRate); + } + void EMSCRIPTEN_KEEPALIVE process(int inputSamples, int outputSamples) { + stretch.process(buffersIn, inputSamples, buffersOut, outputSamples); + } + void EMSCRIPTEN_KEEPALIVE flush(int outputSamples) { + stretch.flush(buffersOut, outputSamples); + } +} diff --git a/web/emscripten/main.js b/web/emscripten/main.js new file mode 100644 index 0000000..0004d88 --- /dev/null +++ b/web/emscripten/main.js @@ -0,0 +1,15 @@ + +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;iDate.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(ifilename.startsWith(dataURIPrefix);function findWasmBinary(){var f="data:application/octet-stream;base64,AGFzbQEAAAABdhVgAX8AYAN/f38AYAAAYAF/AX9gAn9/AX9gAn9/AGAAAX9gAX0BfWABfAF8YAF8AX1gAn19AGADfHx/AXxgAnx8AXxgAnx/AXxgBX9/f39/AGACfX8Bf2ACfH8Bf2AFf39/f38Bf2ACf30AYAJ/fwF9YAJ/fAACGQQBYQFhAAQBYQFiAAEBYQFjAAMBYQFkAAIDNjUAAwQCCQkCAQUDBwgHBQsMDQgIDgECAQMHDxARAQEAARIFBAAAAgADAAQABRQKCgECBgYGBgQFAXABBQUFBgEBCICAAgYIAX8BQeC3BAsHSRIBZQIAAWYAGQFnAQABaAAmAWkAOAFqADcBawA2AWwANQFtADQBbgAkAW8AJAFwADMBcQAyAXIAMQFzADABdAAvAXUALgF2AC0JCgEAQQELBCwqKCcKh+YCNeELAQd/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0H4MygCAEkNASAAIARqIQACQAJAAkBB/DMoAgAgA0cEQCADKAIMIQEgBEH/AU0EQCABIAMoAggiAkcNAkHoM0HoMygCAEF+IARBA3Z3cTYCAAwFCyADKAIYIQYgASADRwRAIAMoAggiAiABNgIMIAEgAjYCCAwECyADKAIUIgIEfyADQRRqBSADKAIQIgJFDQMgA0EQagshBANAIAQhByACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAdBADYCAAwDCyAFKAIEIgJBA3FBA0cNA0HwMyAANgIAIAUgAkF+cTYCBCADIABBAXI2AgQgBSAANgIADwsgAiABNgIMIAEgAjYCCAwCC0EAIQELIAZFDQACQCADKAIcIgRBAnRBmDZqIgIoAgAgA0YEQCACIAE2AgAgAQ0BQewzQewzKAIAQX4gBHdxNgIADAILAkAgAyAGKAIQRgRAIAYgATYCEAwBCyAGIAE2AhQLIAFFDQELIAEgBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAFTw0AIAUoAgQiBEEBcUUNAAJAAkACQAJAIARBAnFFBEBBgDQoAgAgBUYEQEGANCADNgIAQfQzQfQzKAIAIABqIgA2AgAgAyAAQQFyNgIEIANB/DMoAgBHDQZB8DNBADYCAEH8M0EANgIADwtB/DMoAgAgBUYEQEH8MyADNgIAQfAzQfAzKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIARBeHEgAGohACAFKAIMIQEgBEH/AU0EQCAFKAIIIgIgAUYEQEHoM0HoMygCAEF+IARBA3Z3cTYCAAwFCyACIAE2AgwgASACNgIIDAQLIAUoAhghBiABIAVHBEAgBSgCCCICIAE2AgwgASACNgIIDAMLIAUoAhQiAgR/IAVBFGoFIAUoAhAiAkUNAiAFQRBqCyEEA0AgBCEHIAIiAUEUaiEEIAEoAhQiAg0AIAFBEGohBCABKAIQIgINAAsgB0EANgIADAILIAUgBEF+cTYCBCADIABBAXI2AgQgACADaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiBEECdEGYNmoiAigCACAFRgRAIAIgATYCACABDQFB7DNB7DMoAgBBfiAEd3E2AgAMAgsCQCAFIAYoAhBGBEAgBiABNgIQDAELIAYgATYCFAsgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANB/DMoAgBHDQBB8DMgADYCAA8LIABB/wFNBEAgAEF4cUGQNGohAgJ/QegzKAIAIgRBASAAQQN2dCIAcUUEQEHoMyAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QZg2aiEEAn8CQAJ/QewzKAIAIgdBASABdCICcUUEQEHsMyACIAdyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiB0EQaigCACIEDQALIAcgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQcgASADaiAENgIAIAMgAjYCDCAAIANqIAc2AgBBiDRBiDQoAgBBAWsiAEF/IAAbNgIACws6AQJ/QQEgACAAQQFNGyEBA0ACQCABECsiAA0AQdg3KAIAIgJFDQAgAhECAAwBCwsgAEUEQBApCyAAC9gCAQJ/AkAgAUUNACAAQQA6AAAgACABaiICQQFrQQA6AAAgAUEDSQ0AIABBADoAAiAAQQA6AAEgAkEDa0EAOgAAIAJBAmtBADoAACABQQdJDQAgAEEAOgADIAJBBGtBADoAACABQQlJDQAgAEEAIABrQQNxIgNqIgJBADYCACACIAEgA2tBfHEiA2oiAUEEa0EANgIAIANBCUkNACACQQA2AgggAkEANgIEIAFBCGtBADYCACABQQxrQQA2AgAgA0EZSQ0AIAJBADYCGCACQQA2AhQgAkEANgIQIAJBADYCDCABQRBrQQA2AgAgAUEUa0EANgIAIAFBGGtBADYCACABQRxrQQA2AgAgAyACQQRxQRhyIgNrIgFBIEkNACACIANqIQIDQCACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwAgAkEgaiECIAFBIGsiAUEfSw0ACwsgAAsFABADAAtLAQJ8IAAgACAAoiIBoiICIAEgAaKiIAFEp0Y7jIfNxj6iRHTnyuL5ACq/oKIgAiABRLL7bokQEYE/okR3rMtUVVXFv6CiIACgoLYLTwEBfCAAIACiIgAgACAAoiIBoiAARGlQ7uBCk/k+okQnHg/oh8BWv6CiIAFEQjoF4VNVpT+iIABEgV4M/f//37+iRAAAAAAAAPA/oKCgtgsFABAHAAumBAIIfwF9IAAoAggiAyAAKAIAIgRrQQJ1IAFPBEACQCAAKAIEIgUgBGtBAnUiByABIAEgB0sbIghFDQAgAioCACELIAQhAyAIIgZBB3EiCQRAA0AgAyALOAIAIAZBAWshBiADQQRqIQMgCkEBaiIKIAlHDQALCyAIQQhJDQADQCADIAs4AhwgAyALOAIYIAMgCzgCFCADIAs4AhAgAyALOAIMIAMgCzgCCCADIAs4AgQgAyALOAIAIANBIGohAyAGQQhrIgYNAAsLIAEgB0sEQCAFIAEgB2tBAnRqIQEgAioCACELA0AgBSALOAIAIAVBBGoiBSABRw0ACyAAIAE2AgQPCyAAIAQgAUECdGo2AgQPCyAEBEAgACAENgIEIAQQBCAAQQA2AgggAEIANwIAQQAhAwsCQCABQYCAgIAETw0AQf////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>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; +} +); +})(); diff --git a/web/emscripten/pre.js b/web/emscripten/pre.js new file mode 100644 index 0000000..4010891 --- /dev/null +++ b/web/emscripten/pre.js @@ -0,0 +1,10 @@ +// Adapted from the Emscripten error message when initialising std::random_device +var crypto = globalThis?.crypto || { + getRandomValues: array => { + // Cryptographically insecure, but fine for audio + for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0; + } +}; +var performance = globalThis?.performance || { + now: _ => Date.now() +}; diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..08eb7e3 --- /dev/null +++ b/web/index.html @@ -0,0 +1,118 @@ + + + + Signalsmith Stretch Web Audio demo + + + +
+ + +
+
+
stretch.start()
+
stretch.start(audioContext.currentTime + 1)
+
stretch.stop()
+
stretch.stop(audioContext.currentTime + 3)
+
stretch.schedule({
+	semitones: 5
+})
+
stretch.schedule({
+	semitones: 0,
+	output: audioContext.currentTime + 3
+})
+
stretch.schedule({
+	rate: 0.8
+})
+
stretch.schedule({
+	input: 0, // start from beginning
+	rate: 1.2,
+	semitones: -2
+})
+
stretch.schedule({
+	input: 0,
+	output: audioContext.currentTime + 1
+}, true)
+
+ + + diff --git a/web/loop.mp3 b/web/loop.mp3 new file mode 100644 index 0000000..cda242d Binary files /dev/null and b/web/loop.mp3 differ diff --git a/web/release/SignalsmithStretch.js b/web/release/SignalsmithStretch.js new file mode 100644 index 0000000..affc0dd --- /dev/null +++ b/web/release/SignalsmithStretch.js @@ -0,0 +1,429 @@ + +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;iDate.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(ifilename.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>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} +*/ +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); +} diff --git a/web/release/SignalsmithStretch.mjs b/web/release/SignalsmithStretch.mjs new file mode 100644 index 0000000..cc08b5a --- /dev/null +++ b/web/release/SignalsmithStretch.mjs @@ -0,0 +1,431 @@ +let module = {}, exports = {}; + +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;iDate.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(ifilename.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>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} +*/ +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); +} +let _export=SignalsmithStretch;export default _export; diff --git a/web/release/package.json b/web/release/package.json new file mode 100644 index 0000000..8effb75 --- /dev/null +++ b/web/release/package.json @@ -0,0 +1,26 @@ +{ + "name": "signalsmith-stretch", + "version": "1.0.0", + "description": "JS/WASM release of the Signalsmith Stretch library", + "main": "SignalsmithStretch.mjs", + "exports": { + "import": "./SignalsmithStretch.mjs", + "require": "./SignalsmithStretch.js" + }, + "type": "module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://signalsmith-audio.co.uk/code/stretch.git" + }, + "keywords": [ + "audio", + "pitch", + "time", + "web-audio" + ], + "author": "Geraint Luff", + "license": "MIT" +} diff --git a/web/web-wrapper.js b/web/web-wrapper.js new file mode 100644 index 0000000..3908c03 --- /dev/null +++ b/web/web-wrapper.js @@ -0,0 +1,414 @@ +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} +*/ +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); +}