@opendaw/studio-core-wasm 0.0.5 → 0.0.7
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/dist/WasmEngine.d.ts +0 -3
- package/dist/WasmEngine.d.ts.map +1 -1
- package/dist/WasmEngine.js +6 -14
- package/dist/boot.d.ts +2 -1
- package/dist/boot.d.ts.map +1 -1
- package/dist/boot.js +2 -1
- package/dist/device-linker.d.ts +3 -0
- package/dist/device-linker.d.ts.map +1 -1
- package/dist/device-linker.js +6 -0
- package/dist/engine-exports.d.ts +1 -0
- package/dist/engine-exports.d.ts.map +1 -1
- package/dist/engine-modules.d.ts +28 -0
- package/dist/engine-modules.d.ts.map +1 -1
- package/dist/engine-modules.js +49 -1
- package/dist/protocol.d.ts +2 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/wasm/engine.wasm +0 -0
- package/dist/wasm/plugins/device_autotune.wasm +0 -0
- package/dist/wasm/plugins/device_crusher.wasm +0 -0
- package/dist/wasm/plugins/device_fold.wasm +0 -0
- package/dist/wasm/plugins/device_maximizer.wasm +0 -0
- package/dist/wasm/plugins/device_playfield_sample.wasm +0 -0
- package/dist/wasm/plugins/device_vocoder.wasm +0 -0
- package/dist/wasm-offline-worker.js +38 -38
- package/dist/wasm-offline-worker.js.map +4 -4
- package/dist/wasm-processor.js +29 -29
- package/dist/wasm-processor.js.map +4 -4
- package/package.json +6 -6
package/dist/WasmEngine.d.ts
CHANGED
|
@@ -4,10 +4,7 @@ export type WasmEngineUrls = {
|
|
|
4
4
|
wasmUrl: string;
|
|
5
5
|
};
|
|
6
6
|
export declare namespace WasmEngine {
|
|
7
|
-
const isEnabled: () => boolean;
|
|
8
|
-
const setEnabled: (enabled: boolean) => void;
|
|
9
7
|
const isReady: () => boolean;
|
|
10
|
-
const useForExports: () => boolean;
|
|
11
8
|
const ensureReady: (context: BaseAudioContext) => Promise<boolean>;
|
|
12
9
|
const install: (urls: WasmEngineUrls) => void;
|
|
13
10
|
}
|
package/dist/WasmEngine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WasmEngine.d.ts","sourceRoot":"","sources":["../src/WasmEngine.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,cAAc,GAAG;IAEzB,YAAY,EAAE,MAAM,CAAA;IAEpB,gBAAgB,EAAE,MAAM,CAAA;IAExB,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,yBAAiB,UAAU,CAAC;IAKjB,MAAM,
|
|
1
|
+
{"version":3,"file":"WasmEngine.d.ts","sourceRoot":"","sources":["../src/WasmEngine.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,cAAc,GAAG;IAEzB,YAAY,EAAE,MAAM,CAAA;IAEpB,gBAAgB,EAAE,MAAM,CAAA;IAExB,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,yBAAiB,UAAU,CAAC;IAKjB,MAAM,OAAO,QAAO,OAA6B,CAAA;IAKjD,MAAM,WAAW,GAAU,SAAS,gBAAgB,KAAG,OAAO,CAAC,OAAO,CAa5E,CAAA;IAEM,MAAM,OAAO,GAAI,MAAM,cAAc,KAAG,IAsB9C,CAAA;CAqFJ"}
|
package/dist/WasmEngine.js
CHANGED
|
@@ -14,18 +14,13 @@ import { createSyncLoopback } from "./sync/loopback";
|
|
|
14
14
|
import { WASM_ENGINE_PROCESSOR_NAME, WASM_FROZEN_CHANNEL, WASM_SYNC_CHANNEL } from "./protocol";
|
|
15
15
|
export var WasmEngine;
|
|
16
16
|
(function (WasmEngine) {
|
|
17
|
-
const FLAG_KEY = "opendaw-wasm-engine";
|
|
18
17
|
const modules = new MutableObservableOption();
|
|
19
18
|
const config = new MutableObservableOption();
|
|
20
|
-
WasmEngine.isEnabled = () => localStorage.getItem(FLAG_KEY) !== "false";
|
|
21
|
-
WasmEngine.setEnabled = (enabled) => localStorage.setItem(FLAG_KEY, String(enabled));
|
|
22
19
|
// Whether the wasm modules are compiled and the processor is registered (i.e. `ensureReady` succeeded).
|
|
23
20
|
WasmEngine.isReady = () => modules.nonEmpty();
|
|
24
|
-
// Whether an offline render (mixdown, stems, publish, video audio) should run through the wasm variant:
|
|
25
|
-
// the engine is enabled, its artifacts actually loaded, and the offline worker is installed.
|
|
26
|
-
WasmEngine.useForExports = () => WasmEngine.isEnabled() && WasmEngine.isReady() && OfflineEngineRenderer.hasVariant();
|
|
27
21
|
// Compile the wasm modules + register the processor module (both once). Returns false when the engine
|
|
28
|
-
// artifacts are unavailable (e.g. a deploy without them)
|
|
22
|
+
// artifacts are unavailable (e.g. a deploy without them). There is no other engine to fall back to, so a
|
|
23
|
+
// caller that gets false has no working engine and must say so rather than carry on.
|
|
29
24
|
WasmEngine.ensureReady = async (context) => {
|
|
30
25
|
if (modules.nonEmpty()) {
|
|
31
26
|
return true;
|
|
@@ -46,17 +41,14 @@ export var WasmEngine;
|
|
|
46
41
|
config.wrap(urls);
|
|
47
42
|
// The OFFLINE render path (mixdown/stems/freeze/benchmarks): the worker self-loads the wasm
|
|
48
43
|
// artifacts from `wasmUrl`, so no preloading is needed here.
|
|
49
|
-
OfflineEngineRenderer.
|
|
50
|
-
OfflineEngineRenderer.installVariantPolicy(() => WasmEngine.useForExports()); // freeze/consolidation follow the toggle
|
|
44
|
+
OfflineEngineRenderer.install(urls.offlineWorkerUrl, { wasmUrl: urls.wasmUrl });
|
|
51
45
|
EngineVariant.install(() => {
|
|
52
|
-
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
const { engineModule, deviceModules, deviceBoxTypes, composites } = modules.unwrap();
|
|
46
|
+
const { engineModule, deviceModules, deviceBoxTypes, composites, effectComposites } = modules.unwrap("WasmEngine.ensureReady must succeed before an engine boots");
|
|
56
47
|
const attachment = {
|
|
57
48
|
// A FRESH shared memory per boot: re-instantiating the engine re-applies its data segments,
|
|
58
49
|
// but a recycled heap would leak every allocation of the previous engine instance.
|
|
59
|
-
engineModule, deviceModules, deviceBoxTypes, composites,
|
|
50
|
+
engineModule, deviceModules, deviceBoxTypes, composites, effectComposites,
|
|
51
|
+
memory: createEngineMemory()
|
|
60
52
|
};
|
|
61
53
|
return {
|
|
62
54
|
processorName: WASM_ENGINE_PROCESSOR_NAME,
|
package/dist/boot.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Procedure } from "@opendaw/lib-std";
|
|
2
2
|
import { EngineToClient } from "@opendaw/studio-adapters";
|
|
3
3
|
import { EngineExports } from "./engine-exports";
|
|
4
|
-
import { CompositeSpec } from "./engine-modules";
|
|
4
|
+
import { CompositeSpec, EffectCompositeSpec } from "./engine-modules";
|
|
5
5
|
export type WasmEngineModules = {
|
|
6
6
|
engineModule: WebAssembly.Module;
|
|
7
7
|
deviceModules: ReadonlyArray<WebAssembly.Module>;
|
|
8
8
|
deviceBoxTypes: ReadonlyArray<string>;
|
|
9
9
|
composites: ReadonlyArray<CompositeSpec>;
|
|
10
|
+
effectComposites: ReadonlyArray<EffectCompositeSpec>;
|
|
10
11
|
};
|
|
11
12
|
export declare const describeEngineTrap: (engine: EngineExports, memory: WebAssembly.Memory, error: unknown) => unknown;
|
|
12
13
|
export declare const instantiateWasmEngine: (modules: WasmEngineModules, memory: WebAssembly.Memory, sampleRate: number, engineToClient: EngineToClient) => EngineExports;
|
package/dist/boot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,SAAS,EAA2B,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAC,aAAa,EAAmB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,SAAS,EAA2B,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAC,aAAa,EAAmB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,aAAa,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAA;AAQnE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,YAAY,EAAE,WAAW,CAAC,MAAM,CAAA;IAChC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACxC,gBAAgB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CACvD,CAAA;AAKD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,EAAE,QAAQ,WAAW,CAAC,MAAM,EAAE,OAAO,OAAO,KAAG,OAItG,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,iBAAiB,EAAE,QAAQ,WAAW,CAAC,MAAM,EACtD,YAAY,MAAM,EAAE,gBAAgB,cAAc,KAAG,aAgB1F,CAAA;AAOD,eAAO,MAAM,qBAAqB,GAAI,QAAQ,aAAa,EAAE,QAAQ,WAAW,CAAC,MAAM,EACjD,gBAAgB,cAAc,EAAE,SAAS,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAC9D,oBAAoB,MAAM,EAAE,SAAS,SAAS,CAAC,OAAO,CAAC,KAAG,IA4C/F,CAAA"}
|
package/dist/boot.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// runs the sample/soundfont load handshakes over the UNCHANGED EngineToClient RPC.
|
|
4
4
|
import { isDefined, tryCatch } from "@opendaw/lib-std";
|
|
5
5
|
import { readPanicMessage } from "./engine-exports";
|
|
6
|
-
import { linkDevice, registerComposite } from "./device-linker";
|
|
6
|
+
import { linkDevice, registerComposite, registerEffectComposite } from "./device-linker";
|
|
7
7
|
import { ScriptBridges } from "./script-bridge";
|
|
8
8
|
import { NamBridges } from "./nam-bridge";
|
|
9
9
|
import { simplifySoundfont } from "./soundfont-simplify";
|
|
@@ -29,6 +29,7 @@ export const instantiateWasmEngine = (modules, memory, sampleRate, engineToClien
|
|
|
29
29
|
const bridgeImports = { ...scriptBridges.imports(), ...namBridges.imports() };
|
|
30
30
|
modules.deviceModules.forEach((deviceModule, index) => linkDevice(engine, memory, table, deviceModule, modules.deviceBoxTypes[index], sampleRate, bridgeImports));
|
|
31
31
|
modules.composites.forEach(composite => registerComposite(engine, memory, composite));
|
|
32
|
+
modules.effectComposites.forEach(composite => registerEffectComposite(engine, memory, composite));
|
|
32
33
|
return engine;
|
|
33
34
|
};
|
|
34
35
|
// Pop every sample/soundfont the engine queued and run the load handshake for each: fetch + decode over
|
package/dist/device-linker.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EffectCompositeSpec } from "./engine-modules";
|
|
1
2
|
export declare const DEVICE_STACK_SIZE: number;
|
|
2
3
|
export type BridgeImports = Record<string, (...args: Array<number>) => number | void>;
|
|
3
4
|
export type DeviceExports = {
|
|
@@ -24,6 +25,7 @@ export type LinkerEngine = {
|
|
|
24
25
|
device_register: (processIndex: number, stateSize: number, kind: number, initIndex: number, parameterChangedIndex: number, fieldChangedIndex: number, sampleChangedIndex: number, soundfontChangedIndex: number, resetIndex: number, terminateIndex: number, midiEffectsField: number, audioEffectsField: number, paramCollectionField: number, sampleCollectionField: number) => number;
|
|
25
26
|
device_set_box_type: (deviceId: number, nameLen: number) => void;
|
|
26
27
|
composite_register: (nameLen: number, childrenField: number, indexKey: number, excludeKey: number, cellInstrumentField: number, cellMidiField: number, cellAudioField: number, childEnabledKey: number, childMuteKey: number, childSoloKey: number) => void;
|
|
28
|
+
effect_composite_register: (nameLen: number, kind: number, distributor: number, entriesField: number, indexKey: number, chainField: number, labelKey: number, gainKey: number, panKey: number, muteKey: number, soloKey: number, dryKey: number, wetKey: number, inputTapField: number, crossover1Key: number, crossover2Key: number, crossover3Key: number) => void;
|
|
27
29
|
input_reserve: (len: number) => number;
|
|
28
30
|
};
|
|
29
31
|
export type CompositeRegistration = {
|
|
@@ -44,4 +46,5 @@ export declare const parseDylink: (module: WebAssembly.Module) => {
|
|
|
44
46
|
};
|
|
45
47
|
export declare const linkDevice: (engine: LinkerEngine, memory: WebAssembly.Memory, table: WebAssembly.Table, module: WebAssembly.Module, boxType: string, sampleRate: number, bridgeImports: BridgeImports) => void;
|
|
46
48
|
export declare const registerComposite: (engine: LinkerEngine, memory: WebAssembly.Memory, spec: CompositeRegistration) => void;
|
|
49
|
+
export declare const registerEffectComposite: (engine: LinkerEngine, memory: WebAssembly.Memory, spec: EffectCompositeSpec) => void;
|
|
47
50
|
//# sourceMappingURL=device-linker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-linker.d.ts","sourceRoot":"","sources":["../src/device-linker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-linker.d.ts","sourceRoot":"","sources":["../src/device-linker.ts"],"names":[],"mappings":"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"}
|
package/dist/device-linker.js
CHANGED
|
@@ -107,3 +107,9 @@ export const linkDevice = (engine, memory, table, module, boxType, sampleRate, b
|
|
|
107
107
|
export const registerComposite = (engine, memory, spec) => {
|
|
108
108
|
engine.composite_register(writeName(engine, memory, spec.boxType), spec.childrenField, spec.indexKey, spec.excludeKey, spec.cellInstrumentField, spec.cellMidiField, spec.cellAudioField, spec.childEnabledKey, spec.childMuteKey, spec.childSoloKey);
|
|
109
109
|
};
|
|
110
|
+
// Register one EFFECT COMPOSITE box type (a parallel fx / midi stack): write its name, then map its entry
|
|
111
|
+
// collection + the entry box's field keys. Its entries are realized by the engine itself, so — unlike a
|
|
112
|
+
// composite's child instrument — there is no plugin to `linkDevice`.
|
|
113
|
+
export const registerEffectComposite = (engine, memory, spec) => {
|
|
114
|
+
engine.effect_composite_register(writeName(engine, memory, spec.boxType), spec.kind, spec.distributor, spec.entriesField, spec.indexKey, spec.chainField, spec.labelKey, spec.gainKey, spec.panKey, spec.muteKey, spec.soloKey, spec.dryKey, spec.wetKey, spec.inputTapField, spec.crossoverKeys[0], spec.crossoverKeys[1], spec.crossoverKeys[2]);
|
|
115
|
+
};
|
package/dist/engine-exports.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type EngineExports = {
|
|
|
4
4
|
device_register: (processIndex: number, stateSize: number, kind: number, initIndex: number, parameterChangedIndex: number, fieldChangedIndex: number, sampleChangedIndex: number, soundfontChangedIndex: number, resetIndex: number, terminateIndex: number, midiEffectsField: number, audioEffectsField: number, paramCollectionField: number, sampleCollectionField: number) => number;
|
|
5
5
|
device_set_box_type: (deviceId: number, nameLen: number) => void;
|
|
6
6
|
composite_register: (nameLen: number, childrenField: number, indexKey: number, excludeKey: number, cellInstrumentField: number, cellMidiField: number, cellAudioField: number, childEnabledKey: number, childMuteKey: number, childSoloKey: number) => void;
|
|
7
|
+
effect_composite_register: (nameLen: number, kind: number, distributor: number, entriesField: number, indexKey: number, chainField: number, labelKey: number, gainKey: number, panKey: number, muteKey: number, soloKey: number, dryKey: number, wetKey: number, inputTapField: number, crossover1Key: number, crossover2Key: number, crossover3Key: number) => void;
|
|
7
8
|
input_ptr: () => number;
|
|
8
9
|
input_capacity: () => number;
|
|
9
10
|
input_reserve: (len: number) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-exports.d.ts","sourceRoot":"","sources":["../src/engine-exports.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine-exports.d.ts","sourceRoot":"","sources":["../src/engine-exports.ts"],"names":[],"mappings":"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"}
|
package/dist/engine-modules.d.ts
CHANGED
|
@@ -10,11 +10,38 @@ export type CompositeSpec = {
|
|
|
10
10
|
childMuteKey: number;
|
|
11
11
|
childSoloKey: number;
|
|
12
12
|
};
|
|
13
|
+
export type EffectCompositeSpec = {
|
|
14
|
+
boxType: string;
|
|
15
|
+
kind: EffectCompositeKind;
|
|
16
|
+
distributor: EffectCompositeDistributor;
|
|
17
|
+
entriesField: number;
|
|
18
|
+
indexKey: number;
|
|
19
|
+
chainField: number;
|
|
20
|
+
labelKey: number;
|
|
21
|
+
gainKey: number;
|
|
22
|
+
panKey: number;
|
|
23
|
+
muteKey: number;
|
|
24
|
+
soloKey: number;
|
|
25
|
+
dryKey: number;
|
|
26
|
+
wetKey: number;
|
|
27
|
+
inputTapField: number;
|
|
28
|
+
crossoverKeys: [number, number, number];
|
|
29
|
+
};
|
|
30
|
+
export declare enum EffectCompositeKind {
|
|
31
|
+
AudioEffect = 1,
|
|
32
|
+
MidiEffect = 2
|
|
33
|
+
}
|
|
34
|
+
export declare enum EffectCompositeDistributor {
|
|
35
|
+
Broadcast = 0,
|
|
36
|
+
Stereo = 1,
|
|
37
|
+
Frequency = 2
|
|
38
|
+
}
|
|
13
39
|
export type EngineModules = {
|
|
14
40
|
engineModule: WebAssembly.Module;
|
|
15
41
|
deviceModules: ReadonlyArray<WebAssembly.Module>;
|
|
16
42
|
deviceBoxTypes: ReadonlyArray<string>;
|
|
17
43
|
composites: ReadonlyArray<CompositeSpec>;
|
|
44
|
+
effectComposites: ReadonlyArray<EffectCompositeSpec>;
|
|
18
45
|
};
|
|
19
46
|
export declare const createEngineMemory: () => WebAssembly.Memory;
|
|
20
47
|
export declare const DEVICES: ReadonlyArray<{
|
|
@@ -22,5 +49,6 @@ export declare const DEVICES: ReadonlyArray<{
|
|
|
22
49
|
boxType: string;
|
|
23
50
|
}>;
|
|
24
51
|
export declare const COMPOSITES: ReadonlyArray<CompositeSpec>;
|
|
52
|
+
export declare const EFFECT_COMPOSITES: ReadonlyArray<EffectCompositeSpec>;
|
|
25
53
|
export declare const loadEngineModules: (base?: string) => Promise<EngineModules>;
|
|
26
54
|
//# sourceMappingURL=engine-modules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-modules.d.ts","sourceRoot":"","sources":["../src/engine-modules.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAG7E,mBAAmB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAE3E,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAC7C,CAAA;
|
|
1
|
+
{"version":3,"file":"engine-modules.d.ts","sourceRoot":"","sources":["../src/engine-modules.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAG7E,mBAAmB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAE3E,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAC7C,CAAA;AASD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;IACzB,WAAW,EAAE,0BAA0B,CAAA;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C,CAAA;AAGD,oBAAY,mBAAmB;IAAE,WAAW,IAAI;IAAE,UAAU,IAAI;CAAC;AAGjE,oBAAY,0BAA0B;IAAE,SAAS,IAAI;IAAE,MAAM,IAAI;IAAE,SAAS,IAAI;CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG;IACxB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAA;IAChC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACxC,gBAAgB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CACvD,CAAA;AAWD,eAAO,MAAM,kBAAkB,QAAO,WAAW,CAAC,MASjD,CAAA;AAMD,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2BnE,CAAA;AAKD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,aAAa,CAWnD,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,mBAAmB,CA0BhE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,OAAM,MAAW,KAAG,OAAO,CAAC,aAAa,CAUhF,CAAA"}
|
package/dist/engine-modules.js
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { Option } from "@opendaw/lib-std";
|
|
2
|
+
// WASM CONTRACT: mirrors abi DEVICE_KIND_* (crates/abi/src/lib.rs).
|
|
3
|
+
export var EffectCompositeKind;
|
|
4
|
+
(function (EffectCompositeKind) {
|
|
5
|
+
EffectCompositeKind[EffectCompositeKind["AudioEffect"] = 1] = "AudioEffect";
|
|
6
|
+
EffectCompositeKind[EffectCompositeKind["MidiEffect"] = 2] = "MidiEffect";
|
|
7
|
+
})(EffectCompositeKind || (EffectCompositeKind = {}));
|
|
8
|
+
// WASM CONTRACT: mirrors `Distributor` in crates/engine/src/lib.rs.
|
|
9
|
+
export var EffectCompositeDistributor;
|
|
10
|
+
(function (EffectCompositeDistributor) {
|
|
11
|
+
EffectCompositeDistributor[EffectCompositeDistributor["Broadcast"] = 0] = "Broadcast";
|
|
12
|
+
EffectCompositeDistributor[EffectCompositeDistributor["Stereo"] = 1] = "Stereo";
|
|
13
|
+
EffectCompositeDistributor[EffectCompositeDistributor["Frequency"] = 2] = "Frequency";
|
|
14
|
+
})(EffectCompositeDistributor || (EffectCompositeDistributor = {}));
|
|
2
15
|
// The engine's single linear memory: SHARED, so the main thread can see the WASM heap (e.g. to write
|
|
3
16
|
// decoded sample data straight into it at an engine-allocated offset). A SHARED memory cannot be reallocated
|
|
4
17
|
// on grow (its base must stay fixed for every thread), so the runtime RESERVES the entire `maximum` as VIRTUAL
|
|
@@ -49,6 +62,7 @@ export const DEVICES = [
|
|
|
49
62
|
{ url: "/wasm/plugins/device_soundfont.wasm", boxType: "SoundfontDeviceBox" }, // instrument (preset sampler)
|
|
50
63
|
{ url: "/wasm/plugins/device_vocoder.wasm", boxType: "VocoderDeviceBox" }, // audio effect (channel vocoder + sidechain)
|
|
51
64
|
{ url: "/wasm/plugins/device_neural_amp.wasm", boxType: "NeuralAmpDeviceBox" }, // audio effect (NAM, via the nam bridge)
|
|
65
|
+
{ url: "/wasm/plugins/device_autotune.wasm", boxType: "AutotuneDeviceBox" }, // audio effect (pitch correction, PSOLA)
|
|
52
66
|
{ url: "/wasm/plugins/device_playfield_sample.wasm", boxType: "PlayfieldSampleBox" } // composite child (one Playfield slot)
|
|
53
67
|
];
|
|
54
68
|
// The composite box types. Playfield hosts its slots in the `samples` field (key 10); each slot's note is its
|
|
@@ -66,11 +80,45 @@ export const COMPOSITES = [
|
|
|
66
80
|
cellInstrumentField: 2, cellMidiField: 3, cellAudioField: 4, childEnabledKey: 0,
|
|
67
81
|
childMuteKey: 0, childSoloKey: 0 }
|
|
68
82
|
];
|
|
83
|
+
// The EFFECT composite box types (parallel fx / midi stacks). Each hosts its ENTRIES at field 10, ordered by the
|
|
84
|
+
// entry's own `index` (3); an entry holds its chain at field 2, its label at 4, and its gain / mute / solo at
|
|
85
|
+
// 40 / 41 / 42. An audio composite additionally has its input tap at 11 and dry / wet at 12 / 13. The entry
|
|
86
|
+
// boxes are NOT plugins — the engine realizes them itself, so nothing is added to DEVICES for them.
|
|
87
|
+
export const EFFECT_COMPOSITES = [
|
|
88
|
+
// The parallel FX stack: the input is BROADCAST to every entry, their outputs mixed into the wet sum.
|
|
89
|
+
{
|
|
90
|
+
boxType: "AudioEffectCompositeBox", kind: EffectCompositeKind.AudioEffect,
|
|
91
|
+
distributor: EffectCompositeDistributor.Broadcast,
|
|
92
|
+
entriesField: 10, indexKey: 3, chainField: 2, labelKey: 4,
|
|
93
|
+
gainKey: 40, panKey: 43, muteKey: 41, soloKey: 42, dryKey: 12, wetKey: 13, inputTapField: 11,
|
|
94
|
+
crossoverKeys: [0, 0, 0]
|
|
95
|
+
},
|
|
96
|
+
// The stereo SPLIT: same shape and same entry box, but entry 0 gets left and entry 1 gets right.
|
|
97
|
+
{
|
|
98
|
+
boxType: "StereoCompositeBox", kind: EffectCompositeKind.AudioEffect,
|
|
99
|
+
distributor: EffectCompositeDistributor.Stereo,
|
|
100
|
+
entriesField: 10, indexKey: 3, chainField: 2, labelKey: 4,
|
|
101
|
+
gainKey: 40, panKey: 43, muteKey: 41, soloKey: 42, dryKey: 12, wetKey: 13, inputTapField: 11,
|
|
102
|
+
crossoverKeys: [0, 0, 0]
|
|
103
|
+
},
|
|
104
|
+
// The frequency SPLIT: the input is separated into bands (one per entry, low to high) by the Frequency
|
|
105
|
+
// distributor's Linkwitz-Riley crossovers at fields 14 / 15 / 16.
|
|
106
|
+
{
|
|
107
|
+
boxType: "FrequencySplitBox", kind: EffectCompositeKind.AudioEffect,
|
|
108
|
+
distributor: EffectCompositeDistributor.Frequency,
|
|
109
|
+
entriesField: 10, indexKey: 3, chainField: 2, labelKey: 4,
|
|
110
|
+
gainKey: 40, panKey: 43, muteKey: 41, soloKey: 42, dryKey: 12, wetKey: 13, inputTapField: 11,
|
|
111
|
+
crossoverKeys: [14, 15, 16]
|
|
112
|
+
}
|
|
113
|
+
];
|
|
69
114
|
export const loadEngineModules = async (base = "") => {
|
|
70
115
|
const urls = [`${base}/wasm/engine.wasm`, ...DEVICES.map(device => `${base}${device.url}`)];
|
|
71
116
|
const buffers = await Promise.all(urls.map(url => fetch(url).then(response => response.ok
|
|
72
117
|
? response.arrayBuffer()
|
|
73
118
|
: Promise.reject(new Error(`Could not load wasm module '${url}' (${response.status} ${response.statusText})`)))));
|
|
74
119
|
const [engineModule, ...deviceModules] = await Promise.all(buffers.map(bytes => WebAssembly.compile(bytes)));
|
|
75
|
-
return {
|
|
120
|
+
return {
|
|
121
|
+
engineModule, deviceModules, deviceBoxTypes: DEVICES.map(device => device.boxType),
|
|
122
|
+
composites: COMPOSITES, effectComposites: EFFECT_COMPOSITES
|
|
123
|
+
};
|
|
76
124
|
};
|
package/dist/protocol.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { UUID } from "@opendaw/lib-std";
|
|
2
|
-
import type { CompositeSpec } from "./engine-modules";
|
|
2
|
+
import type { CompositeSpec, EffectCompositeSpec } from "./engine-modules";
|
|
3
3
|
export type WasmEngineAttachment = {
|
|
4
4
|
engineModule: WebAssembly.Module;
|
|
5
5
|
deviceModules: ReadonlyArray<WebAssembly.Module>;
|
|
6
6
|
deviceBoxTypes: ReadonlyArray<string>;
|
|
7
7
|
composites: ReadonlyArray<CompositeSpec>;
|
|
8
|
+
effectComposites: ReadonlyArray<EffectCompositeSpec>;
|
|
8
9
|
memory: WebAssembly.Memory;
|
|
9
10
|
};
|
|
10
11
|
export interface WasmSyncProtocol {
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,EAAC,aAAa,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAA;AAGxE,MAAM,MAAM,oBAAoB,GAAG;IAC/B,YAAY,EAAE,WAAW,CAAC,MAAM,CAAA;IAChC,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACxC,gBAAgB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IACpD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAA;CAC7B,CAAA;AAMD,MAAM,WAAW,gBAAgB;IAC7B,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAMD,MAAM,WAAW,kBAAkB;IAC/B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACrE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9F,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;CACtC;AAED,eAAO,MAAM,0BAA0B,0BAA0B,CAAA;AACjE,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,mBAAmB,wBAAwB,CAAA"}
|
package/dist/wasm/engine.wasm
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|