@opendaw/studio-adapters 0.0.117 → 0.0.119

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.
@@ -18,6 +18,7 @@ export declare namespace DeviceBoxUtils {
18
18
  const isDeviceBox: (box: Box) => box is DeviceBox;
19
19
  const isInstrumentDeviceBox: (box: Box) => box is InstrumentDeviceBox;
20
20
  const isEffectDeviceBox: (box: Box) => box is EffectDeviceBox;
21
+ const isChainEffectOf: (box: Box, host: Box) => box is EffectDeviceBox;
21
22
  const lookupHostField: (box: Maybe<Box>) => PointerField;
22
23
  const lookupLabelField: (box: Maybe<Box>) => StringField;
23
24
  const lookupEnabledField: (box: Maybe<Box>) => BooleanField;
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceBox.d.ts","sourceRoot":"","sources":["../src/DeviceBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAA0B,KAAK,EAAQ,MAAM,kBAAkB,CAAA;AAEtE,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,YAAY,CAAA;IACrB,SAAS,EAAE,YAAY,CAAA;CAC1B,GAAG,GAAG,CAAA;AAEP,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;CAC9C,GAAG,SAAS,CAAA;AAEb,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IACtE,KAAK,EAAE,UAAU,CAAA;CACpB,GAAG,SAAS,CAAA;AAEb,yBAAiB,cAAc,CAAC;IACrB,MAAM,WAAW,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,SAAuC,CAAA;IAC9E,MAAM,qBAAqB,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,mBACI,CAAA;IACrD,MAAM,iBAAiB,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,eACqD,CAAA;IAClG,MAAM,eAAe,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAEyB,CAAA;IACpE,MAAM,gBAAgB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,WAE0B,CAAA;IACtE,MAAM,kBAAkB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAE4B,CAAA;IAC1E,MAAM,oBAAoB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAE8B,CAAA;IAC9E,MAAM,gBAAgB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,UAE0B,CAAA;CAChF"}
1
+ {"version":3,"file":"DeviceBox.d.ts","sourceRoot":"","sources":["../src/DeviceBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAA0B,KAAK,EAAQ,MAAM,kBAAkB,CAAA;AAEtE,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,YAAY,CAAA;IACrB,SAAS,EAAE,YAAY,CAAA;CAC1B,GAAG,GAAG,CAAA;AAEP,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;CAC9C,GAAG,SAAS,CAAA;AAEb,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IACtE,KAAK,EAAE,UAAU,CAAA;CACpB,GAAG,SAAS,CAAA;AAEb,yBAAiB,cAAc,CAAC;IACrB,MAAM,WAAW,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,SAAuC,CAAA;IAC9E,MAAM,qBAAqB,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,mBACI,CAAA;IACrD,MAAM,iBAAiB,GAAI,KAAK,GAAG,KAAG,GAAG,IAAI,eACqD,CAAA;IAClG,MAAM,eAAe,GAAI,KAAK,GAAG,EAAE,MAAM,GAAG,KAAG,GAAG,IAAI,eACkC,CAAA;IACxF,MAAM,eAAe,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAEyB,CAAA;IACpE,MAAM,gBAAgB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,WAE0B,CAAA;IACtE,MAAM,kBAAkB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAE4B,CAAA;IAC1E,MAAM,oBAAoB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,YAE8B,CAAA;IAC9E,MAAM,gBAAgB,GAAI,KAAK,KAAK,CAAC,GAAG,CAAC,KAAG,UAE0B,CAAA;CAChF"}
package/dist/DeviceBox.js CHANGED
@@ -5,6 +5,7 @@ export var DeviceBoxUtils;
5
5
  DeviceBoxUtils.isDeviceBox = (box) => box.tags.type === "device";
6
6
  DeviceBoxUtils.isInstrumentDeviceBox = (box) => DeviceBoxUtils.isDeviceBox(box) && box.tags.deviceType === "instrument";
7
7
  DeviceBoxUtils.isEffectDeviceBox = (box) => DeviceBoxUtils.isDeviceBox(box) && (box.tags.deviceType === "audio-effect" || box.tags.deviceType === "midi-effect");
8
+ DeviceBoxUtils.isChainEffectOf = (box, host) => DeviceBoxUtils.isEffectDeviceBox(box) && box.host.targetVertex.mapOr(vertex => vertex.box === host, false);
8
9
  DeviceBoxUtils.lookupHostField = (box) => isDefined(box) && "host" in box && isInstanceOf(box.host, PointerField)
9
10
  ? box.host : panic(`Could not find 'host' field in '${box?.name}'`);
10
11
  DeviceBoxUtils.lookupLabelField = (box) => isDefined(box) && "label" in box && isInstanceOf(box.label, StringField)
@@ -8,6 +8,7 @@ export type EngineProcessorAttachment = {
8
8
  project: ArrayBufferLike;
9
9
  exportConfiguration?: ExportConfiguration;
10
10
  options?: ProcessorOptions;
11
+ variant?: Record<string, unknown>;
11
12
  };
12
13
  export type ExportStemConfiguration = {
13
14
  includeAudioEffects: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"EngineProcessorAttachment.d.ts","sourceRoot":"","sources":["../src/EngineProcessorAttachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAa,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAGjC,MAAM,MAAM,yBAAyB,GAAG;IACpC,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,aAAa,EAAE,iBAAiB,CAAA;IAChC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,yBAAiB,mBAAmB,CAAC;IAC1B,MAAM,UAAU,GAAI,QAAQ,MAAM,CAAC,mBAAmB,CAAC,KAAG,GAI3D,CAAA;IAEC,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MAA4D,CAAA;IAErG,MAAM,0BAA0B,GAAI,eAAe,mBAAmB,KAAG,IAmB/E,CAAA;CACJ"}
1
+ {"version":3,"file":"EngineProcessorAttachment.d.ts","sourceRoot":"","sources":["../src/EngineProcessorAttachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAa,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAGjC,MAAM,MAAM,yBAAyB,GAAG;IACpC,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,aAAa,EAAE,iBAAiB,CAAA;IAChC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IAC/C,KAAK,CAAC,EAAE,WAAW,CAAA;CACtB,CAAA;AAED,yBAAiB,mBAAmB,CAAC;IAC1B,MAAM,UAAU,GAAI,QAAQ,MAAM,CAAC,mBAAmB,CAAC,KAAG,GAI3D,CAAA;IAEC,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MAA4D,CAAA;IAErG,MAAM,0BAA0B,GAAI,eAAe,mBAAmB,KAAG,IAmB/E,CAAA;CACJ"}
@@ -14,6 +14,7 @@ export declare namespace ScriptCompiler {
14
14
  readonly registryName: string;
15
15
  readonly functionName: string;
16
16
  };
17
+ const wrap: (config: ScriptCompiler.Config, uuid: string, update: number, userCode: string) => string;
17
18
  const create: (config: Config) => {
18
19
  stripHeader: (source: string) => string;
19
20
  load: (audioContext: BaseAudioContext, deviceBox: ScriptDeviceBox) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptCompiler.d.ts","sourceRoot":"","sources":["../src/ScriptCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAkB,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAmIrC,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,eAAgB,SAAQ,SAAS;QAC9C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;QACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;QAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC3C;IAED,KAAY,MAAM,GAAG;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAChC,CAAA;IAEM,MAAM,MAAM,GAAI,QAAQ,MAAM;8BAMP,MAAM,KAAG,MAAM;6BACV,gBAAgB,aAAa,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;gCAYzD,gBAAgB,WACrB,OAAO,aACL,eAAe,UAClB,MAAM,WACN,OAAO,KAAW,OAAO,CAAC,IAAI,CAAC;KA2B9D,CAAA;CACJ"}
1
+ {"version":3,"file":"ScriptCompiler.d.ts","sourceRoot":"","sources":["../src/ScriptCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAkB,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAqJrC,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,eAAgB,SAAQ,SAAS;QAC9C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;QACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;QAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC3C;IAED,KAAY,MAAM,GAAG;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAChC,CAAA;IAKM,MAAM,IAAI,WArDO,cAAc,CAAC,MAAM,QAAQ,MAAM,UAAU,MAAM,YAAY,MAAM,KAAG,MAqDlE,CAAA;IAEvB,MAAM,MAAM,GAAI,QAAQ,MAAM;8BAMP,MAAM,KAAG,MAAM;6BACV,gBAAgB,aAAa,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;gCAYzD,gBAAgB,WACrB,OAAO,aACL,eAAe,UAClB,MAAM,WACN,OAAO,KAAW,OAAO,CAAC,IAAI,CAAC;KA2B9D,CAAA;CACJ"}
@@ -112,7 +112,22 @@ const reconcileSamples = (deviceBox, declared, order) => {
112
112
  }
113
113
  }
114
114
  };
115
- const wrapCode = (config, uuid, update, userCode) => `
115
+ // Wrap the user script for registration into `globalThis.openDAW.<registry>[uuid]`. Beyond `{update, create}`
116
+ // (consumed by the TS core-processors engine), the entry also carries the PARSED `@param` / `@sample`
117
+ // declarations (with their declaration index, matching the `WerkstattParameterBox.index` the engine keys by):
118
+ // the WASM script bridge needs them to map a param's raw automation value through the right `ValueMapping` and
119
+ // to label each param / sample, since the worklet has no box graph to read those from. The TS engine ignores
120
+ // the extra fields (it resolves mappings + labels from the box adapter), so this stays a pure superset.
121
+ const wrapScript = (config, uuid, update, userCode) => {
122
+ const order = ScriptDeclaration.parseDeclarationOrder(userCode);
123
+ const params = ScriptDeclaration.parseParams(userCode).map(declaration => ({
124
+ label: declaration.label, index: order.get(declaration.label) ?? 0, mapping: declaration.mapping,
125
+ min: declaration.min, max: declaration.max, unit: declaration.unit
126
+ }));
127
+ const samples = ScriptDeclaration.parseSamples(userCode).map(declaration => ({
128
+ label: declaration.label, index: order.get(declaration.label) ?? 0
129
+ }));
130
+ return `
116
131
  if (typeof globalThis.openDAW === "undefined") { globalThis.openDAW = {} }
117
132
  if (typeof globalThis.openDAW.${config.registryName} === "undefined") { globalThis.openDAW.${config.registryName} = {} }
118
133
  globalThis.openDAW.${config.registryName}["${uuid}"] = {
@@ -120,9 +135,12 @@ const wrapCode = (config, uuid, update, userCode) => `
120
135
  create: (function ${config.functionName}() {
121
136
  ${userCode}
122
137
  return Processor
123
- })()
138
+ })(),
139
+ params: ${JSON.stringify(params)},
140
+ samples: ${JSON.stringify(samples)}
124
141
  }
125
142
  `;
143
+ };
126
144
  const validateCode = (wrappedCode) => { new Function(wrappedCode); };
127
145
  const registerWorklet = async (audioContext, wrappedCode) => {
128
146
  const blob = new Blob([wrappedCode], { type: "application/javascript" });
@@ -136,6 +154,10 @@ const registerWorklet = async (audioContext, wrappedCode) => {
136
154
  };
137
155
  export var ScriptCompiler;
138
156
  (function (ScriptCompiler) {
157
+ // The wrapped, registry-populating source for a script (`{update, create, params, samples}`), exposed so the
158
+ // WASM script bridge + its parity tests + the offline renderer can seed `globalThis.openDAW` identically to
159
+ // the live app (which goes through `compile` / `load`). The single source of truth for the registry shape.
160
+ ScriptCompiler.wrap = wrapScript;
139
161
  ScriptCompiler.create = (config) => {
140
162
  const headerPattern = createHeaderPattern(config.headerTag);
141
163
  const createHeader = (update) => `// @${config.headerTag} js ${COMPILER_VERSION} ${update}\n`;
@@ -154,7 +176,7 @@ export var ScriptCompiler;
154
176
  }
155
177
  cachedParamDeclarations.set(deviceBox, declMap);
156
178
  const uuid = UUID.toString(deviceBox.address.uuid);
157
- const wrappedCode = wrapCode(config, uuid, update, userCode);
179
+ const wrappedCode = wrapScript(config, uuid, update, userCode);
158
180
  validateCode(wrappedCode);
159
181
  return registerWorklet(audioContext, wrappedCode);
160
182
  },
@@ -168,7 +190,7 @@ export var ScriptCompiler;
168
190
  const params = ScriptDeclaration.parseParams(userCode);
169
191
  const samples = ScriptDeclaration.parseSamples(userCode);
170
192
  const order = ScriptDeclaration.parseDeclarationOrder(userCode);
171
- const wrappedCode = wrapCode(config, uuid, newUpdate, userCode);
193
+ const wrappedCode = wrapScript(config, uuid, newUpdate, userCode);
172
194
  validateCode(wrappedCode);
173
195
  const label = ScriptDeclaration.parseLabel(userCode);
174
196
  const modifier = () => {
@@ -7,6 +7,7 @@ export interface OfflineEngineInitializeConfig {
7
7
  controlFlagsBuffer: SharedArrayBuffer;
8
8
  project: ArrayBufferLike;
9
9
  exportConfiguration?: ExportConfiguration;
10
+ variant?: Record<string, unknown>;
10
11
  }
11
12
  export interface OfflineEngineRenderConfig {
12
13
  silenceThresholdDb?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"offline-renderer.d.ts","sourceRoot":"","sources":["../src/offline-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAA;AAE/D,MAAM,WAAW,6BAA6B;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CAC5C;AAED,MAAM,WAAW,yBAAyB;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC9C,IAAI,IAAI,IAAI,CAAA;CACf"}
1
+ {"version":3,"file":"offline-renderer.d.ts","sourceRoot":"","sources":["../src/offline-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAA;AAE/D,MAAM,WAAW,6BAA6B;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,yBAAyB;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC9C,IAAI,IAAI,IAAI,CAAA;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAItB,MAAM,KAAK,GAAI,SAAS;QAC3B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAsDH,CAAA;IAEM,MAAM,MAAM,GAAI,UAAU,QAAQ,oBAQxC,CAAA;IAEM,MAAM,MAAM,GAAI,aAAa,eAAe,KAAG,eAYrD,CAAA;IAEM,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,qBAiBvD,CAAA;CACJ"}
1
+ {"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAMtB,MAAM,KAAK,GAAI,SAAS;QAC3B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAsDH,CAAA;IAEM,MAAM,MAAM,GAAI,UAAU,QAAQ,oBAQxC,CAAA;IAEM,MAAM,MAAM,GAAI,aAAa,eAAe,KAAG,eAYrD,CAAA;IAEM,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,qBAiBvD,CAAA;CACJ"}
@@ -4,6 +4,8 @@ import { asInstanceOf, assert, ByteArrayInput, ByteArrayOutput, isDefined, Optio
4
4
  import { AudioUnitType, Colors, IconSymbol } from "@opendaw/studio-enums";
5
5
  export var ProjectSkeleton;
6
6
  (function (ProjectSkeleton) {
7
+ // WASM CONTRACT: this OPEN magic + format version frame every project the Rust engine loads
8
+ // (crates/studio-boxes). Keep both in lockstep with the Rust reader.
7
9
  const MAGIC_HEADER_OPEN = 0x4F50454E;
8
10
  const FORMAT_VERSION = 2;
9
11
  ProjectSkeleton.empty = (options) => {
@@ -165,7 +165,7 @@ export class TrackBoxAdapter {
165
165
  },
166
166
  some: clip => {
167
167
  if (sectionFrom === position) {
168
- if (isInstanceOf(clip, ValueClipBoxAdapter)) {
168
+ if (isInstanceOf(clip, ValueClipBoxAdapter) && !clip.mute) {
169
169
  return clip.valueAt(position, fallback);
170
170
  }
171
171
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-adapters",
3
- "version": "0.0.117",
3
+ "version": "0.0.119",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -20,21 +20,24 @@
20
20
  "generate-exports": "node generate-exports.mjs",
21
21
  "build": "npm run generate-exports && tsc",
22
22
  "lint": "eslint \"**/*.ts\"",
23
- "test": "echo \"No tests to run\""
23
+ "test": "echo \"No tests to run\"",
24
+ "generate-all-boxes": "npx tsx scripts/generate-all-boxes.ts",
25
+ "pregenerate-all-boxes": "npm run build -w @opendaw/studio-forge-boxes && npm run build -w @opendaw/studio-boxes"
24
26
  },
25
27
  "dependencies": {
26
- "@opendaw/lib-box": "^0.0.87",
27
- "@opendaw/lib-dsp": "^0.0.85",
28
- "@opendaw/lib-fusion": "^0.0.95",
29
- "@opendaw/lib-runtime": "^0.0.80",
30
- "@opendaw/lib-std": "^0.0.79",
31
- "@opendaw/studio-boxes": "^0.0.95",
32
- "@opendaw/studio-enums": "^0.0.78",
28
+ "@opendaw/lib-box": "^0.0.88",
29
+ "@opendaw/lib-dsp": "^0.0.86",
30
+ "@opendaw/lib-fusion": "^0.0.96",
31
+ "@opendaw/lib-midi": "^0.0.68",
32
+ "@opendaw/lib-runtime": "^0.0.81",
33
+ "@opendaw/lib-std": "^0.0.80",
34
+ "@opendaw/studio-boxes": "^0.0.96",
35
+ "@opendaw/studio-enums": "^0.0.79",
33
36
  "soundfont2": "^0.5.0"
34
37
  },
35
38
  "devDependencies": {
36
39
  "@opendaw/eslint-config": "^0.0.28",
37
40
  "@opendaw/typescript-config": "^0.0.32"
38
41
  },
39
- "gitHead": "ca740027dffcf87e27e7cc30930cf14c474574a5"
42
+ "gitHead": "39217ab3e0c5e488cb21ca20e1fcd673e6f60142"
40
43
  }