@mimium/mimium-webaudio 4.0.2 → 4.0.3
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 +1 -1
- package/dist/audioprocessor.mjs +15 -15
- package/dist/audioprocessor.mjs.map +1 -1
- package/dist/index.mjs +124 -101
- package/dist/index.mjs.map +1 -1
- package/dist/mimium_web-45qAhlDr.js +794 -0
- package/dist/mimium_web-45qAhlDr.js.map +1 -0
- package/package.json +2 -2
- package/dist/mimium_web-DPSIpWn3.js +0 -772
- package/dist/mimium_web-DPSIpWn3.js.map +0 -1
package/Readme.md
CHANGED
|
@@ -59,7 +59,7 @@ setupMimiumAudioWorklet(
|
|
|
59
59
|
): Promise<MimiumProcessorNode>
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
- `libBaseUrl`: Base URL for standard mimium libraries (default: `https://raw.githubusercontent.com/mimium-org/mimium-rs/
|
|
62
|
+
- `libBaseUrl`: Base URL for standard mimium libraries (default: `https://raw.githubusercontent.com/mimium-org/mimium-rs/main/lib/`).
|
|
63
63
|
- `moduleBaseUrl`: Base URL for user modules resolved by `mod` / `include` (default: current page base URL).
|
|
64
64
|
|
|
65
65
|
For code that uses standard library modules (`use osc::sinwave`, etc.), calling `preloadMimiumLibCache` before `setupMimiumAudioWorklet` is recommended.
|
package/dist/audioprocessor.mjs
CHANGED
|
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import "./textencoder-B0AgIAQT.js";
|
|
5
|
-
import { initSync as g, Config as f, Context as
|
|
5
|
+
import { initSync as g, Config as f, Context as w } from "./mimium_web-45qAhlDr.js";
|
|
6
6
|
const d = [
|
|
7
7
|
"core.mmm",
|
|
8
8
|
"delay.mmm",
|
|
@@ -14,12 +14,12 @@ const d = [
|
|
|
14
14
|
"reactive.mmm",
|
|
15
15
|
"reverb.mmm"
|
|
16
16
|
];
|
|
17
|
-
function _(
|
|
18
|
-
return
|
|
17
|
+
function _(l) {
|
|
18
|
+
return l.replace(/\\/g, "/").replace(/^\.\//, "").replace(/^\//, "");
|
|
19
19
|
}
|
|
20
|
-
function
|
|
21
|
-
const s = _(
|
|
22
|
-
return [.../* @__PURE__ */ new Set([
|
|
20
|
+
function y(l) {
|
|
21
|
+
const s = _(l).replace(/^lib\//, "");
|
|
22
|
+
return [.../* @__PURE__ */ new Set([l, s, `./${s}`, `lib/${s}`, `/lib/${s}`])];
|
|
23
23
|
}
|
|
24
24
|
class b extends AudioWorkletProcessor {
|
|
25
25
|
constructor() {
|
|
@@ -56,11 +56,11 @@ class b extends AudioWorkletProcessor {
|
|
|
56
56
|
break;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
async compile(e, s, r, m = "", p = "https://raw.githubusercontent.com/mimium-org/mimium-rs/
|
|
59
|
+
async compile(e, s, r, m = "", p = "https://raw.githubusercontent.com/mimium-org/mimium-rs/main/lib/", c = []) {
|
|
60
60
|
this.isCompiled = false, this.context = null, this.interleaved_input = new Float32Array(), this.interleaved_output = new Float32Array();
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
const t = new
|
|
61
|
+
let n = f.new();
|
|
62
|
+
n.sample_rate = e, n.buffer_size = s;
|
|
63
|
+
const t = new w(n);
|
|
64
64
|
let a = {
|
|
65
65
|
type: "compile_error",
|
|
66
66
|
data: { message: "compile did not complete." }
|
|
@@ -79,10 +79,10 @@ class b extends AudioWorkletProcessor {
|
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
81
|
c.forEach((o) => {
|
|
82
|
-
|
|
82
|
+
y(o.path).forEach((u) => {
|
|
83
83
|
t.put_virtual_file_cache(u, o.content);
|
|
84
84
|
});
|
|
85
|
-
}), t.
|
|
85
|
+
}), await t.compile(r);
|
|
86
86
|
const h = t.get_output_channels() || 0;
|
|
87
87
|
if (h <= 0) {
|
|
88
88
|
this.context = null, this.isCompiled = false, this.interleaved_input = new Float32Array(), this.interleaved_output = new Float32Array(), a = {
|
|
@@ -113,8 +113,8 @@ class b extends AudioWorkletProcessor {
|
|
|
113
113
|
process(e, s, r) {
|
|
114
114
|
var _a, _b2;
|
|
115
115
|
if (this.context && this.isCompiled) {
|
|
116
|
-
const m = this.context.get_input_channels(), p = this.context.get_output_channels(), c = e[0],
|
|
117
|
-
if (this.interleaved_input.length !== (((_a = c == null ? void 0 : c[0]) == null ? void 0 : _a.length) ?? 0) * m || this.interleaved_output.length !== (((_b2 =
|
|
116
|
+
const m = this.context.get_input_channels(), p = this.context.get_output_channels(), c = e[0], n = s[0];
|
|
117
|
+
if (this.interleaved_input.length !== (((_a = c == null ? void 0 : c[0]) == null ? void 0 : _a.length) ?? 0) * m || this.interleaved_output.length !== (((_b2 = n == null ? void 0 : n[0]) == null ? void 0 : _b2.length) ?? 0) * p)
|
|
118
118
|
return true;
|
|
119
119
|
c.forEach((t, a) => {
|
|
120
120
|
for (let i = 0; i < t.length; i++)
|
|
@@ -128,7 +128,7 @@ class b extends AudioWorkletProcessor {
|
|
|
128
128
|
data: { message: t instanceof Error ? t.message : String(t) }
|
|
129
129
|
}), true;
|
|
130
130
|
}
|
|
131
|
-
|
|
131
|
+
n.forEach((t, a) => {
|
|
132
132
|
for (let i = 0; i < t.length; i++)
|
|
133
133
|
t[i] = this.interleaved_output[p * i + a];
|
|
134
134
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioprocessor.mjs","sources":["../src/audioprocessor.mts"],"sourcesContent":["import \"./textencoder.mjs\";\nimport { initSync, Context, Config } from \"mimium-web\";\n\nconst STANDARD_LIB_FILES = [\n \"core.mmm\",\n \"delay.mmm\",\n \"env.mmm\",\n \"filter.mmm\",\n \"math.mmm\",\n \"noise.mmm\",\n \"osc.mmm\",\n \"reactive.mmm\",\n \"reverb.mmm\",\n];\n\nfunction normalizeVirtualPath(path: string): string {\n return path.replace(/\\\\/g, \"/\").replace(/^\\.\\//, \"\").replace(/^\\//, \"\");\n}\n\nfunction expandVirtualPathAliases(path: string): string[] {\n const normalized = normalizeVirtualPath(path);\n const strippedLib = normalized.replace(/^lib\\//, \"\");\n return [...new Set([path, strippedLib, `./${strippedLib}`, `lib/${strippedLib}`, `/lib/${strippedLib}`])];\n}\n\nexport class MimiumProcessor extends AudioWorkletProcessor {\n context: Context | null;\n isCompiled: boolean;\n interleaved_input: Float32Array = new Float32Array();\n interleaved_output: Float32Array = new Float32Array();\n\n constructor() {\n super();\n this.context = null;\n this.isCompiled = false;\n this.port.onmessage = (event) => {\n this.onmessage(event.data);\n };\n }\n onmessage(event: MessageEvent<any>) {\n console.log(\"onmessage \", event);\n switch (event.type) {\n case \"send-wasm-module\": {\n console.log(\"start_loading\");\n const wasmBinary = event.data as ArrayBuffer; //this is invalid conversion for workaround.\n WebAssembly.compile(wasmBinary)\n .then((wasm) => {\n initSync({ module: wasm });\n console.log(\"wasm module loaded,sending message\");\n this.port.postMessage({ type: \"wasm-module-loaded\" });\n })\n .catch((e) => {\n console.error(\"wasm module load error, \", e);\n this.port.postMessage({ type: \"error_wasm_load\", data: e });\n });\n\n break;\n }\n case \"compile\":\n void this.compile(\n event.data.samplerate,\n event.data.buffersize,\n event.data.src,\n event.data.moduleBaseUrl,\n event.data.libBaseUrl,\n event.data.virtualFiles\n );\n break;\n }\n }\n public async compile(\n samplerate: number,\n buffersize: number,\n src: string,\n moduleBaseUrl: string = \"\",\n libBaseUrl: string = \"https://raw.githubusercontent.com/mimium-org/mimium-rs/dev/lib/\",\n virtualFiles: Array<{ path: string; content: string }> = []\n ) {\n this.isCompiled = false;\n this.context = null;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n\n let config = Config.new();\n config.sample_rate = samplerate;\n config.buffer_size = buffersize;\n const nextContext = new Context(config); //io channel is written in context.vonfig\n\n let compileMessage: {\n type: \"compile_finished\" | \"compile_error\";\n data: { output_channels?: number; message?: string };\n } = {\n type: \"compile_error\",\n data: { message: \"compile did not complete.\" },\n };\n\n try {\n if (moduleBaseUrl) {\n nextContext.set_module_base_url(moduleBaseUrl);\n }\n const virtualFileNames = new Set(\n virtualFiles.map((file) => normalizeVirtualPath(file.path).replace(/^lib\\//, \"\"))\n );\n const hasStdLibVirtualFiles = STANDARD_LIB_FILES.every((libFile) =>\n virtualFileNames.has(libFile)\n );\n\n if (!hasStdLibVirtualFiles) {\n const missing = STANDARD_LIB_FILES.filter((libFile) => !virtualFileNames.has(libFile));\n throw new Error(\n `virtual lib cache is incomplete. missing=[${missing.join(\", \")}]. worklet does not fetch libs; preload on main thread is required. baseUrl=${libBaseUrl}`\n );\n }\n\n virtualFiles.forEach((file) => {\n expandVirtualPathAliases(file.path).forEach((alias) => {\n nextContext.put_virtual_file_cache(alias, file.content);\n });\n });\n nextContext.compile_direct(src);\n\n const outputChannels = nextContext.get_output_channels() || 0;\n if (outputChannels <= 0) {\n this.context = null;\n this.isCompiled = false;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n compileMessage = {\n type: \"compile_error\",\n data: { message: \"compile failed: compile finished with zero output channels.\" },\n };\n return;\n }\n\n this.interleaved_input = new Float32Array(\n buffersize * nextContext.get_input_channels()\n );\n this.interleaved_output = new Float32Array(\n buffersize * outputChannels\n );\n this.context = nextContext;\n this.isCompiled = true;\n\n compileMessage = {\n type: \"compile_finished\",\n data: { output_channels: outputChannels },\n };\n } catch (e) {\n this.context = null;\n this.isCompiled = false;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n\n compileMessage = {\n type: \"compile_error\",\n data: {\n message: `compile failed: ${e instanceof Error ? e.message : String(e)}`,\n },\n };\n } finally {\n this.port.postMessage(compileMessage);\n }\n }\n public process(\n inputs: Float32Array[][],\n outputs: Float32Array[][],\n parameter: Record<string, Float32Array>\n ) {\n if (this.context && this.isCompiled) {\n const ichannels = this.context.get_input_channels();\n const ochannels = this.context.get_output_channels();\n const input = inputs[0];\n const output = outputs[0];\n if (\n this.interleaved_input.length !== (input?.[0]?.length ?? 0) * ichannels ||\n this.interleaved_output.length !== (output?.[0]?.length ?? 0) * ochannels\n ) {\n return true;\n }\n input.forEach((input, ich) => {\n for (let i = 0; i < input.length; i++) {\n this.interleaved_input[ichannels * i + ich] = input[i];\n }\n });\n this.interleaved_output.fill(0);\n try {\n this.context.process(this.interleaved_input, this.interleaved_output);\n } catch (e) {\n this.context = null;\n this.isCompiled = false;\n this.port.postMessage({\n type: \"runtime_error\",\n data: { message: e instanceof Error ? e.message : String(e) },\n });\n return true;\n }\n output.forEach((output, och) => {\n for (let i = 0; i < output.length; i++) {\n output[i] = this.interleaved_output[ochannels * i + och];\n }\n });\n }\n return true;\n }\n}\n\nregisterProcessor(\"MimiumProcessor\", MimiumProcessor);\n"],"names":["STANDARD_LIB_FILES","normalizeVirtualPath","path","expandVirtualPathAliases","strippedLib","MimiumProcessor","event","wasmBinary","wasm","initSync","e","samplerate","buffersize","src","moduleBaseUrl","libBaseUrl","virtualFiles","config","Config","nextContext","Context","compileMessage","virtualFileNames","file","libFile","missing","alias","outputChannels","inputs","outputs","parameter","ichannels","ochannels","input","output","ich","och"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audioprocessor.mjs","sources":["../src/audioprocessor.mts"],"sourcesContent":["import \"./textencoder.mjs\";\nimport { initSync, Context, Config } from \"mimium-web\";\n\nconst STANDARD_LIB_FILES = [\n \"core.mmm\",\n \"delay.mmm\",\n \"env.mmm\",\n \"filter.mmm\",\n \"math.mmm\",\n \"noise.mmm\",\n \"osc.mmm\",\n \"reactive.mmm\",\n \"reverb.mmm\",\n];\n\nfunction normalizeVirtualPath(path: string): string {\n return path.replace(/\\\\/g, \"/\").replace(/^\\.\\//, \"\").replace(/^\\//, \"\");\n}\n\nfunction expandVirtualPathAliases(path: string): string[] {\n const normalized = normalizeVirtualPath(path);\n const strippedLib = normalized.replace(/^lib\\//, \"\");\n return [...new Set([path, strippedLib, `./${strippedLib}`, `lib/${strippedLib}`, `/lib/${strippedLib}`])];\n}\n\nexport class MimiumProcessor extends AudioWorkletProcessor {\n context: Context | null;\n isCompiled: boolean;\n interleaved_input: Float32Array = new Float32Array();\n interleaved_output: Float32Array = new Float32Array();\n\n constructor() {\n super();\n this.context = null;\n this.isCompiled = false;\n this.port.onmessage = (event) => {\n this.onmessage(event.data);\n };\n }\n onmessage(event: MessageEvent<any>) {\n console.log(\"onmessage \", event);\n switch (event.type) {\n case \"send-wasm-module\": {\n console.log(\"start_loading\");\n const wasmBinary = event.data as ArrayBuffer; //this is invalid conversion for workaround.\n WebAssembly.compile(wasmBinary)\n .then((wasm) => {\n initSync({ module: wasm });\n console.log(\"wasm module loaded,sending message\");\n this.port.postMessage({ type: \"wasm-module-loaded\" });\n })\n .catch((e) => {\n console.error(\"wasm module load error, \", e);\n this.port.postMessage({ type: \"error_wasm_load\", data: e });\n });\n\n break;\n }\n case \"compile\":\n void this.compile(\n event.data.samplerate,\n event.data.buffersize,\n event.data.src,\n event.data.moduleBaseUrl,\n event.data.libBaseUrl,\n event.data.virtualFiles\n );\n break;\n }\n }\n public async compile(\n samplerate: number,\n buffersize: number,\n src: string,\n moduleBaseUrl: string = \"\",\n libBaseUrl: string = \"https://raw.githubusercontent.com/mimium-org/mimium-rs/main/lib/\",\n virtualFiles: Array<{ path: string; content: string }> = []\n ) {\n this.isCompiled = false;\n this.context = null;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n\n let config = Config.new();\n config.sample_rate = samplerate;\n config.buffer_size = buffersize;\n const nextContext = new Context(config); //io channel is written in context.vonfig\n\n let compileMessage: {\n type: \"compile_finished\" | \"compile_error\";\n data: { output_channels?: number; message?: string };\n } = {\n type: \"compile_error\",\n data: { message: \"compile did not complete.\" },\n };\n\n try {\n if (moduleBaseUrl) {\n nextContext.set_module_base_url(moduleBaseUrl);\n }\n const virtualFileNames = new Set(\n virtualFiles.map((file) => normalizeVirtualPath(file.path).replace(/^lib\\//, \"\"))\n );\n const hasStdLibVirtualFiles = STANDARD_LIB_FILES.every((libFile) =>\n virtualFileNames.has(libFile)\n );\n\n if (!hasStdLibVirtualFiles) {\n const missing = STANDARD_LIB_FILES.filter((libFile) => !virtualFileNames.has(libFile));\n throw new Error(\n `virtual lib cache is incomplete. missing=[${missing.join(\", \")}]. worklet does not fetch libs; preload on main thread is required. baseUrl=${libBaseUrl}`\n );\n }\n\n virtualFiles.forEach((file) => {\n expandVirtualPathAliases(file.path).forEach((alias) => {\n nextContext.put_virtual_file_cache(alias, file.content);\n });\n });\n await nextContext.compile(src);\n\n const outputChannels = nextContext.get_output_channels() || 0;\n if (outputChannels <= 0) {\n this.context = null;\n this.isCompiled = false;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n compileMessage = {\n type: \"compile_error\",\n data: { message: \"compile failed: compile finished with zero output channels.\" },\n };\n return;\n }\n\n this.interleaved_input = new Float32Array(\n buffersize * nextContext.get_input_channels()\n );\n this.interleaved_output = new Float32Array(\n buffersize * outputChannels\n );\n this.context = nextContext;\n this.isCompiled = true;\n\n compileMessage = {\n type: \"compile_finished\",\n data: { output_channels: outputChannels },\n };\n } catch (e) {\n this.context = null;\n this.isCompiled = false;\n this.interleaved_input = new Float32Array();\n this.interleaved_output = new Float32Array();\n\n compileMessage = {\n type: \"compile_error\",\n data: {\n message: `compile failed: ${e instanceof Error ? e.message : String(e)}`,\n },\n };\n } finally {\n this.port.postMessage(compileMessage);\n }\n }\n public process(\n inputs: Float32Array[][],\n outputs: Float32Array[][],\n parameter: Record<string, Float32Array>\n ) {\n if (this.context && this.isCompiled) {\n const ichannels = this.context.get_input_channels();\n const ochannels = this.context.get_output_channels();\n const input = inputs[0];\n const output = outputs[0];\n if (\n this.interleaved_input.length !== (input?.[0]?.length ?? 0) * ichannels ||\n this.interleaved_output.length !== (output?.[0]?.length ?? 0) * ochannels\n ) {\n return true;\n }\n input.forEach((input, ich) => {\n for (let i = 0; i < input.length; i++) {\n this.interleaved_input[ichannels * i + ich] = input[i];\n }\n });\n this.interleaved_output.fill(0);\n try {\n this.context.process(this.interleaved_input, this.interleaved_output);\n } catch (e) {\n this.context = null;\n this.isCompiled = false;\n this.port.postMessage({\n type: \"runtime_error\",\n data: { message: e instanceof Error ? e.message : String(e) },\n });\n return true;\n }\n output.forEach((output, och) => {\n for (let i = 0; i < output.length; i++) {\n output[i] = this.interleaved_output[ochannels * i + och];\n }\n });\n }\n return true;\n }\n}\n\nregisterProcessor(\"MimiumProcessor\", MimiumProcessor);\n"],"names":["STANDARD_LIB_FILES","normalizeVirtualPath","path","expandVirtualPathAliases","strippedLib","MimiumProcessor","event","wasmBinary","wasm","initSync","e","samplerate","buffersize","src","moduleBaseUrl","libBaseUrl","virtualFiles","config","Config","nextContext","Context","compileMessage","virtualFileNames","file","libFile","missing","alias","outputChannels","inputs","outputs","parameter","ichannels","ochannels","input","output","ich","och"],"mappings":"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"}
|