react-native-audio-api 0.4.12-beta.4 → 0.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/android/src/main/cpp/audioapi/CMakeLists.txt +2 -3
  2. package/android/src/main/cpp/audioapi/android/core/AudioDecoder.cpp +3 -3
  3. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +10 -11
  4. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.h +1 -0
  5. package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +0 -1
  6. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +1 -3
  7. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +24 -16
  8. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +4 -0
  9. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +20 -4
  10. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +3 -2
  11. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +32 -2
  12. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +14 -21
  13. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +4 -2
  14. package/common/cpp/audioapi/core/AudioNode.cpp +2 -2
  15. package/common/cpp/audioapi/core/AudioParam.cpp +1 -1
  16. package/common/cpp/audioapi/core/BaseAudioContext.cpp +4 -12
  17. package/common/cpp/audioapi/core/BaseAudioContext.h +2 -4
  18. package/common/cpp/audioapi/core/Constants.h +8 -33
  19. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +42 -45
  20. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
  21. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -1
  22. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +12 -8
  23. package/common/cpp/audioapi/core/effects/GainNode.cpp +4 -3
  24. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +32 -49
  25. package/common/cpp/audioapi/core/effects/PeriodicWave.h +8 -3
  26. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +3 -3
  27. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +9 -2
  28. package/common/cpp/audioapi/core/sources/AudioBuffer.h +5 -2
  29. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +72 -35
  30. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +41 -8
  31. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +18 -6
  32. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +7 -0
  33. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -3
  34. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -0
  35. package/common/cpp/audioapi/core/types/TimeStretchType.h +7 -0
  36. package/common/cpp/audioapi/dsp/AudioUtils.cpp +2 -2
  37. package/common/cpp/audioapi/dsp/AudioUtils.h +2 -2
  38. package/common/cpp/audioapi/dsp/FFT.cpp +41 -0
  39. package/common/cpp/audioapi/dsp/FFT.h +29 -0
  40. package/common/cpp/audioapi/dsp/VectorMath.cpp +3 -3
  41. package/common/cpp/audioapi/dsp/VectorMath.h +2 -2
  42. package/common/cpp/audioapi/dsp/Windows.cpp +80 -0
  43. package/common/cpp/audioapi/dsp/Windows.h +95 -0
  44. package/{android/src/main/cpp/audioapi/android/libs → common/cpp/audioapi/libs/pffft}/pffft.c +1 -1
  45. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/delay.h +9 -11
  46. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/fft.h +6 -7
  47. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/perf.h +0 -2
  48. package/common/cpp/audioapi/libs/{signalsmith-stretch.h → signalsmith-stretch/signalsmith-stretch.h} +3 -4
  49. package/common/cpp/audioapi/libs/{dsp → signalsmith-stretch}/spectral.h +10 -13
  50. package/common/cpp/audioapi/{core/utils → utils}/AudioArray.cpp +5 -5
  51. package/common/cpp/audioapi/{core/utils → utils}/AudioBus.cpp +29 -29
  52. package/ios/audioapi/ios/core/AudioDecoder.mm +3 -3
  53. package/ios/audioapi/ios/core/AudioPlayer.h +5 -2
  54. package/ios/audioapi/ios/core/AudioPlayer.m +9 -5
  55. package/ios/audioapi/ios/core/IOSAudioPlayer.h +1 -0
  56. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +12 -10
  57. package/lib/module/api.js +30 -0
  58. package/lib/module/api.js.map +1 -0
  59. package/lib/module/{index.web.js → api.web.js} +4 -2
  60. package/lib/module/api.web.js.map +1 -0
  61. package/lib/module/core/AudioBufferSourceNode.js +6 -0
  62. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  63. package/lib/module/core/AudioScheduledSourceNode.js +5 -0
  64. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  65. package/lib/module/core/BaseAudioContext.js +0 -4
  66. package/lib/module/core/BaseAudioContext.js.map +1 -1
  67. package/lib/module/index.js +1 -28
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/web-core/AudioBuffer.js +1 -1
  70. package/lib/module/web-core/AudioBuffer.js.map +1 -1
  71. package/lib/module/web-core/AudioBufferSourceNode.js +6 -0
  72. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -1
  73. package/lib/module/web-core/AudioContext.js +7 -0
  74. package/lib/module/web-core/AudioContext.js.map +1 -1
  75. package/lib/module/web-core/AudioScheduledSourceNode.js +8 -0
  76. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  77. package/lib/module/web-core/StretcherNode.js +64 -0
  78. package/lib/module/web-core/StretcherNode.js.map +1 -0
  79. package/lib/module/web-core/custom/LoadCustomWasm.js +33 -0
  80. package/lib/module/web-core/custom/LoadCustomWasm.js.map +1 -0
  81. package/lib/module/web-core/custom/index.js +4 -0
  82. package/lib/module/web-core/custom/index.js.map +1 -0
  83. package/lib/module/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  84. package/lib/module/web-core/custom/signalsmithStretch/README.md +46 -0
  85. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js +822 -0
  86. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.js.map +1 -0
  87. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +826 -0
  88. package/lib/module/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs.map +1 -0
  89. package/lib/typescript/api.d.ts +20 -0
  90. package/lib/typescript/api.d.ts.map +1 -0
  91. package/lib/typescript/{index.web.d.ts → api.web.d.ts} +4 -2
  92. package/lib/typescript/api.web.d.ts.map +1 -0
  93. package/lib/typescript/core/AudioBufferSourceNode.d.ts +3 -0
  94. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  95. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -0
  96. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  97. package/lib/typescript/core/BaseAudioContext.d.ts +0 -2
  98. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  99. package/lib/typescript/index.d.ts +1 -20
  100. package/lib/typescript/index.d.ts.map +1 -1
  101. package/lib/typescript/interfaces.d.ts +3 -6
  102. package/lib/typescript/interfaces.d.ts.map +1 -1
  103. package/lib/typescript/types.d.ts +1 -0
  104. package/lib/typescript/types.d.ts.map +1 -1
  105. package/lib/typescript/web-core/AudioBuffer.d.ts +1 -1
  106. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -1
  107. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +3 -0
  108. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -1
  109. package/lib/typescript/web-core/AudioContext.d.ts +2 -0
  110. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  111. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -0
  112. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
  113. package/lib/typescript/web-core/StretcherNode.d.ts +45 -0
  114. package/lib/typescript/web-core/StretcherNode.d.ts.map +1 -0
  115. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts +5 -0
  116. package/lib/typescript/web-core/custom/LoadCustomWasm.d.ts.map +1 -0
  117. package/lib/typescript/web-core/custom/index.d.ts +2 -0
  118. package/lib/typescript/web-core/custom/index.d.ts.map +1 -0
  119. package/package.json +8 -5
  120. package/scripts/setup-custom-wasm.js +104 -0
  121. package/src/api.ts +51 -0
  122. package/src/{index.web.ts → api.web.ts} +4 -0
  123. package/src/core/AudioBufferSourceNode.ts +9 -0
  124. package/src/core/AudioScheduledSourceNode.ts +5 -0
  125. package/src/core/BaseAudioContext.ts +0 -5
  126. package/src/index.ts +1 -51
  127. package/src/interfaces.ts +3 -6
  128. package/src/types.ts +2 -0
  129. package/src/web-core/AudioBuffer.tsx +2 -2
  130. package/src/web-core/AudioBufferSourceNode.tsx +11 -0
  131. package/src/web-core/AudioContext.tsx +11 -0
  132. package/src/web-core/AudioScheduledSourceNode.tsx +9 -0
  133. package/src/web-core/StretcherNode.tsx +125 -0
  134. package/src/web-core/custom/LoadCustomWasm.ts +39 -0
  135. package/src/web-core/custom/index.ts +1 -0
  136. package/src/web-core/custom/signalsmithStretch/LICENSE.txt +21 -0
  137. package/src/web-core/custom/signalsmithStretch/README.md +46 -0
  138. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.js +945 -0
  139. package/src/web-core/custom/signalsmithStretch/SignalsmithStretch.mjs +949 -0
  140. package/common/cpp/audioapi/HostObjects/StretcherNodeHostObject.h +0 -35
  141. package/common/cpp/audioapi/core/effects/StretcherNode.cpp +0 -94
  142. package/common/cpp/audioapi/core/effects/StretcherNode.h +0 -35
  143. package/common/cpp/audioapi/dsp/FFTFrame.cpp +0 -100
  144. package/common/cpp/audioapi/dsp/FFTFrame.h +0 -74
  145. package/common/cpp/audioapi/libs/dsp/common.h +0 -47
  146. package/common/cpp/audioapi/libs/dsp/windows.h +0 -219
  147. package/lib/module/core/StretcherNode.js +0 -12
  148. package/lib/module/core/StretcherNode.js.map +0 -1
  149. package/lib/module/index.web.js.map +0 -1
  150. package/lib/typescript/core/StretcherNode.d.ts +0 -10
  151. package/lib/typescript/core/StretcherNode.d.ts.map +0 -1
  152. package/lib/typescript/index.web.d.ts.map +0 -1
  153. package/src/core/StretcherNode.ts +0 -15
  154. /package/common/cpp/audioapi/libs/{miniaudio.h → miniaudio/miniaudio.h} +0 -0
  155. /package/{android/src/main/cpp/audioapi/android/libs → common/cpp/audioapi/libs/pffft}/pffft.h +0 -0
  156. /package/common/cpp/audioapi/{core/utils → utils}/AudioArray.h +0 -0
  157. /package/common/cpp/audioapi/{core/utils → utils}/AudioBus.h +0 -0
@@ -0,0 +1,822 @@
1
+ "use strict";
2
+
3
+ var SignalsmithStretch = (() => {
4
+ var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;
5
+ return async function (moduleArg = {}) {
6
+ var moduleRtn;
7
+ var Module = moduleArg;
8
+ var readyPromiseResolve, readyPromiseReject;
9
+ var readyPromise = new Promise((resolve, reject) => {
10
+ readyPromiseResolve = resolve;
11
+ readyPromiseReject = reject;
12
+ });
13
+ var ENVIRONMENT_IS_WEB = typeof window == 'object';
14
+ var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != 'undefined';
15
+ var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string' && process.type != 'renderer';
16
+ var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
17
+ var crypto = globalThis?.crypto || {
18
+ getRandomValues: array => {
19
+ for (var i = 0; i < array.length; i++) array[i] = Math.random() * 256 | 0;
20
+ }
21
+ };
22
+ var performance = globalThis?.performance || {
23
+ now: _ => Date.now()
24
+ };
25
+ var moduleOverrides = Object.assign({}, Module);
26
+ var arguments_ = [];
27
+ var quit_ = (status, toThrow) => {
28
+ throw toThrow;
29
+ };
30
+ var scriptDirectory = '';
31
+ var readAsync, readBinary;
32
+ if (ENVIRONMENT_IS_SHELL) {
33
+ readBinary = f => {
34
+ if (typeof readbuffer == 'function') {
35
+ return new Uint8Array(readbuffer(f));
36
+ }
37
+ let data = read(f, 'binary');
38
+ assert(typeof data == 'object');
39
+ return data;
40
+ };
41
+ readAsync = async f => readBinary(f);
42
+ globalThis.clearTimeout ??= id => {};
43
+ globalThis.setTimeout ??= f => f();
44
+ arguments_ = globalThis.arguments || globalThis.scriptArgs;
45
+ if (typeof quit == 'function') {
46
+ quit_ = (status, toThrow) => {
47
+ setTimeout(() => {
48
+ if (!(toThrow instanceof ExitStatus)) {
49
+ let toLog = toThrow;
50
+ if (toThrow && typeof toThrow == 'object' && toThrow.stack) {
51
+ toLog = [toThrow, toThrow.stack];
52
+ }
53
+ err(`exiting due to exception: ${toLog}`);
54
+ }
55
+ quit(status);
56
+ });
57
+ throw toThrow;
58
+ };
59
+ }
60
+ if (typeof print != 'undefined') {
61
+ globalThis.console ??= {};
62
+ console.log = print;
63
+ console.warn = console.error = globalThis.printErr ?? print;
64
+ }
65
+ } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
66
+ if (ENVIRONMENT_IS_WORKER) {
67
+ scriptDirectory = self.location.href;
68
+ } else if (typeof document != 'undefined' && document.currentScript) {
69
+ scriptDirectory = document.currentScript.src;
70
+ }
71
+ if (_scriptName) {
72
+ scriptDirectory = _scriptName;
73
+ }
74
+ if (scriptDirectory.startsWith('blob:')) {
75
+ scriptDirectory = '';
76
+ } else {
77
+ scriptDirectory = scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, '').lastIndexOf('/') + 1);
78
+ }
79
+ {
80
+ if (ENVIRONMENT_IS_WORKER) {
81
+ readBinary = url => {
82
+ var xhr = new XMLHttpRequest();
83
+ xhr.open('GET', url, false);
84
+ xhr.responseType = 'arraybuffer';
85
+ xhr.send(null);
86
+ return new Uint8Array(xhr.response);
87
+ };
88
+ }
89
+ readAsync = async url => {
90
+ var response = await fetch(url, {
91
+ credentials: 'same-origin'
92
+ });
93
+ if (response.ok) {
94
+ return response.arrayBuffer();
95
+ }
96
+ throw new Error(response.status + ' : ' + response.url);
97
+ };
98
+ }
99
+ } else {}
100
+ var out = console.log.bind(console);
101
+ var err = console.error.bind(console);
102
+ Object.assign(Module, moduleOverrides);
103
+ moduleOverrides = null;
104
+ var wasmBinary;
105
+ var wasmMemory;
106
+ var ABORT = false;
107
+ var EXITSTATUS;
108
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
109
+ var runtimeInitialized = false;
110
+ function updateMemoryViews() {
111
+ var b = wasmMemory.buffer;
112
+ Module['HEAP8'] = HEAP8 = new Int8Array(b);
113
+ HEAP16 = new Int16Array(b);
114
+ HEAPU8 = new Uint8Array(b);
115
+ HEAPU16 = new Uint16Array(b);
116
+ HEAP32 = new Int32Array(b);
117
+ HEAPU32 = new Uint32Array(b);
118
+ HEAPF32 = new Float32Array(b);
119
+ HEAPF64 = new Float64Array(b);
120
+ HEAP64 = new BigInt64Array(b);
121
+ HEAPU64 = new BigUint64Array(b);
122
+ }
123
+ function preRun() {}
124
+ function initRuntime() {
125
+ runtimeInitialized = true;
126
+ wasmExports['e']();
127
+ }
128
+ function preMain() {}
129
+ function postRun() {}
130
+ var runDependencies = 0;
131
+ var dependenciesFulfilled = null;
132
+ function addRunDependency(id) {
133
+ runDependencies++;
134
+ }
135
+ function removeRunDependency(id) {
136
+ runDependencies--;
137
+ if (runDependencies == 0) {
138
+ if (dependenciesFulfilled) {
139
+ var callback = dependenciesFulfilled;
140
+ dependenciesFulfilled = null;
141
+ callback();
142
+ }
143
+ }
144
+ }
145
+ function abort(what) {
146
+ what = 'Aborted(' + what + ')';
147
+ err(what);
148
+ ABORT = true;
149
+ what += '. Build with -sASSERTIONS for more info.';
150
+ var e = new WebAssembly.RuntimeError(what);
151
+ readyPromiseReject(e);
152
+ throw e;
153
+ }
154
+ var wasmBinaryFile = 'data:application/octet-stream;base64,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QQEhA0EBIQQgAiIFIQ8DQEHYMSgCACEBAkAgAyAETwRAIBBBAnQhBiAQQQFqIRAgDyABIAZqKAIAIgpuIg8hBiAKIAQiB2whBAwBCyAFIAEgDkEBayIOQQJ0aigCACIKbiIFIQcgCiADIgZsIQMLAkAgCkECSQ0AIABB/DEoAgAiAUYNAEEBIQJBASAAIAFrQQN1IgEgAUEBTRshEgNAIAIgB2whEyACIAZsIRRBACEBA0AgFEH8MSgCACIMIAFBA3RqKQIAIhmnaiELIBMgGUIgiKdqIRECQEGEMigCACIIIABNBEAgACAMayIAQQN1IhVBAWoiCUH/////AUsNCCAAQf////8BIAggDGsiCEECdSINIAkgCSANSRsgCEH4////B08bIgkEfyAJQf////8BSw0IIAlBA3QQBAVBAAsiDWoiCCALrSARrUIghoQ3AgAgCCAVQQN0ayELIAAEQCALIAwgAPwKAAALQYQyIA0gCUEDdGo2AgBBgDIgCEEIaiIANgIAQfwxIAs2AgAgDBADDAELIAAgC60gEa1CIIaENwIAIABBCGohAAtBgDIgADYCACABQQFqIgEgEkcNAAsgAkEBaiICIApHDQALQcgxKAIAIQILIAMgBGwgAkkNAAsLDAILEAgACxAFAAtByDEoAgAFIAILGguDBwEGf0HoMigCACIDQeAyKAIAIgJrQRxtIABPBEACQEHkMigCACACa0EcbSIFIAAgACAFSxsiBEUNAAJAIARBA3EiBkUEQCAEIQMMAQsgBCEDA0AgAiABKQIANwIAIAIgASgCGDYCGCACIAEpAhA3AhAgAiABKQIINwIIIANBAWshAyACQRxqIQIgB0EBaiIHIAZHDQALCyAEQQRJDQADQCACIAEpAgA3AgAgAiABKAIYNgIYIAIgASkCEDcCECACIAEpAgg3AgggAiABKAIYNgI0IAIgASkCEDcCLCACIAEpAgg3AiQgAiABKQIANwIcIAIgASgCGDYCUCACIAEpAhA3AkggAkFAayABKQIINwIAIAIgASkCADcCOCACIAEpAgA3AlQgAiABKQIINwJcIAIgASkCEDcCZCACIAEoAhg2AmwgAkHwAGohAiADQQRrIgMNAAsLIAAgBUsEQEHkMigCACICIAAgBWtBHGxqIQADQCACIAEpAgA3AgAgAiABKAIYNgIYIAIgASkCEDcCECACIAEpAgg3AgggAkEcaiICIABHDQALQeQyIAA2AgAPC0HkMkHgMigCACAAQRxsajYCAA8LIAIEQEHkMiACNgIAIAIQA0HoMkEANgIAQeAyQgA3AgBBACEDCwJAIABByqSSyQBPDQBByaSSyQAgA0EcbSIDQQF0IgQgACAAIARJGyADQaSSySRPGyIDQcqkkskATw0AQeQyIANBHGwiAxAEIgQ2AgBB4DIgBDYCAEHoMiADIARqNgIAIAQhAiAAQRxsIgBBHGsiBUEcbiIDQQNxQQNHBEAgA0EBakEDcSEGQQAhAwNAIAIgASkCADcCACACIAEoAhg2AhggAiABKQIQNwIQIAIgASkCCDcCCCACQRxqIQIgA0EBaiIDIAZHDQALCyAAIARqIQAgBUHUAE8EQANAIAIgASkCADcCACACIAEoAhg2AhggAiABKQIQNwIQIAIgASkCCDcCCCACIAEoAhg2AjQgAiABKQIQNwIsIAIgASkCCDcCJCACIAEpAgA3AhwgAiABKAIYNgJQIAIgASkCEDcCSCACQUBrIAEpAgg3AgAgAiABKQIANwI4IAIgASkCADcCVCACIAEpAgg3AlwgAiABKQIQNwJkIAIgASgCGDYCbCACQfAAaiICIABHDQALC0HkMiAANgIADwsQBQAL3QQCBn8BfkGUMSgCACIDQYwxKAIAIgJrQQN1IABPBEACQEGQMSgCACACa0EDdSIFIAAgACAFSxsiBEUNAAJAIARBB3EiBkUEQCAEIQMMAQsgBCEDA0AgAiABKQIANwIAIANBAWshAyACQQhqIQIgB0EBaiIHIAZHDQALCyAEQQhJDQADQCACIAEpAgA3AgAgAiABKQIANwIIIAIgASkCADcCECACIAEpAgA3AhggAiABKQIANwIgIAIgASkCADcCKCACIAEpAgA3AjAgAiABKQIANwI4IAJBQGshAiADQQhrIgMNAAsLIAAgBUsEQEGQMSgCACICIAAgBWtBA3RqIQADQCACIAEpAgA3AgAgAkEIaiICIABHDQALQZAxIAA2AgAPC0GQMUGMMSgCACAAQQN0ajYCAA8LIAIEQEGQMSACNgIAIAIQA0GUMUEANgIAQYwxQgA3AgBBACEDCwJAIABBgICAgAJPDQBB/////wEgA0ECdSIEIAAgACAESRsgA0H4////B08b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AgALIANBAEoEQEEAIQIDQCASQZgwNgIgIBJBvDM2AiQgEiASKQIgNwMQIBIgEkEoajYCHCASIBJBLGo2AhggEiASKQIYNwMIIwBBEGsiDSQAQewwKAIAIgAgAiIQSARAA0BBACEHIwBBEGsiEyQAIBIoAhAiAigCSCEBIBIoAggoAgCyIABBAWoiFrKUIBIoAgwoAgCylRAZIRsgAigCsAIhACACIBsgAbKT/AAiBjYCsAICQCACLQDAAiAGIABrIhFBAEpyIg5BAXFFDQACfyACKAKoAkEATARAIAJBADoAwQJBAAwBC0EAIAZrIgxBACAMQQBKGyEEQQEgDCAMQQFMGyIAQfz///8HcSEPIABBA3EhFCACQYABaiEVIAJB/AFqIRggBkEATiEXA0ACQCAXDQAgAigClAIgAigCkAIgB2wgBmpqIQEgAigCtAIhCCACKAKcAiEJIAIoApgCIQpBACEFQQAhAEEAIQMgDEEDSgRAA0AgCCAAQQJ0aiAJIAogACABanFBAnRqKgIAOAIAIAggAEEBciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIAggAEECciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIAggAEEDciILQQJ0aiAJIAogASALanFBAnRqKgIAOAIAIABBBGohACADQQRqIgMgD0cNAAsLIBRFDQADQCAIIABBAnRqIAkgCiAAIAFqcUECdGoqAgA4AgAgAEEBaiEAIAVBAWoiBSAURw0ACwsCQCAEIAIoAkgiBU4NACASKAIUKAIAIAdBAnRqKAIAIAZBAnRqIQEgAigCtAIhCEEAIQMgBSAEIgBrQQNxIgkEQANAIAggAEECdCIKaiABIApqKgIAOAIAIABBAWohACADQQFqIgMgCUcNAAsLIAQgBWtBfEsNAANAIAggAEECdCIDaiABIANqKgIAOAIAIAggA0EEaiIJaiABIAlqKgIAOAIAIAggA0EIaiIJaiABIAlqKgIAOAIAIAggA0EMaiIDaiABIANqKgIAOAIAIABBBGoiACAFRw0ACwsgEyACKAJ0IAIoAnAgB2xBA3RqNgIIIAIoArABQQF0IQUCQCACKAKIAiIBQQBMDQAgAigC/AEgBSABa0ECdGohACACKALwASEJIAIoArQCIQpBACEIIAFBAUcEQCABQf7///8HcSEZQQAhAwNAIAAgCEECdCILaiAJIAtqKgIAIAogC2oqAgCMlDgCACAAIAtBBHIiC2ogCSALaioCACAKIAtqKgIAjJQ4AgAgCEECaiEIIANBAmoiAyAZRw0ACwsgAUEBcUUNACAAIAhBAnQiA2ogAyAJaioCACADIApqKgIAjJQ4AgALAkAgASAFTg0AIAFBAWohAyACKAL8ASEIIAIoAvABIQkgAigCtAIhCiABIgBBAXEEQCAIIAkgAEECdCIAaioCACAAIApqKgIAlDgCACADIQALIAMgBUYNAANAIAggACABa0ECdGogCSAAQQJ0IgNqKgIAIAMgCmoqAgCUOAIAIAggAEEBaiIDIAFrQQJ0aiAJIANBAnQiA2oqAgAgAyAKaioCAJQ4AgAgAEECaiIAIAVHDQALCyAVIBggE0EIahAdIAdBAWoiByACKAKoAiIDSA0ACyACQQA6AMECQQAgA0EATA0AGkEAIQFBASACKAKsAiIIQQBMDQAaA0BBACEAIAhBAEoEQCACKALIAiABIAhsQRxsaiEDIAIoAnQgAigCcCABbEEDdGohBANAIAMgAEEcbGogBCAAQQN0aikCADcCACAAQQFqIgAgAigCrAIiCEgNAAsgAigCqAIhAwsgAUEBaiIBIANIDQALIANBAEoLIAItAMACRSACKAJQIgEgEUZxDQBFDQBBACEHQQAgBiABayIUayIMQQAgDEEAShshBCACQYABaiEPIAJB/AFqIRUDQAJAIAIoAkgiASAMIAEgDEgbIgtBAEwNACACKAKUAiACKAKQAiAHbCAUamohCCACKAK0AiEGIAIoApwCIQkgAigCmAIhCkEAIQVBACEAIAtBBE8EQCALQfz///8HcSEYQQAhAwNAIAYgAEECdGogCSAKIAAgCGpxQQJ0aioCADgCACAGIABBAXIiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAGIABBAnIiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAGIABBA3IiF0ECdGogCSAKIAggF2pxQQJ0aioCADgCACAAQQRqIQAgA0EEaiIDIBhHDQALCyALQQNxIgNFDQADQCAGIABBAnRqIAkgCiAAIAhqcUECdGoqAgA4AgAgAEEBaiEAIAVBAWoiBSADRw0ACwsCQCABIARMDQAgEigCFCgCACAHQQJ0aigC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';
155
+ function getBinarySync(file) {
156
+ if (file == wasmBinaryFile && wasmBinary) {
157
+ return new Uint8Array(wasmBinary);
158
+ }
159
+ var binary = tryParseAsDataURI(file);
160
+ if (binary) {
161
+ return binary;
162
+ }
163
+ if (readBinary) {
164
+ return readBinary(file);
165
+ }
166
+ throw 'both async and sync fetching of the wasm failed';
167
+ }
168
+ async function getWasmBinary(binaryFile) {
169
+ return getBinarySync(binaryFile);
170
+ }
171
+ async function instantiateArrayBuffer(binaryFile, imports) {
172
+ try {
173
+ var binary = await getWasmBinary(binaryFile);
174
+ var instance = await WebAssembly.instantiate(binary, imports);
175
+ return instance;
176
+ } catch (reason) {
177
+ err(`failed to asynchronously prepare wasm: ${reason}`);
178
+ abort(reason);
179
+ }
180
+ }
181
+ async function instantiateAsync(binary, binaryFile, imports) {
182
+ return instantiateArrayBuffer(binaryFile, imports);
183
+ }
184
+ function getWasmImports() {
185
+ return {
186
+ a: wasmImports
187
+ };
188
+ }
189
+ async function createWasm() {
190
+ function receiveInstance(instance, module) {
191
+ wasmExports = instance.exports;
192
+ wasmMemory = wasmExports['d'];
193
+ updateMemoryViews();
194
+ removeRunDependency('wasm-instantiate');
195
+ return wasmExports;
196
+ }
197
+ addRunDependency('wasm-instantiate');
198
+ function receiveInstantiationResult(result) {
199
+ return receiveInstance(result['instance']);
200
+ }
201
+ var info = getWasmImports();
202
+ try {
203
+ var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info);
204
+ var exports = receiveInstantiationResult(result);
205
+ return exports;
206
+ } catch (e) {
207
+ readyPromiseReject(e);
208
+ return Promise.reject(e);
209
+ }
210
+ }
211
+ class ExitStatus {
212
+ name = 'ExitStatus';
213
+ constructor(status) {
214
+ this.message = `Program terminated with exit(${status})`;
215
+ this.status = status;
216
+ }
217
+ }
218
+ var base64Decode = b64 => {
219
+ var b1,
220
+ b2,
221
+ i = 0,
222
+ j = 0,
223
+ bLength = b64.length;
224
+ var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == '=') - (b64[bLength - 1] == '='));
225
+ for (; i < bLength; i += 4, j += 3) {
226
+ b1 = base64ReverseLookup[b64.charCodeAt(i + 1)];
227
+ b2 = base64ReverseLookup[b64.charCodeAt(i + 2)];
228
+ output[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4;
229
+ output[j + 1] = b1 << 4 | b2 >> 2;
230
+ output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i + 3)];
231
+ }
232
+ return output;
233
+ };
234
+ var isDataURI = filename => filename.startsWith(dataURIPrefix);
235
+ var dataURIPrefix = 'data:application/octet-stream;base64,';
236
+ var tryParseAsDataURI = filename => {
237
+ if (isDataURI(filename)) {
238
+ return base64Decode(filename.slice(dataURIPrefix.length));
239
+ }
240
+ };
241
+ var __abort_js = () => abort('');
242
+ var getHeapMax = () => 2147483648;
243
+ var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
244
+ var abortOnCannotGrowMemory = requestedSize => {
245
+ abort('OOM');
246
+ };
247
+ var growMemory = size => {
248
+ var b = wasmMemory.buffer;
249
+ var pages = (size - b.byteLength + 65535) / 65536 | 0;
250
+ try {
251
+ wasmMemory.grow(pages);
252
+ updateMemoryViews();
253
+ return 1;
254
+ } catch (e) {}
255
+ };
256
+ var _emscripten_resize_heap = requestedSize => {
257
+ var oldSize = HEAPU8.length;
258
+ requestedSize >>>= 0;
259
+ var maxHeapSize = getHeapMax();
260
+ if (requestedSize > maxHeapSize) {
261
+ abortOnCannotGrowMemory(requestedSize);
262
+ }
263
+ for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
264
+ var overGrownHeapSize = oldSize * (1 + 0.5 / cutDown);
265
+ overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
266
+ var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
267
+ var replacement = growMemory(newSize);
268
+ if (replacement) {
269
+ return true;
270
+ }
271
+ }
272
+ abortOnCannotGrowMemory(requestedSize);
273
+ };
274
+ var initRandomFill = () => view => crypto.getRandomValues(view);
275
+ var randomFill = view => {
276
+ (randomFill = initRandomFill())(view);
277
+ };
278
+ var _random_get = (buffer, size) => {
279
+ randomFill(HEAPU8.subarray(buffer, buffer + size));
280
+ return 0;
281
+ };
282
+ var keepRuntimeAlive = () => true;
283
+ var _proc_exit = code => {
284
+ EXITSTATUS = code;
285
+ if (!keepRuntimeAlive()) {
286
+ ABORT = true;
287
+ }
288
+ quit_(code, new ExitStatus(code));
289
+ };
290
+ var exitJS = (status, implicit) => {
291
+ EXITSTATUS = status;
292
+ _proc_exit(status);
293
+ };
294
+ var handleException = e => {
295
+ if (e instanceof ExitStatus || e == 'unwind') {
296
+ return EXITSTATUS;
297
+ }
298
+ quit_(1, e);
299
+ };
300
+ var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder() : undefined;
301
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
302
+ var endIdx = idx + maxBytesToRead;
303
+ var endPtr = idx;
304
+ while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
305
+ if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
306
+ return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
307
+ }
308
+ var str = '';
309
+ while (idx < endPtr) {
310
+ var u0 = heapOrArray[idx++];
311
+ if (!(u0 & 128)) {
312
+ str += String.fromCharCode(u0);
313
+ continue;
314
+ }
315
+ var u1 = heapOrArray[idx++] & 63;
316
+ if ((u0 & 224) == 192) {
317
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
318
+ continue;
319
+ }
320
+ var u2 = heapOrArray[idx++] & 63;
321
+ if ((u0 & 240) == 224) {
322
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2;
323
+ } else {
324
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
325
+ }
326
+ if (u0 < 65536) {
327
+ str += String.fromCharCode(u0);
328
+ } else {
329
+ var ch = u0 - 65536;
330
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
331
+ }
332
+ }
333
+ return str;
334
+ };
335
+ var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '';
336
+ for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
337
+ base64ReverseLookup[48 + i] = 52 + i;
338
+ base64ReverseLookup[65 + i] = i;
339
+ base64ReverseLookup[97 + i] = 26 + i;
340
+ }
341
+ base64ReverseLookup[43] = 62;
342
+ base64ReverseLookup[47] = 63;
343
+ var wasmImports = {
344
+ c: __abort_js,
345
+ b: _emscripten_resize_heap,
346
+ a: _random_get
347
+ };
348
+ var wasmExports = await createWasm();
349
+ var ___wasm_call_ctors = wasmExports['e'];
350
+ var _setBuffers = Module['_setBuffers'] = wasmExports['g'];
351
+ var _blockSamples = Module['_blockSamples'] = wasmExports['h'];
352
+ var _intervalSamples = Module['_intervalSamples'] = wasmExports['i'];
353
+ var _inputLatency = Module['_inputLatency'] = wasmExports['j'];
354
+ var _outputLatency = Module['_outputLatency'] = wasmExports['k'];
355
+ var _reset = Module['_reset'] = wasmExports['l'];
356
+ var _presetDefault = Module['_presetDefault'] = wasmExports['m'];
357
+ var _presetCheaper = Module['_presetCheaper'] = wasmExports['n'];
358
+ var _configure = Module['_configure'] = wasmExports['o'];
359
+ var _setTransposeFactor = Module['_setTransposeFactor'] = wasmExports['p'];
360
+ var _setTransposeSemitones = Module['_setTransposeSemitones'] = wasmExports['q'];
361
+ var _seek = Module['_seek'] = wasmExports['r'];
362
+ var _process = Module['_process'] = wasmExports['s'];
363
+ var _flush = Module['_flush'] = wasmExports['t'];
364
+ var _main = Module['_main'] = wasmExports['u'];
365
+ Module['UTF8ToString'] = UTF8ToString;
366
+ function callMain() {
367
+ var entryFunction = _main;
368
+ var argc = 0;
369
+ var argv = 0;
370
+ try {
371
+ var ret = entryFunction(argc, argv);
372
+ exitJS(ret, true);
373
+ return ret;
374
+ } catch (e) {
375
+ return handleException(e);
376
+ }
377
+ }
378
+ function run() {
379
+ if (runDependencies > 0) {
380
+ dependenciesFulfilled = run;
381
+ return;
382
+ }
383
+ preRun();
384
+ if (runDependencies > 0) {
385
+ dependenciesFulfilled = run;
386
+ return;
387
+ }
388
+ function doRun() {
389
+ Module['calledRun'] = true;
390
+ if (ABORT) return;
391
+ initRuntime();
392
+ preMain();
393
+ readyPromiseResolve(Module);
394
+ var noInitialRun;
395
+ if (!noInitialRun) callMain();
396
+ postRun();
397
+ }
398
+ {
399
+ doRun();
400
+ }
401
+ }
402
+ run();
403
+ moduleRtn = readyPromise;
404
+ return moduleRtn;
405
+ };
406
+ })();
407
+ function registerWorkletProcessor(Module, audioNodeKey) {
408
+ class WasmProcessor extends AudioWorkletProcessor {
409
+ constructor(options) {
410
+ super(options);
411
+ this.wasmReady = false;
412
+ this.wasmModule = null;
413
+ this.channels = 0;
414
+ this.buffersIn = [];
415
+ this.buffersOut = [];
416
+ this.audioBuffers = []; // list of (multi-channel) audio buffers
417
+ this.audioBuffersStart = 0; // time-stamp for the first audio buffer
418
+ this.audioBuffersEnd = 0; // just to be helpful
419
+
420
+ this.timeIntervalSamples = sampleRate * 0.1;
421
+ this.timeIntervalCounter = 0;
422
+ this.timeMap = [{
423
+ active: false,
424
+ input: 0,
425
+ output: 0,
426
+ rate: 1,
427
+ semitones: 0,
428
+ loopStart: 0,
429
+ loopEnd: 0
430
+ }];
431
+ let remoteMethods = {
432
+ configure: config => {
433
+ let blockChanged = config.blockMs != this.config.blockMs || config.intervalMs != this.config.intervalMs;
434
+ Object.assign(this.config, config);
435
+ if (config.blockMs && blockChanged) this.configure();
436
+ },
437
+ setUpdateInterval: seconds => {
438
+ this.timeIntervalSamples = sampleRate * seconds;
439
+ },
440
+ stop: when => {
441
+ if (typeof when !== 'number') when = currentTime;
442
+ return remoteMethods.schedule({
443
+ active: false,
444
+ output: when
445
+ });
446
+ },
447
+ start: (when, offset, duration, rate, semitones) => {
448
+ if (typeof when === 'object') {
449
+ if (!('active' in when)) when.active = true;
450
+ return remoteMethods.schedule(when);
451
+ }
452
+ let obj = {
453
+ active: true,
454
+ input: 0,
455
+ output: currentTime + this.outputLatencySeconds
456
+ };
457
+ if (typeof when === 'number') obj.output = when;
458
+ if (typeof offset === 'number') obj.input = offset;
459
+ if (typeof rate === 'number') obj.rate = rate;
460
+ if (typeof semitones === 'number') obj.semitones = semitones;
461
+ let result = remoteMethods.schedule(obj);
462
+ if (typeof duration === 'number') {
463
+ remoteMethods.stop(obj.output + duration);
464
+ obj.output += duration;
465
+ obj.active = false;
466
+ remoteMethods.schedule(obj);
467
+ }
468
+ return result;
469
+ },
470
+ schedule: (objIn, adjustPrevious) => {
471
+ let outputTime = 'outputTime' in objIn ? objIn.outputTime : currentTime;
472
+ let latestSegment = this.timeMap[this.timeMap.length - 1];
473
+ while (this.timeMap.length && this.timeMap[this.timeMap.length - 1].output >= outputTime) {
474
+ latestSegment = this.timeMap.pop();
475
+ }
476
+ let obj = {
477
+ active: latestSegment.active,
478
+ input: null,
479
+ output: outputTime,
480
+ rate: latestSegment.rate,
481
+ semitones: latestSegment.semitones,
482
+ loopStart: latestSegment.loopStart,
483
+ loopEnd: latestSegment.loopEnd
484
+ };
485
+ Object.assign(obj, objIn);
486
+ if (obj.input === null) {
487
+ let rate = latestSegment.active ? latestSegment.rate : 0;
488
+ obj.input = latestSegment.input + (obj.output - latestSegment.output) * rate;
489
+ }
490
+ this.timeMap.push(obj);
491
+ if (adjustPrevious && this.timeMap.length > 1) {
492
+ let previous = this.timeMap[this.timeMap.length - 2];
493
+ if (previous.output < currentTime) {
494
+ let rate = previous.active ? previous.rate : 0;
495
+ previous.input += (currentTime - previous.output) * rate;
496
+ previous.output = currentTime;
497
+ }
498
+ previous.rate = (obj.input - previous.input) / (obj.output - previous.output);
499
+ }
500
+ let currentMapSegment = this.timeMap[0];
501
+ while (this.timeMap.length > 1 && this.timeMap[1].output <= outputTime) {
502
+ this.timeMap.shift();
503
+ currentMapSegment = this.timeMap[0];
504
+ }
505
+ let rate = currentMapSegment.active ? currentMapSegment.rate : 0;
506
+ let inputTime = currentMapSegment.input + (outputTime - currentMapSegment.output) * rate;
507
+ this.timeIntervalCounter = this.timeIntervalSamples;
508
+ this.port.postMessage(['time', inputTime]);
509
+ return obj;
510
+ },
511
+ dropBuffers: toSeconds => {
512
+ if (typeof toSeconds !== 'number') {
513
+ let buffers = this.audioBuffers.flat(1).map(b => b.buffer);
514
+ this.audioBuffers = [];
515
+ this.audioBuffersStart = this.audioBuffersEnd = 0;
516
+ return {
517
+ value: {
518
+ start: 0,
519
+ end: 0
520
+ },
521
+ transfer: buffers
522
+ };
523
+ }
524
+ let transfer = [];
525
+ while (this.audioBuffers.length) {
526
+ let first = this.audioBuffers[0];
527
+ let length = first[0].length;
528
+ let endSamples = this.audioBuffersStart + length;
529
+ let endSeconds = endSamples / sampleRate;
530
+ if (endSeconds > toSeconds) break;
531
+ this.audioBuffers.shift().forEach(b => transfer.push(b.buffer));
532
+ this.audioBuffersStart += length;
533
+ }
534
+ return {
535
+ value: {
536
+ start: this.audioBuffersStart / sampleRate,
537
+ end: this.audioBuffersEnd / sampleRate
538
+ },
539
+ transfer: transfer
540
+ };
541
+ },
542
+ addBuffers: sampleBuffers => {
543
+ sampleBuffers = [].concat(sampleBuffers);
544
+ this.audioBuffers.push(sampleBuffers);
545
+ let length = sampleBuffers[0].length;
546
+ this.audioBuffersEnd += length;
547
+ return this.audioBuffersEnd / sampleRate;
548
+ }
549
+ };
550
+ let pendingMessages = [];
551
+ this.port.onmessage = event => pendingMessages.push(event);
552
+ Module().then(wasmModule => {
553
+ this.wasmModule = wasmModule;
554
+ this.wasmReady = true;
555
+ wasmModule._main();
556
+ this.channels = options.numberOfOutputs ? options.outputChannelCount[0] : 2; // stereo by default
557
+ this.configure();
558
+ this.port.onmessage = event => {
559
+ let data = event.data;
560
+ let messageId = data.shift();
561
+ let method = data.shift();
562
+ let result = remoteMethods[method](...data);
563
+ if (result?.transfer) {
564
+ this.port.postMessage([messageId, result.value], result.transfer);
565
+ } else {
566
+ this.port.postMessage([messageId, result]);
567
+ }
568
+ };
569
+ let methodArgCounts = {};
570
+ for (let key in remoteMethods) {
571
+ methodArgCounts[key] = remoteMethods[key].length;
572
+ }
573
+ this.port.postMessage(['ready', methodArgCounts]);
574
+ pendingMessages.forEach(this.port.onmessage);
575
+ pendingMessages = null;
576
+ });
577
+ }
578
+ config = {
579
+ tonalityHz: 8000
580
+ };
581
+ configure() {
582
+ if (this.config.blockMs) {
583
+ let blockSamples = Math.round(this.config.blockMs / 1000 * sampleRate);
584
+ let intervalSamples = Math.round((this.config.intervalMs || this.config.blockMs * 0.25) / 1000 * sampleRate);
585
+ this.wasmModule._configure(this.channels, blockSamples, intervalSamples);
586
+ this.wasmModule._reset();
587
+ } else {
588
+ this.wasmModule._presetDefault(this.channels, sampleRate);
589
+ }
590
+ this.updateBuffers();
591
+ this.inputLatencySeconds = this.wasmModule._inputLatency() / sampleRate;
592
+ this.outputLatencySeconds = this.wasmModule._outputLatency() / sampleRate;
593
+ }
594
+ updateBuffers() {
595
+ let wasmModule = this.wasmModule;
596
+ // longer than one STFT block, so we can seek smoothly
597
+ this.bufferLength = wasmModule._inputLatency() + wasmModule._outputLatency();
598
+ let lengthBytes = this.bufferLength * 4;
599
+ let bufferPointer = wasmModule._setBuffers(this.channels, this.bufferLength);
600
+ this.buffersIn = [];
601
+ this.buffersOut = [];
602
+ for (let c = 0; c < this.channels; ++c) {
603
+ this.buffersIn.push(bufferPointer + lengthBytes * c);
604
+ this.buffersOut.push(bufferPointer + lengthBytes * (c + this.channels));
605
+ }
606
+ }
607
+ process(inputList, outputList, parameters) {
608
+ if (!this.wasmReady) {
609
+ outputList.forEach(output => {
610
+ output.forEach(channel => {
611
+ channel.fill(0);
612
+ });
613
+ });
614
+ return true;
615
+ }
616
+ if (!outputList[0]?.length) return false;
617
+ let outputTime = currentTime + this.outputLatencySeconds;
618
+ while (this.timeMap.length > 1 && this.timeMap[1].output <= outputTime) {
619
+ this.timeMap.shift();
620
+ }
621
+ let currentMapSegment = this.timeMap[0];
622
+ let wasmModule = this.wasmModule;
623
+ wasmModule._setTransposeSemitones(currentMapSegment.semitones, this.config.tonalityHz / sampleRate);
624
+
625
+ // Check the input/output channel counts
626
+ if (outputList[0].length != this.channels) {
627
+ this.channels = outputList[0]?.length || 0;
628
+ configure();
629
+ }
630
+ let outputBlockSize = outputList[0][0].length;
631
+ let memory = wasmModule.exports ? wasmModule.exports.memory.buffer : wasmModule.HEAP8.buffer;
632
+ // Buffer list (one per channel)
633
+ let inputs = inputList[0];
634
+ if (!currentMapSegment.active) {
635
+ outputList[0].forEach((_, c) => {
636
+ let channelBuffer = inputs[c % inputs.length];
637
+ let buffer = new Float32Array(memory, this.buffersIn[c], outputBlockSize);
638
+ buffer.fill(0);
639
+ });
640
+ // Should detect silent input and skip processing
641
+ wasmModule._process(outputBlockSize, outputBlockSize);
642
+ } else if (inputs?.length) {
643
+ // Live input
644
+ outputList[0].forEach((_, c) => {
645
+ let channelBuffer = inputs[c % inputs.length];
646
+ let buffer = new Float32Array(memory, this.buffersIn[c], outputBlockSize);
647
+ if (channelBuffer) {
648
+ buffer.set(channelBuffer);
649
+ } else {
650
+ buffer.fill(0);
651
+ }
652
+ });
653
+ wasmModule._process(outputBlockSize, outputBlockSize);
654
+ } else {
655
+ let inputTime = currentMapSegment.input + (outputTime - currentMapSegment.output) * currentMapSegment.rate;
656
+ let loopLength = currentMapSegment.loopEnd - currentMapSegment.loopStart;
657
+ if (loopLength > 0 && inputTime >= currentMapSegment.loopEnd) {
658
+ currentMapSegment.input -= loopLength;
659
+ inputTime -= loopLength;
660
+ }
661
+ inputTime += this.inputLatencySeconds;
662
+ let inputSamplesEnd = Math.round(inputTime * sampleRate);
663
+
664
+ // Fill the buffer with previous input
665
+ let buffers = outputList[0].map((_, c) => new Float32Array(memory, this.buffersIn[c], this.bufferLength));
666
+ let blockSamples = 0; // current write position in the temporary input buffer
667
+ let audioBufferIndex = 0;
668
+ let audioSamples = this.audioBuffersStart; // start of current audio buffer
669
+ // zero-pad until the start of the audio data
670
+ let inputSamples = inputSamplesEnd - this.bufferLength;
671
+ if (inputSamples < audioSamples) {
672
+ blockSamples = audioSamples - inputSamples;
673
+ buffers.forEach(b => b.fill(0, 0, blockSamples));
674
+ inputSamples = audioSamples;
675
+ }
676
+ while (audioBufferIndex < this.audioBuffers.length && audioSamples < inputSamplesEnd) {
677
+ let audioBuffer = this.audioBuffers[audioBufferIndex];
678
+ let startIndex = inputSamples - audioSamples; // start index within the audio buffer
679
+ let bufferEnd = audioSamples + audioBuffer[0].length;
680
+ // how many samples to copy: min(how many left in the buffer, how many more we need)
681
+ let count = Math.min(audioBuffer[0].length - startIndex, inputSamplesEnd - inputSamples);
682
+ if (count > 0) {
683
+ buffers.forEach((buffer, c) => {
684
+ let channelBuffer = audioBuffer[c % audioBuffer.length];
685
+ buffer.subarray(blockSamples).set(channelBuffer.subarray(startIndex, startIndex + count));
686
+ });
687
+ audioSamples += count;
688
+ blockSamples += count;
689
+ } else {
690
+ // we're already past this buffer - skip it
691
+ audioSamples += audioBuffer[0].length;
692
+ }
693
+ ++audioBufferIndex;
694
+ }
695
+ if (blockSamples < this.bufferLength) {
696
+ buffers.forEach(buffer => buffer.subarray(blockSamples).fill(0));
697
+ }
698
+
699
+ // constantly seeking, so we don't have to worry about the input buffers needing to be a rate-dependent size
700
+ wasmModule._seek(this.bufferLength, currentMapSegment.rate);
701
+ wasmModule._process(0, outputBlockSize);
702
+ this.timeIntervalCounter -= outputBlockSize;
703
+ if (this.timeIntervalCounter <= 0) {
704
+ this.timeIntervalCounter = this.timeIntervalSamples;
705
+ this.port.postMessage(['time', inputTime]);
706
+ }
707
+ }
708
+
709
+ // Re-fetch in case the memory changed (even though there *shouldn't* be any allocations)
710
+ memory = wasmModule.exports ? wasmModule.exports.memory.buffer : wasmModule.HEAP8.buffer;
711
+ outputList[0].forEach((channelBuffer, c) => {
712
+ let buffer = new Float32Array(memory, this.buffersOut[c], outputBlockSize);
713
+ channelBuffer.set(buffer);
714
+ });
715
+ return true;
716
+ }
717
+ }
718
+ registerProcessor(audioNodeKey, WasmProcessor);
719
+ }
720
+
721
+ /**
722
+ Creates a Stretch node
723
+ @async
724
+ @function SignalsmithStretch
725
+ @param {AudioContext} audioContext
726
+ @param {Object} options - channel configuration (as per [options]{@link https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletNode/AudioWorkletNode#options})
727
+ @returns {Promise<StretchNode>}
728
+ */
729
+ SignalsmithStretch = ((Module, audioNodeKey) => {
730
+ if (typeof AudioWorkletProcessor === 'function' && typeof registerProcessor === 'function') {
731
+ // AudioWorklet side
732
+ registerWorkletProcessor(Module, audioNodeKey);
733
+ return {};
734
+ }
735
+ let promiseKey = Symbol();
736
+ let createNode = async function (audioContext, options) {
737
+ /**
738
+ @classdesc An `AudioWorkletNode` with Signalsmith Stretch extensions
739
+ @name StretchNode
740
+ @augments AudioWorkletNode
741
+ @property {number} inputTime - the current playback (in seconds) within the input audio stored by the node
742
+ */
743
+ let audioNode;
744
+ options = options || {
745
+ numberOfInputs: 1,
746
+ numberOfOutputs: 1,
747
+ outputChannelCount: [2]
748
+ };
749
+ try {
750
+ audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
751
+ } catch (e) {
752
+ if (!audioContext[promiseKey]) {
753
+ let moduleUrl = createNode.moduleUrl;
754
+ if (!moduleUrl) {
755
+ let moduleCode = `(${registerWorkletProcessor})((_scriptName=>${Module})(),${JSON.stringify(audioNodeKey)})`;
756
+ moduleUrl = URL.createObjectURL(new Blob([moduleCode], {
757
+ type: 'text/javascript'
758
+ }));
759
+ }
760
+ audioContext[promiseKey] = audioContext.audioWorklet.addModule(moduleUrl);
761
+ }
762
+ await audioContext[promiseKey];
763
+ audioNode = new AudioWorkletNode(audioContext, audioNodeKey, options);
764
+ }
765
+
766
+ // messages with Promise responses
767
+ let requestMap = {};
768
+ let idCounter = 0;
769
+ let timeUpdateCallback = null;
770
+ let post = (transfer, ...data) => {
771
+ let id = idCounter++;
772
+ return new Promise(resolve => {
773
+ requestMap[id] = resolve;
774
+ audioNode.port.postMessage([id].concat(data), transfer);
775
+ });
776
+ };
777
+ audioNode.inputTime = 0;
778
+ audioNode.port.onmessage = event => {
779
+ let data = event.data;
780
+ let id = data[0],
781
+ value = data[1];
782
+ if (id == 'time') {
783
+ audioNode.inputTime = value;
784
+ if (timeUpdateCallback) timeUpdateCallback(value);
785
+ }
786
+ if (id in requestMap) {
787
+ requestMap[id](value);
788
+ delete requestMap[id];
789
+ }
790
+ };
791
+ return new Promise(resolve => {
792
+ requestMap['ready'] = remoteMethodKeys => {
793
+ Object.keys(remoteMethodKeys).forEach(key => {
794
+ let argCount = remoteMethodKeys[key];
795
+ audioNode[key] = (...args) => {
796
+ let transfer = null;
797
+ if (args.length > argCount) {
798
+ transfer = args.pop();
799
+ }
800
+ return post(transfer, key, ...args);
801
+ };
802
+ });
803
+ /** @lends StretchNode.prototype
804
+ @method setUpdateInterval
805
+ */
806
+ audioNode.setUpdateInterval = (seconds, callback) => {
807
+ timeUpdateCallback = callback;
808
+ return post(null, 'setUpdateInterval', seconds);
809
+ };
810
+ resolve(audioNode);
811
+ };
812
+ });
813
+ };
814
+ return createNode;
815
+ })(SignalsmithStretch, 'signalsmith-stretch');
816
+ // register as a CommonJS/AMD module
817
+ if (typeof exports === 'object' && typeof module === 'object') {
818
+ module.exports = SignalsmithStretch;
819
+ } else if (typeof define === 'function' && define['amd']) {
820
+ define([], () => SignalsmithStretch);
821
+ }
822
+ //# sourceMappingURL=SignalsmithStretch.js.map