@grame/faustwasm 0.0.25
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.
- package/README.md +181 -0
- package/assets/standalone/faust-ui/index.css +414 -0
- package/assets/standalone/faust-ui/index.css.map +1 -0
- package/assets/standalone/faust-ui/index.d.ts +1 -0
- package/assets/standalone/faust-ui/index.js +3478 -0
- package/assets/standalone/faust-ui/index.js.map +1 -0
- package/assets/standalone/faustwasm/index.d.ts +1252 -0
- package/assets/standalone/faustwasm/index.js +3772 -0
- package/assets/standalone/faustwasm/index.js.map +7 -0
- package/assets/standalone/index.html +73 -0
- package/assets/standalone/index.js +198 -0
- package/assets/standalone/types.d.ts +9 -0
- package/dist/cjs/index.d.ts +1252 -0
- package/dist/cjs/index.js +3752 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs-bundle/index.d.ts +1259 -0
- package/dist/cjs-bundle/index.js +11507 -0
- package/dist/cjs-bundle/index.js.map +7 -0
- package/dist/esm/index.d.ts +1252 -0
- package/dist/esm/index.js +3772 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm-bundle/index.d.ts +1259 -0
- package/dist/esm-bundle/index.js +11495 -0
- package/dist/esm-bundle/index.js.map +7 -0
- package/fileutils.js +40 -0
- package/libfaust-wasm/libfaust-wasm.d.cts +3 -0
- package/libfaust-wasm/libfaust-wasm.d.ts +3 -0
- package/libfaust-wasm/libfaust-wasm.data +0 -0
- package/libfaust-wasm/libfaust-wasm.data.d.ts +2 -0
- package/libfaust-wasm/libfaust-wasm.js +21 -0
- package/libfaust-wasm/libfaust-wasm.wasm +0 -0
- package/libfaust-wasm/libfaust-wasm.wasm.d.ts +2 -0
- package/library.md +91 -0
- package/package.json +43 -0
- package/postbuild-bundled.js +11 -0
- package/postbuild.js +63 -0
- package/prebuild-bundled.js +11 -0
- package/rsrc/overview.png +0 -0
- package/rsrc/overview.xlsx +0 -0
- package/scripts/faust2sndfile.js +43 -0
- package/scripts/faust2svg.js +17 -0
- package/scripts/faust2wasm.js +29 -0
- package/src/FaustAudioWorkletNode.ts +264 -0
- package/src/FaustAudioWorkletProcessor.ts +273 -0
- package/src/FaustCompiler.ts +252 -0
- package/src/FaustDspGenerator.ts +498 -0
- package/src/FaustDspInstance.ts +141 -0
- package/src/FaustFFTAudioWorkletProcessor.ts +554 -0
- package/src/FaustOfflineProcessor.ts +141 -0
- package/src/FaustScriptProcessorNode.ts +80 -0
- package/src/FaustSvgDiagrams.ts +37 -0
- package/src/FaustWasmInstantiator.ts +202 -0
- package/src/FaustWebAudioDsp.ts +1060 -0
- package/src/LibFaust.ts +57 -0
- package/src/WavDecoder.ts +207 -0
- package/src/WavEncoder.ts +204 -0
- package/src/copyWebStandaloneAssets.d.ts +3 -0
- package/src/copyWebStandaloneAssets.js +20 -0
- package/src/exports-bundle.ts +5 -0
- package/src/exports.ts +24 -0
- package/src/faust2svgFiles.d.ts +3 -0
- package/src/faust2svgFiles.js +43 -0
- package/src/faust2wasmFiles.d.ts +5 -0
- package/src/faust2wasmFiles.js +93 -0
- package/src/faust2wavFiles.d.ts +3 -0
- package/src/faust2wavFiles.js +58 -0
- package/src/index-bundle-iife.ts +7 -0
- package/src/index-bundle.ts +5 -0
- package/src/index.ts +5 -0
- package/src/instantiateFaustModule.ts +32 -0
- package/src/instantiateFaustModuleFromFile.ts +57 -0
- package/src/types.ts +234 -0
- package/test/clarinet.dsp +1 -0
- package/test/faustlive-wasm/faust-ui/index.css +414 -0
- package/test/faustlive-wasm/faust-ui/index.css.map +1 -0
- package/test/faustlive-wasm/faust-ui/index.d.ts +1 -0
- package/test/faustlive-wasm/faust-ui/index.js +3478 -0
- package/test/faustlive-wasm/faust-ui/index.js.map +1 -0
- package/test/faustlive-wasm/faustwasm/index.d.ts +1252 -0
- package/test/faustlive-wasm/faustwasm/index.js +3772 -0
- package/test/faustlive-wasm/faustwasm/index.js.map +7 -0
- package/test/faustlive-wasm/index.css +97 -0
- package/test/faustlive-wasm/index.html +130 -0
- package/test/faustlive-wasm/index.js +638 -0
- package/test/guitar.dsp +1 -0
- package/test/guitar1.dsp +2 -0
- package/test/libfaust-in-worklet/index.html +13 -0
- package/test/libfaust-in-worklet/index.js +40 -0
- package/test/mono.dsp +8 -0
- package/test/node/test.js +17 -0
- package/test/noise.dsp +3 -0
- package/test/organ.dsp +5 -0
- package/test/organ1.dsp +6 -0
- package/test/osc.dsp +4 -0
- package/test/osc2.dsp +5 -0
- package/test/osc3.dsp +4 -0
- package/test/p-dj.dsp +4 -0
- package/test/poly.dsp +13 -0
- package/test/rev.dsp +2 -0
- package/test/t1.dsp +1 -0
- package/test/web/fft.html +87 -0
- package/test/web/fft1.html +88 -0
- package/test/web/fft2.html +114 -0
- package/test/web/fftw.js +1907 -0
- package/test/web/index.html +12 -0
- package/test/web/index.js +235 -0
- package/test/web/kissfft.js +904 -0
- package/test/web/mono.html +46 -0
- package/test/web/poly-key.html +62 -0
- package/test/web/poly.html +59 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,904 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
9
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
10
|
+
}) : x)(function(x) {
|
|
11
|
+
if (typeof require !== "undefined")
|
|
12
|
+
return require.apply(this, arguments);
|
|
13
|
+
throw new Error('Dynamic require of "' + x + '" is not supported');
|
|
14
|
+
});
|
|
15
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
16
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
17
|
+
};
|
|
18
|
+
var __export = (target, all) => {
|
|
19
|
+
for (var name in all)
|
|
20
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
+
};
|
|
22
|
+
var __copyProps = (to, from, except, desc) => {
|
|
23
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(from))
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
}
|
|
28
|
+
return to;
|
|
29
|
+
};
|
|
30
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
31
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
32
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
33
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
34
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
35
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
36
|
+
mod
|
|
37
|
+
));
|
|
38
|
+
var __toBinary = /* @__PURE__ */ (() => {
|
|
39
|
+
var table = new Uint8Array(128);
|
|
40
|
+
for (var i = 0; i < 64; i++)
|
|
41
|
+
table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;
|
|
42
|
+
return (base64) => {
|
|
43
|
+
var n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == "=") - (base64[n - 2] == "=")) * 3 / 4 | 0);
|
|
44
|
+
for (var i2 = 0, j = 0; i2 < n; ) {
|
|
45
|
+
var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];
|
|
46
|
+
var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];
|
|
47
|
+
bytes[j++] = c0 << 2 | c1 >> 4;
|
|
48
|
+
bytes[j++] = c1 << 4 | c2 >> 2;
|
|
49
|
+
bytes[j++] = c2 << 6 | c3;
|
|
50
|
+
}
|
|
51
|
+
return bytes;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
|
|
55
|
+
// libkissfft-wasm/libkissfft.cjs
|
|
56
|
+
var require_libkissfft = __commonJS({
|
|
57
|
+
"libkissfft-wasm/libkissfft.cjs"(exports, module) {
|
|
58
|
+
var KissFFTModule = (() => {
|
|
59
|
+
var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0;
|
|
60
|
+
if (typeof __filename !== "undefined")
|
|
61
|
+
_scriptDir = _scriptDir || __filename;
|
|
62
|
+
return function(KissFFTModule2) {
|
|
63
|
+
KissFFTModule2 = KissFFTModule2 || {};
|
|
64
|
+
var Module = typeof KissFFTModule2 != "undefined" ? KissFFTModule2 : {};
|
|
65
|
+
var readyPromiseResolve, readyPromiseReject;
|
|
66
|
+
Module["ready"] = new Promise(function(resolve, reject) {
|
|
67
|
+
readyPromiseResolve = resolve;
|
|
68
|
+
readyPromiseReject = reject;
|
|
69
|
+
});
|
|
70
|
+
var moduleOverrides = Object.assign({}, Module);
|
|
71
|
+
var arguments_ = [];
|
|
72
|
+
var thisProgram = "./this.program";
|
|
73
|
+
var quit_ = (status, toThrow) => {
|
|
74
|
+
throw toThrow;
|
|
75
|
+
};
|
|
76
|
+
var ENVIRONMENT_IS_WEB = typeof window == "object";
|
|
77
|
+
var ENVIRONMENT_IS_WORKER = typeof importScripts == "function";
|
|
78
|
+
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string";
|
|
79
|
+
var scriptDirectory = "";
|
|
80
|
+
function locateFile(path) {
|
|
81
|
+
if (Module["locateFile"]) {
|
|
82
|
+
return Module["locateFile"](path, scriptDirectory);
|
|
83
|
+
}
|
|
84
|
+
return scriptDirectory + path;
|
|
85
|
+
}
|
|
86
|
+
var read_, readAsync, readBinary, setWindowTitle;
|
|
87
|
+
function logExceptionOnExit(e) {
|
|
88
|
+
if (e instanceof ExitStatus)
|
|
89
|
+
return;
|
|
90
|
+
let toLog = e;
|
|
91
|
+
err("exiting due to exception: " + toLog);
|
|
92
|
+
}
|
|
93
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
94
|
+
var fs = __require("fs");
|
|
95
|
+
var nodePath = __require("path");
|
|
96
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
97
|
+
scriptDirectory = nodePath.dirname(scriptDirectory) + "/";
|
|
98
|
+
} else {
|
|
99
|
+
scriptDirectory = __dirname + "/";
|
|
100
|
+
}
|
|
101
|
+
read_ = (filename, binary) => {
|
|
102
|
+
filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
|
|
103
|
+
return fs.readFileSync(filename, binary ? void 0 : "utf8");
|
|
104
|
+
};
|
|
105
|
+
readBinary = (filename) => {
|
|
106
|
+
var ret = read_(filename, true);
|
|
107
|
+
if (!ret.buffer) {
|
|
108
|
+
ret = new Uint8Array(ret);
|
|
109
|
+
}
|
|
110
|
+
return ret;
|
|
111
|
+
};
|
|
112
|
+
readAsync = (filename, onload, onerror) => {
|
|
113
|
+
filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
|
|
114
|
+
fs.readFile(filename, function(err2, data) {
|
|
115
|
+
if (err2)
|
|
116
|
+
onerror(err2);
|
|
117
|
+
else
|
|
118
|
+
onload(data.buffer);
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
if (process["argv"].length > 1) {
|
|
122
|
+
thisProgram = process["argv"][1].replace(/\\/g, "/");
|
|
123
|
+
}
|
|
124
|
+
arguments_ = process["argv"].slice(2);
|
|
125
|
+
process["on"]("uncaughtException", function(ex) {
|
|
126
|
+
if (!(ex instanceof ExitStatus)) {
|
|
127
|
+
throw ex;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
process["on"]("unhandledRejection", function(reason) {
|
|
131
|
+
throw reason;
|
|
132
|
+
});
|
|
133
|
+
quit_ = (status, toThrow) => {
|
|
134
|
+
if (keepRuntimeAlive()) {
|
|
135
|
+
process["exitCode"] = status;
|
|
136
|
+
throw toThrow;
|
|
137
|
+
}
|
|
138
|
+
logExceptionOnExit(toThrow);
|
|
139
|
+
process["exit"](status);
|
|
140
|
+
};
|
|
141
|
+
Module["inspect"] = function() {
|
|
142
|
+
return "[Emscripten Module object]";
|
|
143
|
+
};
|
|
144
|
+
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
145
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
146
|
+
scriptDirectory = self.location.href;
|
|
147
|
+
} else if (typeof document != "undefined" && document.currentScript) {
|
|
148
|
+
scriptDirectory = document.currentScript.src;
|
|
149
|
+
}
|
|
150
|
+
if (_scriptDir) {
|
|
151
|
+
scriptDirectory = _scriptDir;
|
|
152
|
+
}
|
|
153
|
+
if (scriptDirectory.indexOf("blob:") !== 0) {
|
|
154
|
+
scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
|
|
155
|
+
} else {
|
|
156
|
+
scriptDirectory = "";
|
|
157
|
+
}
|
|
158
|
+
{
|
|
159
|
+
read_ = (url) => {
|
|
160
|
+
var xhr = new XMLHttpRequest();
|
|
161
|
+
xhr.open("GET", url, false);
|
|
162
|
+
xhr.send(null);
|
|
163
|
+
return xhr.responseText;
|
|
164
|
+
};
|
|
165
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
166
|
+
readBinary = (url) => {
|
|
167
|
+
var xhr = new XMLHttpRequest();
|
|
168
|
+
xhr.open("GET", url, false);
|
|
169
|
+
xhr.responseType = "arraybuffer";
|
|
170
|
+
xhr.send(null);
|
|
171
|
+
return new Uint8Array(xhr.response);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
readAsync = (url, onload, onerror) => {
|
|
175
|
+
var xhr = new XMLHttpRequest();
|
|
176
|
+
xhr.open("GET", url, true);
|
|
177
|
+
xhr.responseType = "arraybuffer";
|
|
178
|
+
xhr.onload = () => {
|
|
179
|
+
if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
|
|
180
|
+
onload(xhr.response);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
onerror();
|
|
184
|
+
};
|
|
185
|
+
xhr.onerror = onerror;
|
|
186
|
+
xhr.send(null);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
setWindowTitle = (title) => document.title = title;
|
|
190
|
+
} else {
|
|
191
|
+
}
|
|
192
|
+
var out = Module["print"] || console.log.bind(console);
|
|
193
|
+
var err = Module["printErr"] || console.warn.bind(console);
|
|
194
|
+
Object.assign(Module, moduleOverrides);
|
|
195
|
+
moduleOverrides = null;
|
|
196
|
+
if (Module["arguments"])
|
|
197
|
+
arguments_ = Module["arguments"];
|
|
198
|
+
if (Module["thisProgram"])
|
|
199
|
+
thisProgram = Module["thisProgram"];
|
|
200
|
+
if (Module["quit"])
|
|
201
|
+
quit_ = Module["quit"];
|
|
202
|
+
var wasmBinary;
|
|
203
|
+
if (Module["wasmBinary"])
|
|
204
|
+
wasmBinary = Module["wasmBinary"];
|
|
205
|
+
var noExitRuntime = Module["noExitRuntime"] || true;
|
|
206
|
+
if (typeof WebAssembly != "object") {
|
|
207
|
+
abort("no native wasm support detected");
|
|
208
|
+
}
|
|
209
|
+
var wasmMemory;
|
|
210
|
+
var ABORT = false;
|
|
211
|
+
var EXITSTATUS;
|
|
212
|
+
var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : void 0;
|
|
213
|
+
function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {
|
|
214
|
+
var endIdx = idx + maxBytesToRead;
|
|
215
|
+
var endPtr = idx;
|
|
216
|
+
while (heapOrArray[endPtr] && !(endPtr >= endIdx))
|
|
217
|
+
++endPtr;
|
|
218
|
+
if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
|
|
219
|
+
return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
|
|
220
|
+
}
|
|
221
|
+
var str = "";
|
|
222
|
+
while (idx < endPtr) {
|
|
223
|
+
var u0 = heapOrArray[idx++];
|
|
224
|
+
if (!(u0 & 128)) {
|
|
225
|
+
str += String.fromCharCode(u0);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
var u1 = heapOrArray[idx++] & 63;
|
|
229
|
+
if ((u0 & 224) == 192) {
|
|
230
|
+
str += String.fromCharCode((u0 & 31) << 6 | u1);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
var u2 = heapOrArray[idx++] & 63;
|
|
234
|
+
if ((u0 & 240) == 224) {
|
|
235
|
+
u0 = (u0 & 15) << 12 | u1 << 6 | u2;
|
|
236
|
+
} else {
|
|
237
|
+
u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
|
|
238
|
+
}
|
|
239
|
+
if (u0 < 65536) {
|
|
240
|
+
str += String.fromCharCode(u0);
|
|
241
|
+
} else {
|
|
242
|
+
var ch = u0 - 65536;
|
|
243
|
+
str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return str;
|
|
247
|
+
}
|
|
248
|
+
function UTF8ToString(ptr, maxBytesToRead) {
|
|
249
|
+
return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
|
|
250
|
+
}
|
|
251
|
+
function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
|
|
252
|
+
if (!(maxBytesToWrite > 0))
|
|
253
|
+
return 0;
|
|
254
|
+
var startIdx = outIdx;
|
|
255
|
+
var endIdx = outIdx + maxBytesToWrite - 1;
|
|
256
|
+
for (var i = 0; i < str.length; ++i) {
|
|
257
|
+
var u = str.charCodeAt(i);
|
|
258
|
+
if (u >= 55296 && u <= 57343) {
|
|
259
|
+
var u1 = str.charCodeAt(++i);
|
|
260
|
+
u = 65536 + ((u & 1023) << 10) | u1 & 1023;
|
|
261
|
+
}
|
|
262
|
+
if (u <= 127) {
|
|
263
|
+
if (outIdx >= endIdx)
|
|
264
|
+
break;
|
|
265
|
+
heap[outIdx++] = u;
|
|
266
|
+
} else if (u <= 2047) {
|
|
267
|
+
if (outIdx + 1 >= endIdx)
|
|
268
|
+
break;
|
|
269
|
+
heap[outIdx++] = 192 | u >> 6;
|
|
270
|
+
heap[outIdx++] = 128 | u & 63;
|
|
271
|
+
} else if (u <= 65535) {
|
|
272
|
+
if (outIdx + 2 >= endIdx)
|
|
273
|
+
break;
|
|
274
|
+
heap[outIdx++] = 224 | u >> 12;
|
|
275
|
+
heap[outIdx++] = 128 | u >> 6 & 63;
|
|
276
|
+
heap[outIdx++] = 128 | u & 63;
|
|
277
|
+
} else {
|
|
278
|
+
if (outIdx + 3 >= endIdx)
|
|
279
|
+
break;
|
|
280
|
+
heap[outIdx++] = 240 | u >> 18;
|
|
281
|
+
heap[outIdx++] = 128 | u >> 12 & 63;
|
|
282
|
+
heap[outIdx++] = 128 | u >> 6 & 63;
|
|
283
|
+
heap[outIdx++] = 128 | u & 63;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
heap[outIdx] = 0;
|
|
287
|
+
return outIdx - startIdx;
|
|
288
|
+
}
|
|
289
|
+
function stringToUTF8(str, outPtr, maxBytesToWrite) {
|
|
290
|
+
return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
|
|
291
|
+
}
|
|
292
|
+
var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
|
|
293
|
+
function updateGlobalBufferAndViews(buf) {
|
|
294
|
+
buffer = buf;
|
|
295
|
+
Module["HEAP8"] = HEAP8 = new Int8Array(buf);
|
|
296
|
+
Module["HEAP16"] = HEAP16 = new Int16Array(buf);
|
|
297
|
+
Module["HEAP32"] = HEAP32 = new Int32Array(buf);
|
|
298
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
|
|
299
|
+
Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);
|
|
300
|
+
Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);
|
|
301
|
+
Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
|
|
302
|
+
Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
|
|
303
|
+
}
|
|
304
|
+
var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;
|
|
305
|
+
var wasmTable;
|
|
306
|
+
var __ATPRERUN__ = [];
|
|
307
|
+
var __ATINIT__ = [];
|
|
308
|
+
var __ATPOSTRUN__ = [];
|
|
309
|
+
var runtimeInitialized = false;
|
|
310
|
+
function keepRuntimeAlive() {
|
|
311
|
+
return noExitRuntime;
|
|
312
|
+
}
|
|
313
|
+
function preRun() {
|
|
314
|
+
if (Module["preRun"]) {
|
|
315
|
+
if (typeof Module["preRun"] == "function")
|
|
316
|
+
Module["preRun"] = [Module["preRun"]];
|
|
317
|
+
while (Module["preRun"].length) {
|
|
318
|
+
addOnPreRun(Module["preRun"].shift());
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
callRuntimeCallbacks(__ATPRERUN__);
|
|
322
|
+
}
|
|
323
|
+
function initRuntime() {
|
|
324
|
+
runtimeInitialized = true;
|
|
325
|
+
callRuntimeCallbacks(__ATINIT__);
|
|
326
|
+
}
|
|
327
|
+
function postRun() {
|
|
328
|
+
if (Module["postRun"]) {
|
|
329
|
+
if (typeof Module["postRun"] == "function")
|
|
330
|
+
Module["postRun"] = [Module["postRun"]];
|
|
331
|
+
while (Module["postRun"].length) {
|
|
332
|
+
addOnPostRun(Module["postRun"].shift());
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
callRuntimeCallbacks(__ATPOSTRUN__);
|
|
336
|
+
}
|
|
337
|
+
function addOnPreRun(cb) {
|
|
338
|
+
__ATPRERUN__.unshift(cb);
|
|
339
|
+
}
|
|
340
|
+
function addOnInit(cb) {
|
|
341
|
+
__ATINIT__.unshift(cb);
|
|
342
|
+
}
|
|
343
|
+
function addOnPostRun(cb) {
|
|
344
|
+
__ATPOSTRUN__.unshift(cb);
|
|
345
|
+
}
|
|
346
|
+
var runDependencies = 0;
|
|
347
|
+
var runDependencyWatcher = null;
|
|
348
|
+
var dependenciesFulfilled = null;
|
|
349
|
+
function addRunDependency(id) {
|
|
350
|
+
runDependencies++;
|
|
351
|
+
if (Module["monitorRunDependencies"]) {
|
|
352
|
+
Module["monitorRunDependencies"](runDependencies);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function removeRunDependency(id) {
|
|
356
|
+
runDependencies--;
|
|
357
|
+
if (Module["monitorRunDependencies"]) {
|
|
358
|
+
Module["monitorRunDependencies"](runDependencies);
|
|
359
|
+
}
|
|
360
|
+
if (runDependencies == 0) {
|
|
361
|
+
if (runDependencyWatcher !== null) {
|
|
362
|
+
clearInterval(runDependencyWatcher);
|
|
363
|
+
runDependencyWatcher = null;
|
|
364
|
+
}
|
|
365
|
+
if (dependenciesFulfilled) {
|
|
366
|
+
var callback = dependenciesFulfilled;
|
|
367
|
+
dependenciesFulfilled = null;
|
|
368
|
+
callback();
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
function abort(what) {
|
|
373
|
+
if (Module["onAbort"]) {
|
|
374
|
+
Module["onAbort"](what);
|
|
375
|
+
}
|
|
376
|
+
what = "Aborted(" + what + ")";
|
|
377
|
+
err(what);
|
|
378
|
+
ABORT = true;
|
|
379
|
+
EXITSTATUS = 1;
|
|
380
|
+
what += ". Build with -sASSERTIONS for more info.";
|
|
381
|
+
var e = new WebAssembly.RuntimeError(what);
|
|
382
|
+
readyPromiseReject(e);
|
|
383
|
+
throw e;
|
|
384
|
+
}
|
|
385
|
+
var dataURIPrefix = "data:application/octet-stream;base64,";
|
|
386
|
+
function isDataURI(filename) {
|
|
387
|
+
return filename.startsWith(dataURIPrefix);
|
|
388
|
+
}
|
|
389
|
+
function isFileURI(filename) {
|
|
390
|
+
return filename.startsWith("file://");
|
|
391
|
+
}
|
|
392
|
+
var wasmBinaryFile;
|
|
393
|
+
wasmBinaryFile = "libkissfft.wasm";
|
|
394
|
+
if (!isDataURI(wasmBinaryFile)) {
|
|
395
|
+
wasmBinaryFile = locateFile(wasmBinaryFile);
|
|
396
|
+
}
|
|
397
|
+
function getBinary(file) {
|
|
398
|
+
try {
|
|
399
|
+
if (file == wasmBinaryFile && wasmBinary) {
|
|
400
|
+
return new Uint8Array(wasmBinary);
|
|
401
|
+
}
|
|
402
|
+
if (readBinary) {
|
|
403
|
+
return readBinary(file);
|
|
404
|
+
}
|
|
405
|
+
throw "both async and sync fetching of the wasm failed";
|
|
406
|
+
} catch (err2) {
|
|
407
|
+
abort(err2);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
function getBinaryPromise() {
|
|
411
|
+
if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
|
|
412
|
+
if (typeof fetch == "function" && !isFileURI(wasmBinaryFile)) {
|
|
413
|
+
return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
|
|
414
|
+
if (!response["ok"]) {
|
|
415
|
+
throw "failed to load wasm binary file at '" + wasmBinaryFile + "'";
|
|
416
|
+
}
|
|
417
|
+
return response["arrayBuffer"]();
|
|
418
|
+
}).catch(function() {
|
|
419
|
+
return getBinary(wasmBinaryFile);
|
|
420
|
+
});
|
|
421
|
+
} else {
|
|
422
|
+
if (readAsync) {
|
|
423
|
+
return new Promise(function(resolve, reject) {
|
|
424
|
+
readAsync(wasmBinaryFile, function(response) {
|
|
425
|
+
resolve(new Uint8Array(response));
|
|
426
|
+
}, reject);
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return Promise.resolve().then(function() {
|
|
432
|
+
return getBinary(wasmBinaryFile);
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
function createWasm() {
|
|
436
|
+
var info = { "a": asmLibraryArg };
|
|
437
|
+
function receiveInstance(instance, module2) {
|
|
438
|
+
var exports3 = instance.exports;
|
|
439
|
+
Module["asm"] = exports3;
|
|
440
|
+
wasmMemory = Module["asm"]["f"];
|
|
441
|
+
updateGlobalBufferAndViews(wasmMemory.buffer);
|
|
442
|
+
wasmTable = Module["asm"]["p"];
|
|
443
|
+
addOnInit(Module["asm"]["g"]);
|
|
444
|
+
removeRunDependency("wasm-instantiate");
|
|
445
|
+
}
|
|
446
|
+
addRunDependency("wasm-instantiate");
|
|
447
|
+
function receiveInstantiationResult(result) {
|
|
448
|
+
receiveInstance(result["instance"]);
|
|
449
|
+
}
|
|
450
|
+
function instantiateArrayBuffer(receiver) {
|
|
451
|
+
return getBinaryPromise().then(function(binary) {
|
|
452
|
+
return WebAssembly.instantiate(binary, info);
|
|
453
|
+
}).then(function(instance) {
|
|
454
|
+
return instance;
|
|
455
|
+
}).then(receiver, function(reason) {
|
|
456
|
+
err("failed to asynchronously prepare wasm: " + reason);
|
|
457
|
+
abort(reason);
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
function instantiateAsync() {
|
|
461
|
+
if (!wasmBinary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") {
|
|
462
|
+
return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function(response) {
|
|
463
|
+
var result = WebAssembly.instantiateStreaming(response, info);
|
|
464
|
+
return result.then(receiveInstantiationResult, function(reason) {
|
|
465
|
+
err("wasm streaming compile failed: " + reason);
|
|
466
|
+
err("falling back to ArrayBuffer instantiation");
|
|
467
|
+
return instantiateArrayBuffer(receiveInstantiationResult);
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
} else {
|
|
471
|
+
return instantiateArrayBuffer(receiveInstantiationResult);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if (Module["instantiateWasm"]) {
|
|
475
|
+
try {
|
|
476
|
+
var exports2 = Module["instantiateWasm"](info, receiveInstance);
|
|
477
|
+
return exports2;
|
|
478
|
+
} catch (e) {
|
|
479
|
+
err("Module.instantiateWasm callback failed with error: " + e);
|
|
480
|
+
readyPromiseReject(e);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
instantiateAsync().catch(readyPromiseReject);
|
|
484
|
+
return {};
|
|
485
|
+
}
|
|
486
|
+
function ExitStatus(status) {
|
|
487
|
+
this.name = "ExitStatus";
|
|
488
|
+
this.message = "Program terminated with exit(" + status + ")";
|
|
489
|
+
this.status = status;
|
|
490
|
+
}
|
|
491
|
+
function callRuntimeCallbacks(callbacks) {
|
|
492
|
+
while (callbacks.length > 0) {
|
|
493
|
+
callbacks.shift()(Module);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
function _emscripten_memcpy_big(dest, src, num) {
|
|
497
|
+
HEAPU8.copyWithin(dest, src, src + num);
|
|
498
|
+
}
|
|
499
|
+
function abortOnCannotGrowMemory(requestedSize) {
|
|
500
|
+
abort("OOM");
|
|
501
|
+
}
|
|
502
|
+
function _emscripten_resize_heap(requestedSize) {
|
|
503
|
+
var oldSize = HEAPU8.length;
|
|
504
|
+
requestedSize = requestedSize >>> 0;
|
|
505
|
+
abortOnCannotGrowMemory(requestedSize);
|
|
506
|
+
}
|
|
507
|
+
var SYSCALLS = { varargs: void 0, get: function() {
|
|
508
|
+
SYSCALLS.varargs += 4;
|
|
509
|
+
var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
|
|
510
|
+
return ret;
|
|
511
|
+
}, getStr: function(ptr) {
|
|
512
|
+
var ret = UTF8ToString(ptr);
|
|
513
|
+
return ret;
|
|
514
|
+
} };
|
|
515
|
+
function _fd_close(fd) {
|
|
516
|
+
return 52;
|
|
517
|
+
}
|
|
518
|
+
function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
|
|
519
|
+
return 70;
|
|
520
|
+
}
|
|
521
|
+
var printCharBuffers = [null, [], []];
|
|
522
|
+
function printChar(stream, curr) {
|
|
523
|
+
var buffer2 = printCharBuffers[stream];
|
|
524
|
+
if (curr === 0 || curr === 10) {
|
|
525
|
+
(stream === 1 ? out : err)(UTF8ArrayToString(buffer2, 0));
|
|
526
|
+
buffer2.length = 0;
|
|
527
|
+
} else {
|
|
528
|
+
buffer2.push(curr);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
function _fd_write(fd, iov, iovcnt, pnum) {
|
|
532
|
+
var num = 0;
|
|
533
|
+
for (var i = 0; i < iovcnt; i++) {
|
|
534
|
+
var ptr = HEAPU32[iov >> 2];
|
|
535
|
+
var len = HEAPU32[iov + 4 >> 2];
|
|
536
|
+
iov += 8;
|
|
537
|
+
for (var j = 0; j < len; j++) {
|
|
538
|
+
printChar(fd, HEAPU8[ptr + j]);
|
|
539
|
+
}
|
|
540
|
+
num += len;
|
|
541
|
+
}
|
|
542
|
+
HEAPU32[pnum >> 2] = num;
|
|
543
|
+
return 0;
|
|
544
|
+
}
|
|
545
|
+
function getCFunc(ident) {
|
|
546
|
+
var func = Module["_" + ident];
|
|
547
|
+
return func;
|
|
548
|
+
}
|
|
549
|
+
function writeArrayToMemory(array, buffer2) {
|
|
550
|
+
HEAP8.set(array, buffer2);
|
|
551
|
+
}
|
|
552
|
+
function ccall(ident, returnType, argTypes, args, opts) {
|
|
553
|
+
var toC = { "string": (str) => {
|
|
554
|
+
var ret2 = 0;
|
|
555
|
+
if (str !== null && str !== void 0 && str !== 0) {
|
|
556
|
+
var len = (str.length << 2) + 1;
|
|
557
|
+
ret2 = stackAlloc(len);
|
|
558
|
+
stringToUTF8(str, ret2, len);
|
|
559
|
+
}
|
|
560
|
+
return ret2;
|
|
561
|
+
}, "array": (arr) => {
|
|
562
|
+
var ret2 = stackAlloc(arr.length);
|
|
563
|
+
writeArrayToMemory(arr, ret2);
|
|
564
|
+
return ret2;
|
|
565
|
+
} };
|
|
566
|
+
function convertReturnValue(ret2) {
|
|
567
|
+
if (returnType === "string") {
|
|
568
|
+
return UTF8ToString(ret2);
|
|
569
|
+
}
|
|
570
|
+
if (returnType === "boolean")
|
|
571
|
+
return Boolean(ret2);
|
|
572
|
+
return ret2;
|
|
573
|
+
}
|
|
574
|
+
var func = getCFunc(ident);
|
|
575
|
+
var cArgs = [];
|
|
576
|
+
var stack = 0;
|
|
577
|
+
if (args) {
|
|
578
|
+
for (var i = 0; i < args.length; i++) {
|
|
579
|
+
var converter = toC[argTypes[i]];
|
|
580
|
+
if (converter) {
|
|
581
|
+
if (stack === 0)
|
|
582
|
+
stack = stackSave();
|
|
583
|
+
cArgs[i] = converter(args[i]);
|
|
584
|
+
} else {
|
|
585
|
+
cArgs[i] = args[i];
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
var ret = func.apply(null, cArgs);
|
|
590
|
+
function onDone(ret2) {
|
|
591
|
+
if (stack !== 0)
|
|
592
|
+
stackRestore(stack);
|
|
593
|
+
return convertReturnValue(ret2);
|
|
594
|
+
}
|
|
595
|
+
ret = onDone(ret);
|
|
596
|
+
return ret;
|
|
597
|
+
}
|
|
598
|
+
function cwrap(ident, returnType, argTypes, opts) {
|
|
599
|
+
argTypes = argTypes || [];
|
|
600
|
+
var numericArgs = argTypes.every((type) => type === "number" || type === "boolean");
|
|
601
|
+
var numericRet = returnType !== "string";
|
|
602
|
+
if (numericRet && numericArgs && !opts) {
|
|
603
|
+
return getCFunc(ident);
|
|
604
|
+
}
|
|
605
|
+
return function() {
|
|
606
|
+
return ccall(ident, returnType, argTypes, arguments, opts);
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
var asmLibraryArg = { "e": _emscripten_memcpy_big, "c": _emscripten_resize_heap, "d": _fd_close, "b": _fd_seek, "a": _fd_write };
|
|
610
|
+
var asm = createWasm();
|
|
611
|
+
var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() {
|
|
612
|
+
return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["g"]).apply(null, arguments);
|
|
613
|
+
};
|
|
614
|
+
var _kiss_fft_alloc = Module["_kiss_fft_alloc"] = function() {
|
|
615
|
+
return (_kiss_fft_alloc = Module["_kiss_fft_alloc"] = Module["asm"]["h"]).apply(null, arguments);
|
|
616
|
+
};
|
|
617
|
+
var _malloc = Module["_malloc"] = function() {
|
|
618
|
+
return (_malloc = Module["_malloc"] = Module["asm"]["i"]).apply(null, arguments);
|
|
619
|
+
};
|
|
620
|
+
var _free = Module["_free"] = function() {
|
|
621
|
+
return (_free = Module["_free"] = Module["asm"]["j"]).apply(null, arguments);
|
|
622
|
+
};
|
|
623
|
+
var _kiss_fft = Module["_kiss_fft"] = function() {
|
|
624
|
+
return (_kiss_fft = Module["_kiss_fft"] = Module["asm"]["k"]).apply(null, arguments);
|
|
625
|
+
};
|
|
626
|
+
var _kiss_fft_cleanup = Module["_kiss_fft_cleanup"] = function() {
|
|
627
|
+
return (_kiss_fft_cleanup = Module["_kiss_fft_cleanup"] = Module["asm"]["l"]).apply(null, arguments);
|
|
628
|
+
};
|
|
629
|
+
var _kiss_fftr_alloc = Module["_kiss_fftr_alloc"] = function() {
|
|
630
|
+
return (_kiss_fftr_alloc = Module["_kiss_fftr_alloc"] = Module["asm"]["m"]).apply(null, arguments);
|
|
631
|
+
};
|
|
632
|
+
var _kiss_fftr = Module["_kiss_fftr"] = function() {
|
|
633
|
+
return (_kiss_fftr = Module["_kiss_fftr"] = Module["asm"]["n"]).apply(null, arguments);
|
|
634
|
+
};
|
|
635
|
+
var _kiss_fftri = Module["_kiss_fftri"] = function() {
|
|
636
|
+
return (_kiss_fftri = Module["_kiss_fftri"] = Module["asm"]["o"]).apply(null, arguments);
|
|
637
|
+
};
|
|
638
|
+
var stackSave = Module["stackSave"] = function() {
|
|
639
|
+
return (stackSave = Module["stackSave"] = Module["asm"]["q"]).apply(null, arguments);
|
|
640
|
+
};
|
|
641
|
+
var stackRestore = Module["stackRestore"] = function() {
|
|
642
|
+
return (stackRestore = Module["stackRestore"] = Module["asm"]["r"]).apply(null, arguments);
|
|
643
|
+
};
|
|
644
|
+
var stackAlloc = Module["stackAlloc"] = function() {
|
|
645
|
+
return (stackAlloc = Module["stackAlloc"] = Module["asm"]["s"]).apply(null, arguments);
|
|
646
|
+
};
|
|
647
|
+
Module["ccall"] = ccall;
|
|
648
|
+
Module["cwrap"] = cwrap;
|
|
649
|
+
var calledRun;
|
|
650
|
+
dependenciesFulfilled = function runCaller() {
|
|
651
|
+
if (!calledRun)
|
|
652
|
+
run();
|
|
653
|
+
if (!calledRun)
|
|
654
|
+
dependenciesFulfilled = runCaller;
|
|
655
|
+
};
|
|
656
|
+
function run(args) {
|
|
657
|
+
args = args || arguments_;
|
|
658
|
+
if (runDependencies > 0) {
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
preRun();
|
|
662
|
+
if (runDependencies > 0) {
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
function doRun() {
|
|
666
|
+
if (calledRun)
|
|
667
|
+
return;
|
|
668
|
+
calledRun = true;
|
|
669
|
+
Module["calledRun"] = true;
|
|
670
|
+
if (ABORT)
|
|
671
|
+
return;
|
|
672
|
+
initRuntime();
|
|
673
|
+
readyPromiseResolve(Module);
|
|
674
|
+
if (Module["onRuntimeInitialized"])
|
|
675
|
+
Module["onRuntimeInitialized"]();
|
|
676
|
+
postRun();
|
|
677
|
+
}
|
|
678
|
+
if (Module["setStatus"]) {
|
|
679
|
+
Module["setStatus"]("Running...");
|
|
680
|
+
setTimeout(function() {
|
|
681
|
+
setTimeout(function() {
|
|
682
|
+
Module["setStatus"]("");
|
|
683
|
+
}, 1);
|
|
684
|
+
doRun();
|
|
685
|
+
}, 1);
|
|
686
|
+
} else {
|
|
687
|
+
doRun();
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
if (Module["preInit"]) {
|
|
691
|
+
if (typeof Module["preInit"] == "function")
|
|
692
|
+
Module["preInit"] = [Module["preInit"]];
|
|
693
|
+
while (Module["preInit"].length > 0) {
|
|
694
|
+
Module["preInit"].pop()();
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
run();
|
|
698
|
+
return KissFFTModule2.ready;
|
|
699
|
+
};
|
|
700
|
+
})();
|
|
701
|
+
if (typeof exports === "object" && typeof module === "object")
|
|
702
|
+
module.exports = KissFFTModule;
|
|
703
|
+
else if (typeof define === "function" && define["amd"])
|
|
704
|
+
define([], function() {
|
|
705
|
+
return KissFFTModule;
|
|
706
|
+
});
|
|
707
|
+
else if (typeof exports === "object")
|
|
708
|
+
exports["KissFFTModule"] = KissFFTModule;
|
|
709
|
+
}
|
|
710
|
+
});
|
|
711
|
+
|
|
712
|
+
// src/exports-bundle.ts
|
|
713
|
+
var exports_bundle_exports = {};
|
|
714
|
+
__export(exports_bundle_exports, {
|
|
715
|
+
KissFFT: () => KissFFT_default,
|
|
716
|
+
KissFFTModuleFactoryFn: () => KissFFTModuleFactoryFn,
|
|
717
|
+
KissFFTModuleFactoryWasm: () => KissFFTModuleFactoryWasm,
|
|
718
|
+
instantiateKissFFTModule: () => instantiateKissFFTModule_default,
|
|
719
|
+
instantiateKissFFTModuleFromFile: () => instantiateKissFFTModuleFromFile_default
|
|
720
|
+
});
|
|
721
|
+
|
|
722
|
+
// src/instantiateKissFFTModule.ts
|
|
723
|
+
var import_libkissfft = __toESM(require_libkissfft(), 1);
|
|
724
|
+
|
|
725
|
+
// libkissfft-wasm/libkissfft.wasm
|
|
726
|
+
var libkissfft_exports = {};
|
|
727
|
+
__export(libkissfft_exports, {
|
|
728
|
+
default: () => libkissfft_default
|
|
729
|
+
});
|
|
730
|
+
var libkissfft_default = __toBinary("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");
|
|
731
|
+
|
|
732
|
+
// src/instantiateKissFFTModule.ts
|
|
733
|
+
var KissFFTModuleFactoryFn = import_libkissfft.default;
|
|
734
|
+
var KissFFTModuleFactoryWasm = libkissfft_default;
|
|
735
|
+
var instantiateKissFFTModule = async (ModuleFactoryIn = import_libkissfft.default, wasmBinaryIn = libkissfft_default) => {
|
|
736
|
+
const g = globalThis;
|
|
737
|
+
if (g.AudioWorkletGlobalScope) {
|
|
738
|
+
g.importScripts = () => {
|
|
739
|
+
};
|
|
740
|
+
g.self = { location: { href: "" } };
|
|
741
|
+
}
|
|
742
|
+
const module = await ModuleFactoryIn({
|
|
743
|
+
wasmBinary: wasmBinaryIn
|
|
744
|
+
/*,
|
|
745
|
+
getPreloadedPackage: (remotePackageName: string, remotePackageSize: number) => {
|
|
746
|
+
if (remotePackageName === "libfaust-wasm.data") return dataBinaryIn.buffer;
|
|
747
|
+
return new ArrayBuffer(0);
|
|
748
|
+
}*/
|
|
749
|
+
});
|
|
750
|
+
if (g.AudioWorkletGlobalScope) {
|
|
751
|
+
delete g.importScripts;
|
|
752
|
+
delete g.self;
|
|
753
|
+
}
|
|
754
|
+
return module;
|
|
755
|
+
};
|
|
756
|
+
var instantiateKissFFTModule_default = instantiateKissFFTModule;
|
|
757
|
+
|
|
758
|
+
// src/instantiateKissFFTModuleFromFile.ts
|
|
759
|
+
var instantiateKissFFTModuleFromFile = async (jsFile, wasmFile = jsFile.replace(/c?js$/, "wasm"), dataFile = jsFile.replace(/c?js$/, "data")) => {
|
|
760
|
+
var _a, _b;
|
|
761
|
+
let Module;
|
|
762
|
+
let wasmBinary;
|
|
763
|
+
const jsCodeHead = /var (.+) = \(\(\) => \{/;
|
|
764
|
+
if (typeof globalThis.fetch === "function") {
|
|
765
|
+
let jsCode = await (await fetch(jsFile)).text();
|
|
766
|
+
jsCode = `${jsCode}
|
|
767
|
+
export default ${(_a = jsCode.match(jsCodeHead)) == null ? void 0 : _a[1]};
|
|
768
|
+
`;
|
|
769
|
+
const jsFileMod = URL.createObjectURL(new Blob([jsCode], { type: "text/javascript" }));
|
|
770
|
+
Module = (await import(
|
|
771
|
+
/* webpackIgnore: true */
|
|
772
|
+
jsFileMod
|
|
773
|
+
)).default;
|
|
774
|
+
wasmBinary = new Uint8Array(await (await fetch(wasmFile)).arrayBuffer());
|
|
775
|
+
} else {
|
|
776
|
+
const { promises: fs } = await import("fs");
|
|
777
|
+
const { pathToFileURL } = await import("url");
|
|
778
|
+
let jsCode = await fs.readFile(jsFile, { encoding: "utf-8" });
|
|
779
|
+
jsCode = `
|
|
780
|
+
import process from "process";
|
|
781
|
+
import * as path from "path";
|
|
782
|
+
import { createRequire } from "module";
|
|
783
|
+
import { fileURLToPath } from "url";
|
|
784
|
+
|
|
785
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
786
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
787
|
+
const require = createRequire(import.meta.url);
|
|
788
|
+
|
|
789
|
+
${jsCode}
|
|
790
|
+
|
|
791
|
+
export default ${(_b = jsCode.match(jsCodeHead)) == null ? void 0 : _b[1]};
|
|
792
|
+
`;
|
|
793
|
+
const jsFileMod = jsFile.replace(/c?js$/, "mjs");
|
|
794
|
+
await fs.writeFile(jsFileMod, jsCode);
|
|
795
|
+
Module = (await import(
|
|
796
|
+
/* webpackIgnore: true */
|
|
797
|
+
pathToFileURL(jsFileMod).href
|
|
798
|
+
)).default;
|
|
799
|
+
await fs.unlink(jsFileMod);
|
|
800
|
+
wasmBinary = (await fs.readFile(wasmFile)).buffer;
|
|
801
|
+
}
|
|
802
|
+
const module = await Module({
|
|
803
|
+
wasmBinary
|
|
804
|
+
/*,
|
|
805
|
+
getPreloadedPackage: (remotePackageName: string, remotePackageSize: number) => {
|
|
806
|
+
if (remotePackageName === "libfaust-wasm.data") return dataBinary;
|
|
807
|
+
return new ArrayBuffer(0);
|
|
808
|
+
}*/
|
|
809
|
+
});
|
|
810
|
+
return module;
|
|
811
|
+
};
|
|
812
|
+
var instantiateKissFFTModuleFromFile_default = instantiateKissFFTModuleFromFile;
|
|
813
|
+
|
|
814
|
+
// src/KissFFT.ts
|
|
815
|
+
var KissFFT = class {
|
|
816
|
+
constructor(kissFFTModule) {
|
|
817
|
+
const {
|
|
818
|
+
_kiss_fftr_alloc,
|
|
819
|
+
_kiss_fftr,
|
|
820
|
+
_kiss_fftri,
|
|
821
|
+
_kiss_fft,
|
|
822
|
+
_kiss_fft_alloc,
|
|
823
|
+
_kiss_fft_cleanup,
|
|
824
|
+
_free,
|
|
825
|
+
_malloc
|
|
826
|
+
} = kissFFTModule;
|
|
827
|
+
class FFT {
|
|
828
|
+
constructor(size) {
|
|
829
|
+
this.size = size;
|
|
830
|
+
this.fcfg = _kiss_fft_alloc(size, false);
|
|
831
|
+
this.icfg = _kiss_fft_alloc(size, true);
|
|
832
|
+
this.inptr = kissFFTModule._malloc(size * 8 + size * 8);
|
|
833
|
+
this.outptr = this.inptr + size * 8;
|
|
834
|
+
this.cin = new Float32Array(kissFFTModule.HEAPU8.buffer, this.inptr, size * 2);
|
|
835
|
+
this.cout = new Float32Array(kissFFTModule.HEAPU8.buffer, this.outptr, size * 2);
|
|
836
|
+
}
|
|
837
|
+
forward(cin) {
|
|
838
|
+
if (typeof cin === "function")
|
|
839
|
+
cin(this.cin);
|
|
840
|
+
else
|
|
841
|
+
this.cin.set(cin);
|
|
842
|
+
_kiss_fft(this.fcfg, this.inptr, this.outptr);
|
|
843
|
+
return this.cout;
|
|
844
|
+
}
|
|
845
|
+
inverse(cpx) {
|
|
846
|
+
if (typeof cpx === "function")
|
|
847
|
+
cpx(this.cin);
|
|
848
|
+
else
|
|
849
|
+
this.cin.set(cpx);
|
|
850
|
+
_kiss_fft(this.icfg, this.inptr, this.outptr);
|
|
851
|
+
return this.cout;
|
|
852
|
+
}
|
|
853
|
+
dispose() {
|
|
854
|
+
_free(this.inptr);
|
|
855
|
+
_kiss_fft_cleanup();
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
class FFTR {
|
|
859
|
+
constructor(size) {
|
|
860
|
+
this.size = size;
|
|
861
|
+
this.fcfg = _kiss_fftr_alloc(size, false);
|
|
862
|
+
this.icfg = _kiss_fftr_alloc(size, true);
|
|
863
|
+
this.rptr = _malloc(size * 4 + (size + 2) * 4);
|
|
864
|
+
this.cptr = this.rptr + size * 4;
|
|
865
|
+
this.ri = new Float32Array(kissFFTModule.HEAPU8.buffer, this.rptr, size);
|
|
866
|
+
this.ci = new Float32Array(kissFFTModule.HEAPU8.buffer, this.cptr, size + 2);
|
|
867
|
+
}
|
|
868
|
+
forward(real) {
|
|
869
|
+
if (typeof real === "function")
|
|
870
|
+
real(this.ri);
|
|
871
|
+
else
|
|
872
|
+
this.ri.set(real);
|
|
873
|
+
_kiss_fftr(this.fcfg, this.rptr, this.cptr);
|
|
874
|
+
return this.ci;
|
|
875
|
+
}
|
|
876
|
+
inverse(cpx) {
|
|
877
|
+
if (typeof cpx === "function")
|
|
878
|
+
cpx(this.ci);
|
|
879
|
+
else
|
|
880
|
+
this.ci.set(cpx);
|
|
881
|
+
_kiss_fftri(this.icfg, this.cptr, this.rptr);
|
|
882
|
+
return this.ri;
|
|
883
|
+
}
|
|
884
|
+
dispose() {
|
|
885
|
+
_free(this.rptr);
|
|
886
|
+
_kiss_fft_cleanup();
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
this._FFT = FFT;
|
|
890
|
+
this._FFTR = FFTR;
|
|
891
|
+
}
|
|
892
|
+
get FFT() {
|
|
893
|
+
return this._FFT;
|
|
894
|
+
}
|
|
895
|
+
get FFTR() {
|
|
896
|
+
return this._FFTR;
|
|
897
|
+
}
|
|
898
|
+
};
|
|
899
|
+
var KissFFT_default = KissFFT;
|
|
900
|
+
|
|
901
|
+
// src/index-bundle-iife.ts
|
|
902
|
+
globalThis.kissfftwasm = exports_bundle_exports;
|
|
903
|
+
})();
|
|
904
|
+
//# sourceMappingURL=index.js.map
|