@opendaw/studio-adapters 0.0.116 → 0.0.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/DeviceBox.d.ts +1 -0
  2. package/dist/DeviceBox.d.ts.map +1 -1
  3. package/dist/DeviceBox.js +1 -0
  4. package/dist/IndexedBoxAdapterCollection.d.ts.map +1 -1
  5. package/dist/IndexedBoxAdapterCollection.js +9 -8
  6. package/dist/ParameterFieldAdapters.js +1 -1
  7. package/dist/ScriptDeclaration.d.ts.map +1 -1
  8. package/dist/ScriptDeclaration.js +10 -1
  9. package/dist/audio-unit/AudioUnitBoxAdapter.d.ts.map +1 -1
  10. package/dist/audio-unit/AudioUnitBoxAdapter.js +1 -1
  11. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts.map +1 -1
  12. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +5 -5
  13. package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +1 -1
  14. package/dist/modular/abstract.js +1 -1
  15. package/dist/preset/PresetDecoder.d.ts.map +1 -1
  16. package/dist/preset/PresetDecoder.js +9 -16
  17. package/dist/preset/PresetEncoder.js +2 -2
  18. package/dist/timeline/AudioContentBoxAdapter.d.ts +1 -0
  19. package/dist/timeline/AudioContentBoxAdapter.d.ts.map +1 -1
  20. package/dist/timeline/SignatureTrackAdapter.js +1 -1
  21. package/dist/timeline/TrackBoxAdapter.js +1 -1
  22. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +1 -0
  23. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
  24. package/dist/timeline/clip/AudioClipBoxAdapter.js +4 -3
  25. package/dist/timeline/clip/NoteClipBoxAdapter.js +3 -3
  26. package/dist/timeline/clip/ValueClipBoxAdapter.js +3 -3
  27. package/dist/timeline/event/NoteEventBoxAdapter.js +2 -2
  28. package/dist/timeline/event/ValueEventBoxAdapter.js +2 -2
  29. package/dist/timeline/region/AudioRegionBoxAdapter.js +3 -3
  30. package/dist/timeline/region/NoteRegionBoxAdapter.js +4 -4
  31. package/dist/timeline/region/ValueRegionBoxAdapter.js +4 -4
  32. package/dist/transfer/TransferAudioUnits.d.ts.map +1 -1
  33. package/dist/transfer/TransferAudioUnits.js +15 -8
  34. package/dist/transfer/TransferRegions.js +1 -1
  35. package/dist/transfer/TransferUtils.d.ts.map +1 -1
  36. package/dist/transfer/TransferUtils.js +18 -12
  37. package/package.json +9 -9
@@ -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)
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedBoxAdapterCollection.d.ts","sourceRoot":"","sources":["../src/IndexedBoxAdapterCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,IAAI,EACJ,GAAG,EAGH,MAAM,EAEN,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAe,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAEvC,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACjD,UAAU,EAAE,UAAU,CAAA;CACzB;AAED,MAAM,WAAW,gCAAgC,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,yBAAyB,CAAC,CAAC,CAAC;IAC/G,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAC9B;AAED,qBAAa,2BAA2B,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,QAAQ,CAAE,YAAW,UAAU;;IAC3G,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EACtB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;IAW9G,OAAO;IA0BP,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAAG,YAAY;IAItE,mBAAmB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAAG,YAAY;IAKhF,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IAKxC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAE3C,eAAe,IAAI,GAAG;IAUtB,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC;IAS5B,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIlC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAoB5C,IAAI,IAAI,GAAG;IAEX,OAAO,IAAI,OAAO;IAElB,SAAS,IAAI,IAAI;CAOpB"}
1
+ {"version":3,"file":"IndexedBoxAdapterCollection.d.ts","sourceRoot":"","sources":["../src/IndexedBoxAdapterCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,IAAI,EACJ,GAAG,EAGH,MAAM,EAEN,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAe,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAEvC,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACjD,UAAU,EAAE,UAAU,CAAA;CACzB;AAED,MAAM,WAAW,gCAAgC,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,yBAAyB,CAAC,CAAC,CAAC;IAC/G,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAA;CAC9B;AAED,qBAAa,2BAA2B,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,QAAQ,CAAE,YAAW,UAAU;;IAC3G,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EACtB,QAAQ,EAAE,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;IAW9G,OAAO;IA0BP,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAAG,YAAY;IAItE,mBAAmB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAAG,YAAY;IAKhF,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IAKxC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAE3C,eAAe,IAAI,GAAG;IAUtB,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC;IAS5B,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIlC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAkB5C,IAAI,IAAI,GAAG;IAEX,OAAO,IAAI,OAAO;IAElB,SAAS,IAAI,IAAI;CAOpB"}
@@ -80,25 +80,26 @@ export class IndexedBoxAdapterCollection {
80
80
  this.moveIndex(adapter.indexField.getValue(), delta);
81
81
  }
82
82
  moveIndex(startIndex, delta) {
83
+ if (delta === 0) {
84
+ return;
85
+ }
83
86
  const adapters = this.adapters();
84
87
  const adapter = adapters[startIndex];
88
+ const newIndex = clamp(startIndex + delta, 0, adapters.length - 1);
89
+ if (newIndex === startIndex) {
90
+ return;
91
+ }
85
92
  if (delta < 0) {
86
- const newIndex = clamp(startIndex + delta, 0, adapters.length - 1);
87
93
  for (let index = newIndex; index < startIndex; index++) {
88
94
  adapters[index].indexField.setValue(index + 1);
89
95
  }
90
- adapter.indexField.setValue(newIndex);
91
96
  }
92
- else if (delta > 1) {
93
- const newIndex = clamp(startIndex + (delta - 1), 0, adapters.length - 1);
97
+ else {
94
98
  for (let index = startIndex; index < newIndex; index++) {
95
99
  adapters[index + 1].indexField.setValue(index);
96
100
  }
97
- adapter.indexField.setValue(newIndex);
98
- }
99
- else {
100
- console.warn(`moveIndex had no effect: startIndex: ${startIndex}, delta: ${delta}`);
101
101
  }
102
+ adapter.indexField.setValue(newIndex);
102
103
  }
103
104
  size() { return __classPrivateFieldGet(this, _IndexedBoxAdapterCollection_entries, "f").size(); }
104
105
  isEmpty() { return this.size() === 0; }
@@ -31,7 +31,7 @@ export class ParameterFieldAdapters {
31
31
  __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").add(adapter);
32
32
  return { terminate: () => __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").removeByValue(adapter) };
33
33
  }
34
- get(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").get(address); }
34
+ get(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").get(address, "parameter field adapter"); }
35
35
  opt(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").opt(address); }
36
36
  registerTracks(address, tracks) {
37
37
  const key = address.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptDeclaration.d.ts","sourceRoot":"","sources":["../src/ScriptDeclaration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScriptDeclaration.d.ts","sourceRoot":"","sources":["../src/ScriptDeclaration.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { asInstanceOf, isDefined, Notifier, Option, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
1
+ import { asInstanceOf, isDefined, isValidIdentifier, Notifier, Option, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
2
2
  import { WerkstattParameterBox } from "@opendaw/studio-boxes";
3
3
  const LABEL_LINE = /^\/\/ @label .+$/m;
4
4
  const PARAM_LINE = /^\/\/ @param .+$/gm;
@@ -23,6 +23,9 @@ const parseSingleParam = (line) => {
23
23
  throw new Error(`Malformed @param: '${line}'`);
24
24
  }
25
25
  const label = tokens[0];
26
+ if (!isValidIdentifier(label)) {
27
+ throw new Error(`Malformed @param: '${line}' — '${label}' is not a valid identifier`);
28
+ }
26
29
  if (tokens.length === 1) {
27
30
  return { label, defaultValue: 0, min: 0, max: 1, mapping: "unipolar", unit: "" };
28
31
  }
@@ -115,6 +118,9 @@ export var ScriptDeclaration;
115
118
  if (tokens.length > 1) {
116
119
  throw new Error(`Malformed @sample: '${match[0]}' — expected: // @sample <name>`);
117
120
  }
121
+ if (!isValidIdentifier(tokens[0])) {
122
+ throw new Error(`Malformed @sample: '${match[0]}' — '${tokens[0]}' is not a valid identifier`);
123
+ }
118
124
  samples.push({ label: tokens[0] });
119
125
  }
120
126
  return samples;
@@ -157,6 +163,9 @@ export var ScriptDeclaration;
157
163
  if (tokens.length === 0 || tokens[0].length === 0) {
158
164
  throw new Error(`Malformed @sample: '${line}' — expected: // @sample <name>`);
159
165
  }
166
+ if (!isValidIdentifier(tokens[0])) {
167
+ throw new Error(`Malformed @sample: '${line}' — '${tokens[0]}' is not a valid identifier`);
168
+ }
160
169
  currentItems.push({ type: "sample", declaration: { label: tokens[0] } });
161
170
  }
162
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioUnitBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitBoxAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioUnitBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitBoxAdapter.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,7 @@ export class AudioUnitBoxAdapter {
67
67
  get inputField() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_box, "f").input; }
68
68
  get audioEffectsField() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_box, "f").audioEffects; }
69
69
  get tracksField() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_box, "f").tracks; }
70
- get minimizedField() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_input, "f").adapter().unwrap().minimizedField; }
70
+ get minimizedField() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_input, "f").adapter().unwrap("input.adapter").minimizedField; }
71
71
  get isAudioUnit() { return true; }
72
72
  get label() { return __classPrivateFieldGet(this, _AudioUnitBoxAdapter_input, "f").adapter().mapOr(input => input.labelField.getValue(), ""); }
73
73
  deviceHost() { return this; }
@@ -1 +1 @@
1
- {"version":3,"file":"PlayfieldSampleBoxAdapter.d.ts","sourceRoot":"","sources":["../../../../src/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PlayfieldSampleBoxAdapter.d.ts","sourceRoot":"","sources":["../../../../src/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ export class PlayfieldSampleBoxAdapter {
64
64
  get tracksField() { return this.audioUnitBoxAdapter().box.tracks; }
65
65
  get isAudioUnit() { return false; }
66
66
  file() { return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_file, "f"); }
67
- fileUUID() { return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetAddress.unwrap().uuid; }
67
+ fileUUID() { return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetAddress.unwrap("file.targetAddr").uuid; }
68
68
  resetParameters() {
69
69
  __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").mute.reset();
70
70
  __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").solo.reset();
@@ -79,8 +79,8 @@ export class PlayfieldSampleBoxAdapter {
79
79
  }
80
80
  copyToIndex(index) {
81
81
  PlayfieldSampleBox.create(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").graph, UUID.generate(), box => {
82
- box.file.refer(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetVertex.unwrap());
83
- box.device.refer(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").device.targetVertex.unwrap());
82
+ box.file.refer(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetVertex.unwrap("file.target"));
83
+ box.device.refer(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").device.targetVertex.unwrap("device.target"));
84
84
  box.index.setValue(index);
85
85
  box.mute.setValue(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").mute.getValue());
86
86
  box.solo.setValue(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").solo.getValue());
@@ -103,12 +103,12 @@ export class PlayfieldSampleBoxAdapter {
103
103
  get audioEffects() {
104
104
  return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_audioEffects, "f");
105
105
  }
106
- get labelField() { return asInstanceOf(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetVertex.unwrap().box, AudioFileBox).fileName; }
106
+ get labelField() { return asInstanceOf(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").file.targetVertex.unwrap("file.target").box, AudioFileBox).fileName; }
107
107
  get enabledField() { return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").enabled; }
108
108
  get minimizedField() { return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").minimized; }
109
109
  device() {
110
110
  return __classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_context, "f").boxAdapters
111
- .adapterFor(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").device.targetVertex.unwrap().box, PlayfieldDeviceBoxAdapter);
111
+ .adapterFor(__classPrivateFieldGet(this, _PlayfieldSampleBoxAdapter_box, "f").device.targetVertex.unwrap("device.target").box, PlayfieldDeviceBoxAdapter);
112
112
  }
113
113
  deviceHost() { return this.device().deviceHost(); }
114
114
  audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
@@ -41,7 +41,7 @@ export class SoundfontDeviceBoxAdapter {
41
41
  __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, "f").terminate();
42
42
  __classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, loader.subscribe(state => {
43
43
  if (state.type === "loaded") {
44
- const soundfont = loader.soundfont.unwrap();
44
+ const soundfont = loader.soundfont.unwrap("soundfont");
45
45
  __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").wrap(soundfont.presets[this.presetIndex] ?? soundfont.presets[0]);
46
46
  __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").wrap(soundfont);
47
47
  }
@@ -45,7 +45,7 @@ export class AbstractModuleAdapter {
45
45
  get parameters() { return __classPrivateFieldGet(this, _AbstractModuleAdapter_parameters, "f"); }
46
46
  get modular() {
47
47
  return __classPrivateFieldGet(this, _AbstractModuleAdapter_context, "f").boxAdapters
48
- .adapterFor(__classPrivateFieldGet(this, _AbstractModuleAdapter_box, "f").attributes.collection.targetVertex.unwrap().box, ModularAdapter);
48
+ .adapterFor(__classPrivateFieldGet(this, _AbstractModuleAdapter_box, "f").attributes.collection.targetVertex.unwrap("attributes.target").box, ModularAdapter);
49
49
  }
50
50
  terminate() { __classPrivateFieldGet(this, _AbstractModuleAdapter_terminator, "f").terminate(); }
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PresetDecoder.d.ts","sourceRoot":"","sources":["../../src/preset/PresetDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,OAAO,EAGP,GAAG,EAQN,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAG3C,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,OAAO,eAAe,EAAE,QAAQ,eAAe,KAAG,aAAa,CAAC,YAAY,CA4ElG,CAAA;IAEM,MAAM,eAAe,GAAI,aAAa,WAAW,KAAG,OAY1D,CAAA;IAEM,MAAM,gBAAgB,GAAI,aAAa,WAAW,EAAE,oBAAoB,YAAY,EAAE,UAAU;QACnG,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;KACzB,KAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAsHvB,CAAA;IAEM,MAAM,iBAAiB,GAC1B,OAAO,eAAe,EACtB,iBAAiB,YAAY,EAC7B,aAAa,GAAG,EAChB,MAAM,YAAY,CAAC,SAAS,KAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,CA+FtB,CAAA;CACJ"}
1
+ {"version":3,"file":"PresetDecoder.d.ts","sourceRoot":"","sources":["../../src/preset/PresetDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,OAAO,EAGP,GAAG,EAQN,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAG3C,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,OAAO,eAAe,EAAE,QAAQ,eAAe,KAAG,aAAa,CAAC,YAAY,CAqElG,CAAA;IAEM,MAAM,eAAe,GAAI,aAAa,WAAW,KAAG,OAY1D,CAAA;IAEM,MAAM,gBAAgB,GAAI,aAAa,WAAW,EAAE,oBAAoB,YAAY,EAAE,UAAU;QACnG,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;KACzB,KAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAsHvB,CAAA;IAEM,MAAM,iBAAiB,GAC1B,OAAO,eAAe,EACtB,iBAAiB,YAAY,EAC7B,aAAa,GAAG,EAChB,MAAM,YAAY,CAAC,SAAS,KAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,CA+FtB,CAAA;CACJ"}
@@ -11,18 +11,13 @@ export var PresetDecoder;
11
11
  PresetDecoder.decode = (bytes, target) => {
12
12
  const header = new ByteArrayInput(bytes.slice(0, 8));
13
13
  if (header.readInt() !== PresetHeader.MAGIC_HEADER_OPEN) {
14
- RuntimeNotifier.info({
15
- headline: "Could Not Import Preset",
16
- message: "Invalid preset file"
17
- }).then();
14
+ RuntimeNotifier.notify({ message: "Invalid preset file.", icon: "Warning" });
18
15
  return [];
19
16
  }
20
17
  const version = header.readInt();
21
18
  if (version !== PresetHeader.FORMAT_VERSION) {
22
- RuntimeNotifier.info({
23
- headline: "Could Not Import Preset",
24
- message: `Unsupported preset version ${version} (this build supports ${PresetHeader.FORMAT_VERSION}).`
25
- }).then();
19
+ console.warn(`Unsupported preset version ${version} (supports ${PresetHeader.FORMAT_VERSION})`);
20
+ RuntimeNotifier.notify({ message: "Unsupported preset version.", icon: "Warning" });
26
21
  return [];
27
22
  }
28
23
  const sourceBoxGraph = new BoxGraph(Option.wrap(BoxIO.create));
@@ -30,10 +25,8 @@ export var PresetDecoder;
30
25
  sourceBoxGraph.fromArrayBuffer(bytes.slice(8), false);
31
26
  }
32
27
  catch (reason) {
33
- RuntimeNotifier.info({
34
- headline: "Could Not Import Preset",
35
- message: String(reason)
36
- }).then();
28
+ console.warn(reason);
29
+ RuntimeNotifier.notify({ message: "Could not import preset.", icon: "Warning" });
37
30
  return [];
38
31
  }
39
32
  const summary = {};
@@ -56,7 +49,7 @@ export var PresetDecoder;
56
49
  TransferUtils.reorderAudioUnits(uuidMap, sourceAudioUnitBoxes, rootBox);
57
50
  const importedAudioUnits = sourceAudioUnitBoxes
58
51
  .map(source => asInstanceOf(rootBox.graph
59
- .findBox(uuidMap.get(source.address.uuid).target)
52
+ .findBox(uuidMap.get(source.address.uuid, "uuid mapping").target)
60
53
  .unwrap("Target AudioUnit has not been copied"), AudioUnitBox))
61
54
  .filter(box => box.type.getValue() !== AudioUnitType.Output);
62
55
  importedAudioUnits.forEach((audioUnitBox) => {
@@ -221,7 +214,7 @@ export var PresetDecoder;
221
214
  }
222
215
  const input = new ByteArrayInput(source.toArrayBuffer());
223
216
  const key = source.name;
224
- const uuid = uuidMap.get(source.address.uuid).target;
217
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
225
218
  targetBoxGraph.createBox(key, uuid, box => box.read(input));
226
219
  });
227
220
  });
@@ -308,7 +301,7 @@ export var PresetDecoder;
308
301
  }, () => {
309
302
  effects.forEach((source, i) => {
310
303
  const input = new ByteArrayInput(source.toArrayBuffer());
311
- const uuid = uuidMap.get(source.address.uuid).target;
304
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
312
305
  targetGraph.createBox(source.name, uuid, box => {
313
306
  box.read(input);
314
307
  if (IndexedBox.isIndexedBox(box)) {
@@ -321,7 +314,7 @@ export var PresetDecoder;
321
314
  return;
322
315
  }
323
316
  const input = new ByteArrayInput(source.toArrayBuffer());
324
- const uuid = uuidMap.get(source.address.uuid).target;
317
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
325
318
  targetGraph.createBox(source.name, uuid, box => box.read(input));
326
319
  });
327
320
  });
@@ -94,7 +94,7 @@ export var PresetEncoder;
94
94
  }, () => {
95
95
  effects.forEach((source, i) => {
96
96
  const input = new ByteArrayInput(source.toArrayBuffer());
97
- const uuid = uuidMap.get(source.address.uuid).target;
97
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
98
98
  boxGraph.createBox(source.name, uuid, box => {
99
99
  box.read(input);
100
100
  if (IndexedBox.isIndexedBox(box)) {
@@ -104,7 +104,7 @@ export var PresetEncoder;
104
104
  });
105
105
  dependencies.forEach(source => {
106
106
  const input = new ByteArrayInput(source.toArrayBuffer());
107
- const uuid = uuidMap.get(source.address.uuid).target;
107
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
108
108
  boxGraph.createBox(source.name, uuid, box => box.read(input));
109
109
  });
110
110
  });
@@ -9,6 +9,7 @@ import { WarpMarkerBoxAdapter } from "../audio/WarpMarkerBoxAdapter";
9
9
  import { AudioClipBox, AudioRegionBox } from "@opendaw/studio-boxes";
10
10
  export interface AudioContentBoxAdapter extends BoxAdapter {
11
11
  get file(): AudioFileBoxAdapter;
12
+ get optFile(): Option<AudioFileBoxAdapter>;
12
13
  get timeBase(): TimeBase;
13
14
  get duration(): ppqn;
14
15
  get observableOptPlayMode(): ObservableOption<AudioPlayMode>;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioContentBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/AudioContentBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,0BAA0B,EAAC,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAC,2BAA2B,EAAC,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAA;AAElE,MAAM,WAAW,sBAAuB,SAAQ,UAAU;IACtD,IAAI,IAAI,IAAI,mBAAmB,CAAA;IAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,QAAQ,IAAI,IAAI,CAAA;IACpB,IAAI,qBAAqB,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5D,IAAI,cAAc,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,mBAAmB,IAAI,OAAO,CAAA;IAClC,IAAI,sBAAsB,IAAI,MAAM,CAAC,2BAA2B,CAAC,CAAA;IACjE,IAAI,qBAAqB,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAA;IAC/D,IAAI,cAAc,IAAI,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACnE,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,YAAY,GAAG,cAAc,CAAA;CAC3C"}
1
+ {"version":3,"file":"AudioContentBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/AudioContentBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,0BAA0B,EAAC,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAC,2BAA2B,EAAC,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAA;AAElE,MAAM,WAAW,sBAAuB,SAAQ,UAAU;IACtD,IAAI,IAAI,IAAI,mBAAmB,CAAA;IAC/B,IAAI,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAC1C,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,QAAQ,IAAI,IAAI,CAAA;IACpB,IAAI,qBAAqB,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5D,IAAI,cAAc,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,mBAAmB,IAAI,OAAO,CAAA;IAClC,IAAI,sBAAsB,IAAI,MAAM,CAAC,2BAA2B,CAAC,CAAA;IACjE,IAAI,qBAAqB,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAA;IAC/D,IAAI,cAAc,IAAI,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACnE,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,YAAY,GAAG,cAAc,CAAA;CAC3C"}
@@ -199,7 +199,7 @@ export class SignatureTrackAdapter {
199
199
  .map((bar, i) => ({ bar, i }))
200
200
  .sort((a, b) => a.bar - b.bar)
201
201
  .map(x => x.i);
202
- const adapters = allEvents.map(e => this.adapterAt(e.index).unwrap());
202
+ const adapters = allEvents.map(e => this.adapterAt(e.index).unwrap("adapterAt"));
203
203
  for (let newIdx = 0; newIdx < sortedIndices.length; newIdx++) {
204
204
  adapters[sortedIndices[newIdx]].box.index.setValue(newIdx);
205
205
  }
@@ -213,7 +213,7 @@ _TrackBoxAdapter_context = new WeakMap(), _TrackBoxAdapter_box = new WeakMap(),
213
213
  return Terminable.Empty;
214
214
  }
215
215
  case TrackType.Value: {
216
- const target = __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex.unwrap();
216
+ const target = __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex.unwrap("target.target");
217
217
  if (target.isField()) {
218
218
  observer(__classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").parameterFieldAdapters.opt(target.address).map(vertex => vertex.name));
219
219
  }
@@ -33,6 +33,7 @@ export declare class AudioClipBoxAdapter implements AudioContentBoxAdapter, Clip
33
33
  get hue(): int;
34
34
  get gain(): MutableObservableValue<number>;
35
35
  get file(): AudioFileBoxAdapter;
36
+ get optFile(): Option<AudioFileBoxAdapter>;
36
37
  get observableOptPlayMode(): ObservableOption<AudioPlayMode>;
37
38
  get hasCollection(): boolean;
38
39
  get optCollection(): Option<never>;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioClipBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/clip/AudioClipBoxAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioClipBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/clip/AudioClipBoxAdapter.ts"],"names":[],"mappings":"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"}
@@ -78,9 +78,9 @@ export class AudioClipBoxAdapter {
78
78
  box.hue.setValue(this.hue);
79
79
  box.duration.setValue(this.duration);
80
80
  box.mute.setValue(this.mute);
81
- box.clips.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").clips.targetVertex.unwrap());
82
- box.file.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").file.targetVertex.unwrap());
83
- box.events.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").events.targetVertex.unwrap());
81
+ box.clips.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").clips.targetVertex.unwrap("clips.target"));
82
+ box.file.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").file.targetVertex.unwrap("file.target"));
83
+ box.events.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").events.targetVertex.unwrap("events.target"));
84
84
  clonedPlayMode.ifSome(mode => box.playMode.refer(mode));
85
85
  });
86
86
  }
@@ -97,6 +97,7 @@ export class AudioClipBoxAdapter {
97
97
  get hue() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").hue.getValue(); }
98
98
  get gain() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").gain; }
99
99
  get file() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f").unwrap("Cannot access file."); }
100
+ get optFile() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f"); }
100
101
  get observableOptPlayMode() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_playMode, "f"); }
101
102
  get hasCollection() { return !this.optCollection.isEmpty(); }
102
103
  get optCollection() { return Option.None; }
@@ -54,18 +54,18 @@ export class NoteClipBoxAdapter {
54
54
  accept(visitor) { return safeExecute(visitor.visitNoteClipBoxAdapter, this); }
55
55
  consolidate() {
56
56
  if (this.isMirrowed) {
57
- __classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").events.refer(this.optCollection.unwrap().copy().box.owners);
57
+ __classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").events.refer(this.optCollection.unwrap("optCollection").copy().box.owners);
58
58
  }
59
59
  }
60
60
  clone(consolidate) {
61
- const events = consolidate ? this.optCollection.unwrap().copy().box.owners : __classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").events.targetVertex.unwrap();
61
+ const events = consolidate ? this.optCollection.unwrap("optCollection").copy().box.owners : __classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").events.targetVertex.unwrap("events.target");
62
62
  NoteClipBox.create(__classPrivateFieldGet(this, _NoteClipBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
63
63
  box.index.setValue(this.indexField.getValue());
64
64
  box.label.setValue(this.label);
65
65
  box.hue.setValue(this.hue);
66
66
  box.duration.setValue(this.duration);
67
67
  box.mute.setValue(this.mute);
68
- box.clips.refer(__classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").clips.targetVertex.unwrap());
68
+ box.clips.refer(__classPrivateFieldGet(this, _NoteClipBoxAdapter_box, "f").clips.targetVertex.unwrap("clips.target"));
69
69
  box.events.refer(events);
70
70
  });
71
71
  }
@@ -60,18 +60,18 @@ export class ValueClipBoxAdapter {
60
60
  accept(visitor) { return safeExecute(visitor.visitValueClipBoxAdapter, this); }
61
61
  consolidate() {
62
62
  if (this.isMirrowed) {
63
- __classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").events.refer(this.optCollection.unwrap().copy().box.owners);
63
+ __classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").events.refer(this.optCollection.unwrap("optCollection").copy().box.owners);
64
64
  }
65
65
  }
66
66
  clone(consolidate) {
67
- const events = consolidate ? this.optCollection.unwrap().copy().box.owners : __classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").events.targetVertex.unwrap();
67
+ const events = consolidate ? this.optCollection.unwrap("optCollection").copy().box.owners : __classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").events.targetVertex.unwrap("events.target");
68
68
  ValueClipBox.create(__classPrivateFieldGet(this, _ValueClipBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
69
69
  box.index.setValue(this.indexField.getValue());
70
70
  box.label.setValue(this.label);
71
71
  box.hue.setValue(this.hue);
72
72
  box.duration.setValue(this.duration);
73
73
  box.mute.setValue(this.mute);
74
- box.clips.refer(__classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").clips.targetVertex.unwrap());
74
+ box.clips.refer(__classPrivateFieldGet(this, _ValueClipBoxAdapter_box, "f").clips.targetVertex.unwrap("clips.target"));
75
75
  box.events.refer(events);
76
76
  });
77
77
  }
@@ -91,7 +91,7 @@ export class NoteEventBoxAdapter {
91
91
  box.duration.setValue(options?.duration ?? this.duration);
92
92
  box.pitch.setValue(options?.pitch ?? this.pitch);
93
93
  box.playCount.setValue(options?.playCount ?? this.playCount);
94
- box.events.refer(options?.events ?? this.collection.unwrap().box.events);
94
+ box.events.refer(options?.events ?? this.collection.unwrap("collection").box.events);
95
95
  box.velocity.setValue(this.velocity);
96
96
  box.cent.setValue(this.cent);
97
97
  box.chance.setValue(this.chance);
@@ -101,7 +101,7 @@ export class NoteEventBoxAdapter {
101
101
  canConsolidate() { return this.playCount > 1; }
102
102
  consolidate() {
103
103
  const playCount = this.playCount;
104
- const events = this.collection.unwrap().box.events;
104
+ const events = this.collection.unwrap("collection").box.events;
105
105
  const adapters = Arrays.create((index) => {
106
106
  const a = Math.floor(this.computeCurveValue(index / playCount) * this.duration);
107
107
  const b = Math.floor(this.computeCurveValue((index + 1) / playCount) * this.duration);
@@ -97,7 +97,7 @@ export class ValueEventBoxAdapter {
97
97
  const eventBox = ValueEventBox.create(__classPrivateFieldGet(this, _ValueEventBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
98
98
  box.position.setValue(position);
99
99
  box.index.setValue(index);
100
- box.events.refer(options?.events ?? this.collection.unwrap().box.events);
100
+ box.events.refer(options?.events ?? this.collection.unwrap("collection").box.events);
101
101
  box.value.setValue(options?.value ?? this.value);
102
102
  });
103
103
  InterpolationFieldAdapter.write(eventBox.interpolation, options?.interpolation ?? this.interpolation);
@@ -106,7 +106,7 @@ export class ValueEventBoxAdapter {
106
106
  copyFrom(options) {
107
107
  __classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").position.setValue(options?.position ?? this.position);
108
108
  __classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").index.setValue(options?.index ?? this.index);
109
- __classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").events.refer(options?.events ?? this.collection.unwrap().box.events);
109
+ __classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").events.refer(options?.events ?? this.collection.unwrap("collection").box.events);
110
110
  __classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").value.setValue(options?.value ?? this.value);
111
111
  InterpolationFieldAdapter.write(__classPrivateFieldGet(this, _ValueEventBoxAdapter_box, "f").interpolation, options?.interpolation ?? this.interpolation);
112
112
  return this;
@@ -221,8 +221,8 @@ export class AudioRegionBoxAdapter {
221
221
  const adapter = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(AudioRegionBox.create(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
222
222
  box.timeBase.setValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.getValue());
223
223
  box.position.setValue(params?.position ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.getValue());
224
- box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
225
- box.file.refer(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").file.targetVertex.unwrap());
224
+ box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex.unwrap("regions.target"));
225
+ box.file.refer(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").file.targetVertex.unwrap("file.target"));
226
226
  box.events.refer(eventTarget);
227
227
  box.mute.setValue(this.mute);
228
228
  box.hue.setValue(this.hue);
@@ -240,7 +240,7 @@ export class AudioRegionBoxAdapter {
240
240
  consolidate() { }
241
241
  canFlatten(regions) {
242
242
  return regions.length > 0
243
- && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap()))
243
+ && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap("trackBoxAdapter")))
244
244
  && regions.every(region => region.isSelected && region instanceof AudioRegionBoxAdapter);
245
245
  }
246
246
  flatten(_regions) {
@@ -150,7 +150,7 @@ export class NoteRegionBoxAdapter {
150
150
  box.label.setValue(this.label);
151
151
  box.mute.setValue(this.mute);
152
152
  box.events.refer(eventTarget);
153
- box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
153
+ box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").regions.targetVertex.unwrap("regions.target"));
154
154
  }), NoteRegionBoxAdapter);
155
155
  }
156
156
  consolidate() {
@@ -165,7 +165,7 @@ export class NoteRegionBoxAdapter {
165
165
  });
166
166
  }
167
167
  canFlatten(regions) {
168
- return regions.length > 0 && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap()))
168
+ return regions.length > 0 && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap("trackBoxAdapter")))
169
169
  && regions.every(region => region.isSelected && region instanceof NoteRegionBoxAdapter);
170
170
  }
171
171
  flatten(regions) {
@@ -178,7 +178,7 @@ export class NoteRegionBoxAdapter {
178
178
  const last = Arrays.getLast(sorted, "Internal error (no last)");
179
179
  const rangeMin = first.position;
180
180
  const rangeMax = last.position + last.duration;
181
- const trackBoxAdapter = first.trackBoxAdapter.unwrap();
181
+ const trackBoxAdapter = first.trackBoxAdapter.unwrap("trackBoxAdapter");
182
182
  const collectionBox = NoteEventCollectionBox.create(graph, UUID.generate());
183
183
  const overlapping = Array.from(trackBoxAdapter.regions.collection.iterateRange(rangeMin, rangeMax));
184
184
  overlapping
@@ -188,7 +188,7 @@ export class NoteRegionBoxAdapter {
188
188
  for (const { resultStart, resultEnd, rawStart } of LoopableRegion.locateLoops(region, region.position, region.complete)) {
189
189
  const searchStart = Math.floor(resultStart - rawStart);
190
190
  const searchEnd = Math.floor(resultEnd - rawStart);
191
- for (const event of region.optCollection.unwrap().events.iterateRange(searchStart, searchEnd)) {
191
+ for (const event of region.optCollection.unwrap("optCollection").events.iterateRange(searchStart, searchEnd)) {
192
192
  event.copyTo({
193
193
  position: event.position + rawStart - first.position,
194
194
  events: collectionBox.events
@@ -170,7 +170,7 @@ export class ValueRegionBoxAdapter {
170
170
  box.label.setValue(this.label);
171
171
  box.mute.setValue(this.mute);
172
172
  box.events.refer(eventTarget);
173
- box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _ValueRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
173
+ box.regions.refer(params?.target ?? __classPrivateFieldGet(this, _ValueRegionBoxAdapter_box, "f").regions.targetVertex.unwrap("regions.target"));
174
174
  }), ValueRegionBoxAdapter);
175
175
  }
176
176
  consolidate() {
@@ -186,7 +186,7 @@ export class ValueRegionBoxAdapter {
186
186
  }
187
187
  canFlatten(regions) {
188
188
  return regions.length > 0
189
- && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap()))
189
+ && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap("trackBoxAdapter")))
190
190
  && regions.every(region => region.isSelected && region instanceof ValueRegionBoxAdapter);
191
191
  }
192
192
  flatten(regions) {
@@ -199,14 +199,14 @@ export class ValueRegionBoxAdapter {
199
199
  const last = Arrays.getLast(sorted, "Internal error (no last)");
200
200
  const rangeMin = first.position;
201
201
  const rangeMax = last.position + last.duration;
202
- const trackBoxAdapter = first.trackBoxAdapter.unwrap();
202
+ const trackBoxAdapter = first.trackBoxAdapter.unwrap("trackBoxAdapter");
203
203
  const overlapping = Array.from(trackBoxAdapter.regions.collection.iterateRange(rangeMin, rangeMax));
204
204
  const entries = [];
205
205
  overlapping
206
206
  .filter(region => region.isSelected)
207
207
  .forEach(anyRegion => {
208
208
  const region = anyRegion;
209
- const collection = region.optCollection.unwrap();
209
+ const collection = region.optCollection.unwrap("optCollection");
210
210
  const events = collection.events;
211
211
  for (const { rawStart, regionStart, regionEnd } of LoopableRegion.locateLoops(region, region.position, region.complete)) {
212
212
  const searchMin = regionStart - rawStart;
@@ -1 +1 @@
1
- {"version":3,"file":"TransferAudioUnits.d.ts","sourceRoot":"","sources":["../../src/transfer/TransferAudioUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAC,YAAY,EAAU,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAG1D,yBAAiB,kBAAkB,CAAC;IAChC,KAAY,eAAe,GAAG;QAC1B,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAA;IACD;;;;OAIG;IACI,MAAM,QAAQ,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,+EAA2E,eAAe,EAC1F,UAAS,eAAoB,KAAG,aAAa,CAAC,YAAY,CAwBlF,CAAA;CACJ"}
1
+ {"version":3,"file":"TransferAudioUnits.d.ts","sourceRoot":"","sources":["../../src/transfer/TransferAudioUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAC,YAAY,EAAU,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAG1D,yBAAiB,kBAAkB,CAAC;IAChC,KAAY,eAAe,GAAG;QAC1B,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAA;IACD;;;;OAIG;IACI,MAAM,QAAQ,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,+EAA2E,eAAe,EAC1F,UAAS,eAAoB,KAAG,aAAa,CAAC,YAAY,CA4BlF,CAAA;CACJ"}
@@ -1,6 +1,7 @@
1
1
  import { asInstanceOf } from "@opendaw/lib-std";
2
2
  import { IndexedBox } from "@opendaw/lib-box";
3
3
  import { AudioUnitBox, RootBox } from "@opendaw/studio-boxes";
4
+ import { AudioUnitType } from "@opendaw/studio-enums";
4
5
  import { TransferUtils } from "./TransferUtils";
5
6
  export var TransferAudioUnits;
6
7
  (function (TransferAudioUnits) {
@@ -10,22 +11,28 @@ export var TransferAudioUnits;
10
11
  * @returns the newly created audio unit boxes in the target graph
11
12
  */
12
13
  TransferAudioUnits.transfer = (audioUnitBoxes, { boxGraph: targetBoxGraph, mandatoryBoxes: { primaryAudioBusBox, rootBox } }, options = {}) => {
14
+ // The Output unit is a project singleton whose `output` routes to rootBox.outputDevice; copying it
15
+ // pulls the RootBox into the dependency closure and grafts a second RootBox. Never duplicate it.
16
+ const sources = audioUnitBoxes.filter(box => box.type.getValue() !== AudioUnitType.Output);
17
+ if (sources.length === 0) {
18
+ return [];
19
+ }
13
20
  const excludeBox = (box) => TransferUtils.shouldExclude(box)
14
21
  || (options?.excludeTimeline === true && TransferUtils.excludeTimelinePredicate(box));
15
- const dependencies = Array.from(audioUnitBoxes[0].graph.dependenciesOf(audioUnitBoxes, {
22
+ const dependencies = Array.from(sources[0].graph.dependenciesOf(sources, {
16
23
  alwaysFollowMandatory: true,
17
24
  stopAtResources: true,
18
25
  excludeBox
19
26
  }).boxes);
20
- const uuidMap = TransferUtils.generateMap(audioUnitBoxes, dependencies, rootBox.audioUnits.address.uuid, primaryAudioBusBox.address.uuid);
21
- TransferUtils.copyBoxes(uuidMap, targetBoxGraph, audioUnitBoxes, dependencies);
22
- TransferUtils.reorderAudioUnits(uuidMap, audioUnitBoxes, rootBox, options.insertIndex);
23
- const result = audioUnitBoxes.map(source => asInstanceOf(rootBox.graph
24
- .findBox(uuidMap.get(source.address.uuid).target)
27
+ const uuidMap = TransferUtils.generateMap(sources, dependencies, rootBox.audioUnits.address.uuid, primaryAudioBusBox.address.uuid);
28
+ TransferUtils.copyBoxes(uuidMap, targetBoxGraph, sources, dependencies);
29
+ TransferUtils.reorderAudioUnits(uuidMap, sources, rootBox, options.insertIndex);
30
+ const result = sources.map(source => asInstanceOf(rootBox.graph
31
+ .findBox(uuidMap.get(source.address.uuid, "uuid mapping").target)
25
32
  .unwrap("Target AudioUnit has not been copied"), AudioUnitBox));
26
33
  if (options.deleteSource === true) {
27
- const sourceRootBox = asInstanceOf(audioUnitBoxes[0].collection.targetVertex.unwrap().box, RootBox);
28
- audioUnitBoxes.forEach(box => box.delete());
34
+ const sourceRootBox = asInstanceOf(sources[0].collection.targetVertex.unwrap("collection.target").box, RootBox);
35
+ sources.forEach(box => box.delete());
29
36
  IndexedBox.collectIndexedBoxes(sourceRootBox.audioUnits, AudioUnitBox)
30
37
  .forEach((box, index) => box.index.setValue(index));
31
38
  }
@@ -63,7 +63,7 @@ export var TransferRegions;
63
63
  }
64
64
  }, () => sourceBoxes.forEach(sourceBox => {
65
65
  const input = new ByteArrayInput(sourceBox.toArrayBuffer());
66
- const targetUuid = uuidMap.get(sourceBox.address.uuid).target;
66
+ const targetUuid = uuidMap.get(sourceBox.address.uuid, "uuid mapping").target;
67
67
  targetGraph.createBox(sourceBox.name, targetUuid, box => {
68
68
  box.read(input);
69
69
  if (UnionBoxTypes.isRegionBox(box)) {
@@ -1 +1 @@
1
- {"version":3,"file":"TransferUtils.d.ts","sourceRoot":"","sources":["../../src/transfer/TransferUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAMH,GAAG,EAMH,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAiC,OAAO,EAAW,MAAM,uBAAuB,CAAA;AACpG,OAAO,EAAU,GAAG,EAAE,QAAQ,EAA2B,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,aAAa,CAAC;IAC3B,KAAY,UAAU,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;QAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAA;KAAE,CAAA;IAI5D,MAAM,wBAAwB,GAAI,KAAK,GAAG,KAAG,OACqB,CAAA;IAClE,MAAM,aAAa,GAAI,KAAK,GAAG,KAAG,OAA6D,CAAA;IAE/F,MAAM,WAAW,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,cAAc,aAAa,CAAC,GAAG,CAAC,EAChC,aAAa,IAAI,CAAC,KAAK,EACvB,kBAAkB,IAAI,CAAC,KAAK,KAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CA0B1F,CAAA;IAEM,MAAM,SAAS,GAAI,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAC1C,gBAAgB,QAAQ,EACxB,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,cAAc,aAAa,CAAC,GAAG,CAAC,KAAG,IAmC5D,CAAA;IAEM,MAAM,iBAAiB,GAAI,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAC1C,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,SAAS,OAAO,EAChB,cAAc,GAAG,KAAG,IAoBrD,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,+DAA2D,eAAe,EAC1E,iBAAgB,IAAU,KAAG,IA8C3D,CAAA;CACJ"}
1
+ {"version":3,"file":"TransferUtils.d.ts","sourceRoot":"","sources":["../../src/transfer/TransferUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAMH,GAAG,EAMH,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAiC,OAAO,EAAW,MAAM,uBAAuB,CAAA;AACpG,OAAO,EAAU,GAAG,EAAE,QAAQ,EAA2B,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,aAAa,CAAC;IAC3B,KAAY,UAAU,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;QAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAA;KAAE,CAAA;IAI5D,MAAM,wBAAwB,GAAI,KAAK,GAAG,KAAG,OACqB,CAAA;IAClE,MAAM,aAAa,GAAI,KAAK,GAAG,KAAG,OAA6D,CAAA;IAE/F,MAAM,WAAW,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,cAAc,aAAa,CAAC,GAAG,CAAC,EAChC,aAAa,IAAI,CAAC,KAAK,EACvB,kBAAkB,IAAI,CAAC,KAAK,KAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CA0B1F,CAAA;IAEM,MAAM,SAAS,GAAI,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAC1C,gBAAgB,QAAQ,EACxB,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,cAAc,aAAa,CAAC,GAAG,CAAC,KAAG,IAmC5D,CAAA;IAEM,MAAM,iBAAiB,GAAI,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAC1C,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,SAAS,OAAO,EAChB,cAAc,GAAG,KAAG,IA2BrD,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,+DAA2D,eAAe,EAC1E,iBAAgB,IAAU,KAAG,IA8C3D,CAAA;CACJ"}
@@ -61,7 +61,7 @@ export var TransferUtils;
61
61
  }, () => {
62
62
  audioUnitBoxes.forEach((source) => {
63
63
  const input = new ByteArrayInput(source.toArrayBuffer());
64
- const uuid = uuidMap.get(source.address.uuid).target;
64
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
65
65
  targetBoxGraph.createBox(source.name, uuid, box => box.read(input));
66
66
  });
67
67
  dependencies.forEach((source) => {
@@ -72,7 +72,7 @@ export var TransferUtils;
72
72
  return;
73
73
  }
74
74
  const input = new ByteArrayInput(source.toArrayBuffer());
75
- const uuid = uuidMap.get(source.address.uuid).target;
75
+ const uuid = uuidMap.get(source.address.uuid, "uuid mapping").target;
76
76
  targetBoxGraph.createBox(source.name, uuid, box => box.read(input));
77
77
  });
78
78
  });
@@ -81,23 +81,29 @@ export var TransferUtils;
81
81
  const targets = audioUnitBoxes
82
82
  .toSorted(compareIndex)
83
83
  .map(source => asInstanceOf(rootBox.graph
84
- .findBox(uuidMap.get(source.address.uuid).target)
84
+ .findBox(uuidMap.get(source.address.uuid, "uuid mapping").target)
85
85
  .unwrap("Target AudioUnit has not been copied"), AudioUnitBox));
86
86
  const targetSet = new Set(targets);
87
87
  const allAudioUnits = IndexedBox.collectIndexedBoxes(rootBox.audioUnits, AudioUnitBox);
88
88
  const existing = allAudioUnits.filter(box => !targetSet.has(box));
89
- let position;
89
+ let ordered;
90
90
  if (isDefined(insertIndex)) {
91
- position = clamp(insertIndex, 0, existing.length);
91
+ const position = clamp(insertIndex, 0, existing.length);
92
+ ordered = [...existing.slice(0, position), ...targets, ...existing.slice(position)];
92
93
  }
93
94
  else {
95
+ // Place by AudioUnitOrdering, not by current index: the primary Output unit (highest order)
96
+ // can sit at a low index, so findIndex over the index-sorted list would insert the copy
97
+ // before it. Sort existing by order first so the copy lands among its own kind (e.g. an
98
+ // instrument after the other instruments but before the Output unit).
99
+ const byOrder = existing.toSorted((a, b) => (AudioUnitOrdering[a.type.getValue()] ?? 0) - (AudioUnitOrdering[b.type.getValue()] ?? 0));
94
100
  const maxOrder = targets.reduce((max, box) => Math.max(max, AudioUnitOrdering[box.type.getValue()] ?? 0), 0);
95
- position = existing.findIndex(box => (AudioUnitOrdering[box.type.getValue()] ?? 0) > maxOrder);
101
+ let position = byOrder.findIndex(box => (AudioUnitOrdering[box.type.getValue()] ?? 0) > maxOrder);
96
102
  if (position === -1) {
97
- position = existing.length;
103
+ position = byOrder.length;
98
104
  }
105
+ ordered = [...byOrder.slice(0, position), ...targets, ...byOrder.slice(position)];
99
106
  }
100
- const ordered = [...existing.slice(0, position), ...targets, ...existing.slice(position)];
101
107
  ordered.forEach((box, index) => box.index.setValue(index));
102
108
  };
103
109
  TransferUtils.extractRegions = (regionBoxes, { boxGraph, mandatoryBoxes: { primaryAudioBusBox, rootBox } }, insertPosition = 0.0) => {
@@ -106,9 +112,9 @@ export var TransferUtils;
106
112
  const trackBoxSet = new Set();
107
113
  const audioUnitBoxSet = new SetMultimap();
108
114
  regionBoxes.forEach(regionBox => {
109
- const trackBox = asInstanceOf(regionBox.regions.targetVertex.unwrap().box, TrackBox);
115
+ const trackBox = asInstanceOf(regionBox.regions.targetVertex.unwrap("regions.target").box, TrackBox);
110
116
  trackBoxSet.add(trackBox);
111
- const audioUnitBox = asInstanceOf(trackBox.tracks.targetVertex.unwrap().box, AudioUnitBox);
117
+ const audioUnitBox = asInstanceOf(trackBox.tracks.targetVertex.unwrap("tracks.target").box, AudioUnitBox);
112
118
  audioUnitBoxSet.add(audioUnitBox, trackBox);
113
119
  });
114
120
  console.debug(`Found ${audioUnitBoxSet.keyCount()} audioUnits`);
@@ -129,7 +135,7 @@ export var TransferUtils;
129
135
  .sort(compareIndex)
130
136
  .forEach((source, index) => {
131
137
  const box = boxGraph
132
- .findBox(uuidMap.get(source.address.uuid).target)
138
+ .findBox(uuidMap.get(source.address.uuid, "uuid mapping").target)
133
139
  .unwrap("Target Track has not been copied");
134
140
  asInstanceOf(box, TrackBox).index.setValue(index);
135
141
  }));
@@ -137,7 +143,7 @@ export var TransferUtils;
137
143
  const delta = insertPosition - minPosition;
138
144
  regionBoxes.forEach((source) => {
139
145
  const box = boxGraph
140
- .findBox(uuidMap.get(source.address.uuid).target)
146
+ .findBox(uuidMap.get(source.address.uuid, "uuid mapping").target)
141
147
  .unwrap("Target Track has not been copied");
142
148
  const { position } = UnionBoxTypes.asRegionBox(box);
143
149
  position.setValue(position.getValue() + delta);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-adapters",
3
- "version": "0.0.116",
3
+ "version": "0.0.118",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,18 +23,18 @@
23
23
  "test": "echo \"No tests to run\""
24
24
  },
25
25
  "dependencies": {
26
- "@opendaw/lib-box": "^0.0.86",
27
- "@opendaw/lib-dsp": "^0.0.84",
28
- "@opendaw/lib-fusion": "^0.0.94",
29
- "@opendaw/lib-runtime": "^0.0.79",
30
- "@opendaw/lib-std": "^0.0.78",
31
- "@opendaw/studio-boxes": "^0.0.94",
32
- "@opendaw/studio-enums": "^0.0.77",
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",
33
33
  "soundfont2": "^0.5.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@opendaw/eslint-config": "^0.0.28",
37
37
  "@opendaw/typescript-config": "^0.0.32"
38
38
  },
39
- "gitHead": "c3d96fad75fa5194af728a63e7771d5b811c0daa"
39
+ "gitHead": "c9276338f3101de6e42cd0f52c91c2d9c53c8125"
40
40
  }