@opendaw/studio-adapters 0.0.48 → 0.0.50

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 (171) hide show
  1. package/dist/AutomatableParameterFieldAdapter.js +86 -73
  2. package/dist/BoxAdapterCollection.js +30 -17
  3. package/dist/BoxAdapters.d.ts.map +1 -1
  4. package/dist/BoxAdapters.js +87 -72
  5. package/dist/BoxAdaptersContext.d.ts +2 -2
  6. package/dist/BoxAdaptersContext.d.ts.map +1 -1
  7. package/dist/EngineProcessorAttachment.d.ts +2 -1
  8. package/dist/EngineProcessorAttachment.d.ts.map +1 -1
  9. package/dist/FieldAdapter.js +45 -32
  10. package/dist/IndexedBoxAdapterCollection.js +45 -32
  11. package/dist/NoteBroadcaster.js +25 -12
  12. package/dist/NoteStreamReceiver.js +29 -16
  13. package/dist/ParameterAdapterSet.js +24 -11
  14. package/dist/ParameterFieldAdapters.js +19 -6
  15. package/dist/Parsing.d.ts +5 -0
  16. package/dist/Parsing.d.ts.map +1 -0
  17. package/dist/Parsing.js +10 -0
  18. package/dist/PianoModeAdapter.js +32 -19
  19. package/dist/RootBoxAdapter.js +37 -24
  20. package/dist/Validator.d.ts +10 -0
  21. package/dist/Validator.d.ts.map +1 -0
  22. package/dist/Validator.js +35 -0
  23. package/dist/audio/AudioFileBoxAdapter.js +23 -10
  24. package/dist/audio-unit/AudioBusBoxAdapter.d.ts +1 -1
  25. package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
  26. package/dist/audio-unit/AudioBusBoxAdapter.js +31 -18
  27. package/dist/audio-unit/AudioUnitBoxAdapter.js +74 -63
  28. package/dist/audio-unit/AudioUnitInput.d.ts +1 -1
  29. package/dist/audio-unit/AudioUnitInput.d.ts.map +1 -1
  30. package/dist/audio-unit/AudioUnitInput.js +43 -30
  31. package/dist/audio-unit/AudioUnitOutput.js +33 -20
  32. package/dist/audio-unit/AudioUnitTracks.js +39 -26
  33. package/dist/audio-unit/AuxSendBoxAdapter.js +47 -34
  34. package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +49 -37
  35. package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +41 -29
  36. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +51 -39
  37. package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +39 -27
  38. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +33 -20
  39. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +46 -34
  40. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +45 -33
  41. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +43 -31
  42. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +36 -0
  43. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -0
  44. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +63 -0
  45. package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +30 -17
  46. package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +42 -29
  47. package/dist/devices/instruments/NanoDeviceBoxAdapter.js +38 -26
  48. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +101 -89
  49. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +0 -1
  50. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
  51. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +36 -24
  52. package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +84 -72
  53. package/dist/devices/instruments/TapeDeviceBoxAdapter.js +40 -28
  54. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +26 -4
  55. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
  56. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +70 -33
  57. package/dist/devices/instruments/VaporisateurSettings.d.ts +17 -0
  58. package/dist/devices/instruments/VaporisateurSettings.d.ts.map +1 -0
  59. package/dist/devices/instruments/VaporisateurSettings.js +24 -0
  60. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +51 -39
  61. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +40 -28
  62. package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.js +30 -17
  63. package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.js +47 -35
  64. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +32 -19
  65. package/dist/editing/UserEditing.js +33 -20
  66. package/dist/editing/UserEditingManager.js +28 -15
  67. package/dist/factories/AudioBusFactory.d.ts +7 -0
  68. package/dist/factories/AudioBusFactory.d.ts.map +1 -0
  69. package/dist/factories/AudioBusFactory.js +29 -0
  70. package/dist/factories/AudioUnitFactory.d.ts +13 -0
  71. package/dist/factories/AudioUnitFactory.d.ts.map +1 -0
  72. package/dist/factories/AudioUnitFactory.js +44 -0
  73. package/dist/factories/AudioUnitOrdering.d.ts +3 -0
  74. package/dist/factories/AudioUnitOrdering.d.ts.map +1 -0
  75. package/dist/factories/AudioUnitOrdering.js +7 -0
  76. package/dist/factories/ColorCodes.d.ts +7 -0
  77. package/dist/factories/ColorCodes.d.ts.map +1 -0
  78. package/dist/factories/ColorCodes.js +32 -0
  79. package/dist/factories/Colors.d.ts +15 -0
  80. package/dist/factories/Colors.d.ts.map +1 -0
  81. package/dist/factories/Colors.js +23 -0
  82. package/dist/factories/InstrumentBox.d.ts +3 -0
  83. package/dist/factories/InstrumentBox.d.ts.map +1 -0
  84. package/dist/factories/InstrumentBox.js +1 -0
  85. package/dist/factories/InstrumentFactories.d.ts +34 -0
  86. package/dist/factories/InstrumentFactories.d.ts.map +1 -0
  87. package/dist/factories/InstrumentFactories.js +137 -0
  88. package/dist/factories/InstrumentFactory.d.ts +13 -0
  89. package/dist/factories/InstrumentFactory.d.ts.map +1 -0
  90. package/dist/factories/InstrumentFactory.js +1 -0
  91. package/dist/factories/InstrumentOptions.d.ts +9 -0
  92. package/dist/factories/InstrumentOptions.d.ts.map +1 -0
  93. package/dist/factories/InstrumentOptions.js +1 -0
  94. package/dist/factories/InstrumentProduct.d.ts +8 -0
  95. package/dist/factories/InstrumentProduct.d.ts.map +1 -0
  96. package/dist/factories/InstrumentProduct.js +1 -0
  97. package/dist/grooves/GrooveShuffleBoxAdapter.js +47 -35
  98. package/dist/index.d.ts +20 -3
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +20 -3
  101. package/dist/modular/abstract.js +37 -24
  102. package/dist/modular/connection.js +20 -7
  103. package/dist/modular/connector.js +29 -16
  104. package/dist/modular/modular.js +49 -36
  105. package/dist/modular/modules/audio-input.js +17 -4
  106. package/dist/modular/modules/audio-output.js +17 -4
  107. package/dist/modular/modules/delay.js +24 -11
  108. package/dist/modular/modules/gain.js +24 -11
  109. package/dist/modular/modules/multiplier.js +21 -8
  110. package/dist/modular/user-interface.js +25 -12
  111. package/dist/preset/PresetDecoder.d.ts +11 -0
  112. package/dist/preset/PresetDecoder.d.ts.map +1 -0
  113. package/dist/preset/PresetDecoder.js +154 -0
  114. package/dist/preset/PresetEncoder.d.ts +5 -0
  115. package/dist/preset/PresetEncoder.d.ts.map +1 -0
  116. package/dist/preset/PresetEncoder.js +19 -0
  117. package/dist/preset/PresetHeader.d.ts +5 -0
  118. package/dist/preset/PresetHeader.d.ts.map +1 -0
  119. package/dist/preset/PresetHeader.js +5 -0
  120. package/dist/project/ProjectQueries.d.ts +5 -0
  121. package/dist/project/ProjectQueries.d.ts.map +1 -0
  122. package/dist/project/ProjectQueries.js +10 -0
  123. package/dist/project/ProjectSkeleton.d.ts +10 -1
  124. package/dist/project/ProjectSkeleton.d.ts.map +1 -1
  125. package/dist/project/ProjectSkeleton.js +100 -1
  126. package/dist/project/ProjectUtils.d.ts +13 -0
  127. package/dist/project/ProjectUtils.d.ts.map +1 -0
  128. package/dist/project/ProjectUtils.js +142 -0
  129. package/dist/protocols.d.ts.map +1 -1
  130. package/dist/selection/FilteredSelection.js +47 -34
  131. package/dist/selection/VertexSelection.js +66 -55
  132. package/dist/soundfont/SoundfontFileBoxAdapter.js +21 -8
  133. package/dist/timeline/MarkerBoxAdapter.js +33 -20
  134. package/dist/timeline/MarkerTrackAdapter.js +34 -22
  135. package/dist/timeline/TimelineBoxAdapter.js +24 -11
  136. package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
  137. package/dist/timeline/TrackBoxAdapter.js +97 -85
  138. package/dist/timeline/TrackClips.js +27 -14
  139. package/dist/timeline/TrackRegions.js +40 -27
  140. package/dist/timeline/TrackType.d.ts +1 -1
  141. package/dist/timeline/TrackType.d.ts.map +1 -1
  142. package/dist/timeline/TrackType.js +1 -1
  143. package/dist/timeline/clip/AudioClipBoxAdapter.js +66 -53
  144. package/dist/timeline/clip/NoteClipBoxAdapter.js +66 -53
  145. package/dist/timeline/clip/ValueClipBoxAdapter.js +67 -54
  146. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +85 -73
  147. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +53 -40
  148. package/dist/timeline/event/NoteEventBoxAdapter.js +43 -30
  149. package/dist/timeline/event/ValueEventBoxAdapter.js +67 -54
  150. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +17 -9
  151. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
  152. package/dist/timeline/region/AudioRegionBoxAdapter.js +149 -83
  153. package/dist/timeline/region/MutableRegion.d.ts +8 -0
  154. package/dist/timeline/region/MutableRegion.d.ts.map +1 -0
  155. package/dist/timeline/region/MutableRegion.js +1 -0
  156. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +6 -1
  157. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
  158. package/dist/timeline/region/NoteRegionBoxAdapter.js +78 -61
  159. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +6 -1
  160. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
  161. package/dist/timeline/region/ValueRegionBoxAdapter.js +79 -62
  162. package/package.json +8 -8
  163. package/dist/IconSymbol.d.ts +0 -126
  164. package/dist/IconSymbol.d.ts.map +0 -1
  165. package/dist/IconSymbol.js +0 -126
  166. package/dist/UpdateClockRate.d.ts +0 -2
  167. package/dist/UpdateClockRate.d.ts.map +0 -1
  168. package/dist/UpdateClockRate.js +0 -2
  169. package/dist/project/ProjectDecoder.d.ts +0 -10
  170. package/dist/project/ProjectDecoder.d.ts.map +0 -1
  171. package/dist/project/ProjectDecoder.js +0 -36
@@ -1,3 +1,15 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModuleConnectorAdapter_boxAdapters, _ModuleConnectorAdapter_field, _ModuleConnectorAdapter_direction, _ModuleConnectorAdapter_name;
1
13
  import { Pointers } from "@opendaw/studio-enums";
2
14
  import { Arrays } from "@opendaw/lib-std";
3
15
  import { ModuleConnectionAdapter } from "./connection";
@@ -10,15 +22,15 @@ export class ModuleConnectorAdapter {
10
22
  static create(boxAdapters, field, direction, name) {
11
23
  return new ModuleConnectorAdapter(boxAdapters, field, direction, name ?? field.fieldName);
12
24
  }
13
- #boxAdapters;
14
- #field;
15
- #direction;
16
- #name;
17
25
  constructor(boxAdapters, field, direction, name) {
18
- this.#boxAdapters = boxAdapters;
19
- this.#field = field;
20
- this.#direction = direction;
21
- this.#name = name;
26
+ _ModuleConnectorAdapter_boxAdapters.set(this, void 0);
27
+ _ModuleConnectorAdapter_field.set(this, void 0);
28
+ _ModuleConnectorAdapter_direction.set(this, void 0);
29
+ _ModuleConnectorAdapter_name.set(this, void 0);
30
+ __classPrivateFieldSet(this, _ModuleConnectorAdapter_boxAdapters, boxAdapters, "f");
31
+ __classPrivateFieldSet(this, _ModuleConnectorAdapter_field, field, "f");
32
+ __classPrivateFieldSet(this, _ModuleConnectorAdapter_direction, direction, "f");
33
+ __classPrivateFieldSet(this, _ModuleConnectorAdapter_name, name, "f");
22
34
  }
23
35
  matches(other) {
24
36
  return this.direction !== other.direction && this.field.pointerRules.accepts
@@ -26,17 +38,18 @@ export class ModuleConnectorAdapter {
26
38
  .some(type => type === accepts));
27
39
  }
28
40
  get connections() {
29
- if (this.#field.pointerHub.isEmpty()) {
41
+ if (__classPrivateFieldGet(this, _ModuleConnectorAdapter_field, "f").pointerHub.isEmpty()) {
30
42
  return Arrays.empty();
31
43
  }
32
- return this.#field.pointerHub.filter(Pointers.VoltageConnection)
33
- .map(({ box }) => this.#boxAdapters.adapterFor(box, ModuleConnectionAdapter));
44
+ return __classPrivateFieldGet(this, _ModuleConnectorAdapter_field, "f").pointerHub.filter(Pointers.VoltageConnection)
45
+ .map(({ box }) => __classPrivateFieldGet(this, _ModuleConnectorAdapter_boxAdapters, "f").adapterFor(box, ModuleConnectionAdapter));
34
46
  }
35
- get field() { return this.#field; }
36
- get address() { return this.#field.address; }
37
- get direction() { return this.#direction; }
38
- get name() { return this.#name; }
47
+ get field() { return __classPrivateFieldGet(this, _ModuleConnectorAdapter_field, "f"); }
48
+ get address() { return __classPrivateFieldGet(this, _ModuleConnectorAdapter_field, "f").address; }
49
+ get direction() { return __classPrivateFieldGet(this, _ModuleConnectorAdapter_direction, "f"); }
50
+ get name() { return __classPrivateFieldGet(this, _ModuleConnectorAdapter_name, "f"); }
39
51
  toString() {
40
- return `{ModuleConnectorAdapter address: ${this.#field.address.toString()}, direction: ${this.#direction}}`;
52
+ return `{ModuleConnectorAdapter address: ${__classPrivateFieldGet(this, _ModuleConnectorAdapter_field, "f").address.toString()}, direction: ${__classPrivateFieldGet(this, _ModuleConnectorAdapter_direction, "f")}}`;
41
53
  }
42
54
  }
55
+ _ModuleConnectorAdapter_boxAdapters = new WeakMap(), _ModuleConnectorAdapter_field = new WeakMap(), _ModuleConnectorAdapter_direction = new WeakMap(), _ModuleConnectorAdapter_name = new WeakMap();
@@ -1,68 +1,81 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModularAdapter_terminator, _ModularAdapter_listeners, _ModularAdapter_context, _ModularAdapter_box, _ModularAdapter_modules, _ModularAdapter_connections;
1
13
  import { asDefined, ifDefined, Listeners, Terminator, UUID } from "@opendaw/lib-std";
2
14
  import { ModuleConnectionAdapter } from "./connection";
3
15
  import { Pointers } from "@opendaw/studio-enums";
4
16
  import { Modules } from "./module";
5
17
  import { ModularDeviceBoxAdapter } from "../devices/audio-effects/ModularDeviceBoxAdapter";
6
18
  export class ModularAdapter {
7
- #terminator = new Terminator();
8
- #listeners;
9
- #context;
10
- #box;
11
- #modules;
12
- #connections;
13
19
  constructor(context, box) {
14
- this.#context = context;
15
- this.#box = box;
16
- this.#listeners = this.#terminator.own(new Listeners());
17
- this.#modules = UUID.newSet(adapter => adapter.uuid);
18
- this.#connections = UUID.newSet(adapter => adapter.uuid);
20
+ _ModularAdapter_terminator.set(this, new Terminator());
21
+ _ModularAdapter_listeners.set(this, void 0);
22
+ _ModularAdapter_context.set(this, void 0);
23
+ _ModularAdapter_box.set(this, void 0);
24
+ _ModularAdapter_modules.set(this, void 0);
25
+ _ModularAdapter_connections.set(this, void 0);
26
+ __classPrivateFieldSet(this, _ModularAdapter_context, context, "f");
27
+ __classPrivateFieldSet(this, _ModularAdapter_box, box, "f");
28
+ __classPrivateFieldSet(this, _ModularAdapter_listeners, __classPrivateFieldGet(this, _ModularAdapter_terminator, "f").own(new Listeners()), "f");
29
+ __classPrivateFieldSet(this, _ModularAdapter_modules, UUID.newSet(adapter => adapter.uuid), "f");
30
+ __classPrivateFieldSet(this, _ModularAdapter_connections, UUID.newSet(adapter => adapter.uuid), "f");
19
31
  const addModule = (pointer) => {
20
- const adapter = Modules.adapterFor(this.#context.boxAdapters, pointer.box);
21
- const added = this.#modules.add(adapter);
32
+ const adapter = Modules.adapterFor(__classPrivateFieldGet(this, _ModularAdapter_context, "f").boxAdapters, pointer.box);
33
+ const added = __classPrivateFieldGet(this, _ModularAdapter_modules, "f").add(adapter);
22
34
  // assert(added, `Could not add ${pointer}`)
23
35
  // TODO Implement catchupAndSubscribeTransactual that deals with that situation
24
36
  if (!added) {
25
37
  return;
26
38
  }
27
- this.#listeners.proxy.onModuleAdded(adapter);
39
+ __classPrivateFieldGet(this, _ModularAdapter_listeners, "f").proxy.onModuleAdded(adapter);
28
40
  };
29
- const removeModule = (pointer) => this.#listeners.proxy.onModuleRemoved(this.#modules.removeByKey(pointer.address.uuid));
41
+ const removeModule = (pointer) => __classPrivateFieldGet(this, _ModularAdapter_listeners, "f").proxy.onModuleRemoved(__classPrivateFieldGet(this, _ModularAdapter_modules, "f").removeByKey(pointer.address.uuid));
30
42
  const addConnection = (pointer) => {
31
- const adapter = this.#context.boxAdapters.adapterFor(pointer.box, ModuleConnectionAdapter);
32
- const added = this.#connections.add(adapter);
43
+ const adapter = __classPrivateFieldGet(this, _ModularAdapter_context, "f").boxAdapters.adapterFor(pointer.box, ModuleConnectionAdapter);
44
+ const added = __classPrivateFieldGet(this, _ModularAdapter_connections, "f").add(adapter);
33
45
  // assert(added, `Could not add ${pointer}`)
34
46
  // TODO Implement catchupAndSubscribeTransactual that deals with that situation
35
47
  if (!added) {
36
48
  return;
37
49
  }
38
- this.#listeners.proxy.onConnectionAdded(adapter);
50
+ __classPrivateFieldGet(this, _ModularAdapter_listeners, "f").proxy.onConnectionAdded(adapter);
39
51
  };
40
- const removeConnection = (pointer) => this.#listeners.proxy.onConnectionRemoved(this.#connections.removeByKey(pointer.address.uuid));
41
- this.#box.modules.pointerHub.filter(Pointers.ModuleCollection).forEach(addModule);
42
- this.#box.connections.pointerHub.filter(Pointers.ConnectionCollection).forEach(addConnection);
43
- this.#terminator.own(this.#box.modules.pointerHub
52
+ const removeConnection = (pointer) => __classPrivateFieldGet(this, _ModularAdapter_listeners, "f").proxy.onConnectionRemoved(__classPrivateFieldGet(this, _ModularAdapter_connections, "f").removeByKey(pointer.address.uuid));
53
+ __classPrivateFieldGet(this, _ModularAdapter_box, "f").modules.pointerHub.filter(Pointers.ModuleCollection).forEach(addModule);
54
+ __classPrivateFieldGet(this, _ModularAdapter_box, "f").connections.pointerHub.filter(Pointers.ConnectionCollection).forEach(addConnection);
55
+ __classPrivateFieldGet(this, _ModularAdapter_terminator, "f").own(__classPrivateFieldGet(this, _ModularAdapter_box, "f").modules.pointerHub
44
56
  .subscribe({ onAdded: addModule, onRemoved: removeModule }, Pointers.ModuleCollection));
45
- this.#terminator.own(this.#box.connections.pointerHub
57
+ __classPrivateFieldGet(this, _ModularAdapter_terminator, "f").own(__classPrivateFieldGet(this, _ModularAdapter_box, "f").connections.pointerHub
46
58
  .subscribe({ onAdded: addConnection, onRemoved: removeConnection }, Pointers.ConnectionCollection));
47
59
  }
48
60
  catchupAndSubscribe(listener) {
49
- ifDefined(listener.onModuleAdded, fn => this.#modules.forEach(adapter => fn(adapter)));
50
- ifDefined(listener.onConnectionAdded, fn => this.#connections.forEach(adapter => fn(adapter)));
51
- return this.#listeners.subscribe(listener);
61
+ ifDefined(listener.onModuleAdded, fn => __classPrivateFieldGet(this, _ModularAdapter_modules, "f").forEach(adapter => fn(adapter)));
62
+ ifDefined(listener.onConnectionAdded, fn => __classPrivateFieldGet(this, _ModularAdapter_connections, "f").forEach(adapter => fn(adapter)));
63
+ return __classPrivateFieldGet(this, _ModularAdapter_listeners, "f").subscribe(listener);
52
64
  }
53
- get box() { return this.#box; }
54
- get address() { return this.#box.address; }
55
- get uuid() { return this.#box.address.uuid; }
56
- get editingField() { return this.#box.editing; }
57
- get labelField() { return this.#box.label; }
58
- get modules() { return this.#modules.values(); }
59
- get connections() { return this.#connections.values(); }
65
+ get box() { return __classPrivateFieldGet(this, _ModularAdapter_box, "f"); }
66
+ get address() { return __classPrivateFieldGet(this, _ModularAdapter_box, "f").address; }
67
+ get uuid() { return __classPrivateFieldGet(this, _ModularAdapter_box, "f").address.uuid; }
68
+ get editingField() { return __classPrivateFieldGet(this, _ModularAdapter_box, "f").editing; }
69
+ get labelField() { return __classPrivateFieldGet(this, _ModularAdapter_box, "f").label; }
70
+ get modules() { return __classPrivateFieldGet(this, _ModularAdapter_modules, "f").values(); }
71
+ get connections() { return __classPrivateFieldGet(this, _ModularAdapter_connections, "f").values(); }
60
72
  get device() {
61
- return this.#context.boxAdapters
62
- .adapterFor(asDefined(this.#box.device.pointerHub.incoming().at(0), "No device found").box, ModularDeviceBoxAdapter);
73
+ return __classPrivateFieldGet(this, _ModularAdapter_context, "f").boxAdapters
74
+ .adapterFor(asDefined(__classPrivateFieldGet(this, _ModularAdapter_box, "f").device.pointerHub.incoming().at(0), "No device found").box, ModularDeviceBoxAdapter);
63
75
  }
64
76
  terminate() {
65
77
  console.debug(`terminate ${this}`);
66
- this.#terminator.terminate();
78
+ __classPrivateFieldGet(this, _ModularAdapter_terminator, "f").terminate();
67
79
  }
68
80
  }
81
+ _ModularAdapter_terminator = new WeakMap(), _ModularAdapter_listeners = new WeakMap(), _ModularAdapter_context = new WeakMap(), _ModularAdapter_box = new WeakMap(), _ModularAdapter_modules = new WeakMap(), _ModularAdapter_connections = new WeakMap();
@@ -1,17 +1,30 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModularAudioInputAdapter_voltageOutput;
1
13
  import { Arrays } from "@opendaw/lib-std";
2
14
  import { AbstractModuleAdapter } from "../abstract";
3
15
  import { Direction, ModuleConnectorAdapter } from "../connector";
4
16
  export class ModularAudioInputAdapter extends AbstractModuleAdapter {
5
- #voltageOutput;
6
17
  constructor(context, box) {
7
18
  super(context, box);
8
- this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.output, Direction.Output, "Output");
19
+ _ModularAudioInputAdapter_voltageOutput.set(this, void 0);
20
+ __classPrivateFieldSet(this, _ModularAudioInputAdapter_voltageOutput, ModuleConnectorAdapter.create(context.boxAdapters, box.output, Direction.Output, "Output"), "f");
9
21
  }
10
- get voltageOutput() { return this.#voltageOutput; }
22
+ get voltageOutput() { return __classPrivateFieldGet(this, _ModularAudioInputAdapter_voltageOutput, "f"); }
11
23
  get inputs() {
12
24
  return Arrays.empty();
13
25
  }
14
26
  get outputs() {
15
- return [this.#voltageOutput];
27
+ return [__classPrivateFieldGet(this, _ModularAudioInputAdapter_voltageOutput, "f")];
16
28
  }
17
29
  }
30
+ _ModularAudioInputAdapter_voltageOutput = new WeakMap();
@@ -1,17 +1,30 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModularAudioOutputAdapter_voltageInput;
1
13
  import { Arrays } from "@opendaw/lib-std";
2
14
  import { AbstractModuleAdapter } from "../abstract";
3
15
  import { Direction, ModuleConnectorAdapter } from "../connector";
4
16
  export class ModularAudioOutputAdapter extends AbstractModuleAdapter {
5
- #voltageInput;
6
17
  constructor(context, box) {
7
18
  super(context, box);
8
- this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.input, Direction.Input, "Input");
19
+ _ModularAudioOutputAdapter_voltageInput.set(this, void 0);
20
+ __classPrivateFieldSet(this, _ModularAudioOutputAdapter_voltageInput, ModuleConnectorAdapter.create(context.boxAdapters, box.input, Direction.Input, "Input"), "f");
9
21
  }
10
- get voltageInput() { return this.#voltageInput; }
22
+ get voltageInput() { return __classPrivateFieldGet(this, _ModularAudioOutputAdapter_voltageInput, "f"); }
11
23
  get inputs() {
12
- return [this.#voltageInput];
24
+ return [__classPrivateFieldGet(this, _ModularAudioOutputAdapter_voltageInput, "f")];
13
25
  }
14
26
  get outputs() {
15
27
  return Arrays.empty();
16
28
  }
17
29
  }
30
+ _ModularAudioOutputAdapter_voltageInput = new WeakMap();
@@ -1,23 +1,36 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModuleDelayAdapter_parameterTime, _ModuleDelayAdapter_voltageInput, _ModuleDelayAdapter_voltageOutput;
1
13
  import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
14
  import { AbstractModuleAdapter } from "../abstract";
3
15
  import { Direction, ModuleConnectorAdapter } from "../connector";
4
16
  export class ModuleDelayAdapter extends AbstractModuleAdapter {
5
- #parameterTime;
6
- #voltageInput;
7
- #voltageOutput;
8
17
  constructor(context, box) {
9
18
  super(context, box);
10
- this.#parameterTime = this.parameters.createParameter(box.time, ValueMapping.exponential(1.0, 10000.0), StringMapping.numeric({ unit: "ms" }), "Time");
11
- this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input");
12
- this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output");
19
+ _ModuleDelayAdapter_parameterTime.set(this, void 0);
20
+ _ModuleDelayAdapter_voltageInput.set(this, void 0);
21
+ _ModuleDelayAdapter_voltageOutput.set(this, void 0);
22
+ __classPrivateFieldSet(this, _ModuleDelayAdapter_parameterTime, this.parameters.createParameter(box.time, ValueMapping.exponential(1.0, 10000.0), StringMapping.numeric({ unit: "ms" }), "Time"), "f");
23
+ __classPrivateFieldSet(this, _ModuleDelayAdapter_voltageInput, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input"), "f");
24
+ __classPrivateFieldSet(this, _ModuleDelayAdapter_voltageOutput, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output"), "f");
13
25
  }
14
- get parameterTime() { return this.#parameterTime; }
15
- get voltageInput() { return this.#voltageInput; }
16
- get voltageOutput() { return this.#voltageOutput; }
26
+ get parameterTime() { return __classPrivateFieldGet(this, _ModuleDelayAdapter_parameterTime, "f"); }
27
+ get voltageInput() { return __classPrivateFieldGet(this, _ModuleDelayAdapter_voltageInput, "f"); }
28
+ get voltageOutput() { return __classPrivateFieldGet(this, _ModuleDelayAdapter_voltageOutput, "f"); }
17
29
  get inputs() {
18
- return [this.#voltageInput];
30
+ return [__classPrivateFieldGet(this, _ModuleDelayAdapter_voltageInput, "f")];
19
31
  }
20
32
  get outputs() {
21
- return [this.#voltageOutput];
33
+ return [__classPrivateFieldGet(this, _ModuleDelayAdapter_voltageOutput, "f")];
22
34
  }
23
35
  }
36
+ _ModuleDelayAdapter_parameterTime = new WeakMap(), _ModuleDelayAdapter_voltageInput = new WeakMap(), _ModuleDelayAdapter_voltageOutput = new WeakMap();
@@ -1,23 +1,36 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModuleGainAdapter_parameterGain, _ModuleGainAdapter_voltageInput, _ModuleGainAdapter_voltageOutput;
1
13
  import { StringMapping, ValueMapping } from "@opendaw/lib-std";
2
14
  import { AbstractModuleAdapter } from "../abstract";
3
15
  import { Direction, ModuleConnectorAdapter } from "../connector";
4
16
  export class ModuleGainAdapter extends AbstractModuleAdapter {
5
- #parameterGain;
6
- #voltageInput;
7
- #voltageOutput;
8
17
  constructor(context, box) {
9
18
  super(context, box);
10
- this.#parameterGain = this.parameters.createParameter(box.gain, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db" }), "Gain");
11
- this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input");
12
- this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output");
19
+ _ModuleGainAdapter_parameterGain.set(this, void 0);
20
+ _ModuleGainAdapter_voltageInput.set(this, void 0);
21
+ _ModuleGainAdapter_voltageOutput.set(this, void 0);
22
+ __classPrivateFieldSet(this, _ModuleGainAdapter_parameterGain, this.parameters.createParameter(box.gain, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db" }), "Gain"), "f");
23
+ __classPrivateFieldSet(this, _ModuleGainAdapter_voltageInput, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, "Input"), "f");
24
+ __classPrivateFieldSet(this, _ModuleGainAdapter_voltageOutput, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Output"), "f");
13
25
  }
14
- get parameterGain() { return this.#parameterGain; }
15
- get voltageInput() { return this.#voltageInput; }
16
- get voltageOutput() { return this.#voltageOutput; }
26
+ get parameterGain() { return __classPrivateFieldGet(this, _ModuleGainAdapter_parameterGain, "f"); }
27
+ get voltageInput() { return __classPrivateFieldGet(this, _ModuleGainAdapter_voltageInput, "f"); }
28
+ get voltageOutput() { return __classPrivateFieldGet(this, _ModuleGainAdapter_voltageOutput, "f"); }
17
29
  get inputs() {
18
- return [this.#voltageInput];
30
+ return [__classPrivateFieldGet(this, _ModuleGainAdapter_voltageInput, "f")];
19
31
  }
20
32
  get outputs() {
21
- return [this.#voltageOutput];
33
+ return [__classPrivateFieldGet(this, _ModuleGainAdapter_voltageOutput, "f")];
22
34
  }
23
35
  }
36
+ _ModuleGainAdapter_parameterGain = new WeakMap(), _ModuleGainAdapter_voltageInput = new WeakMap(), _ModuleGainAdapter_voltageOutput = new WeakMap();
@@ -1,19 +1,32 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ModuleMultiplierAdapter_voltageInputX, _ModuleMultiplierAdapter_voltageInputY, _ModuleMultiplierAdapter_voltageOutput;
1
13
  import { AbstractModuleAdapter } from "../abstract";
2
14
  import { Direction, ModuleConnectorAdapter } from "../connector";
3
15
  export class ModuleMultiplierAdapter extends AbstractModuleAdapter {
4
- #voltageInputX;
5
- #voltageInputY;
6
- #voltageOutput;
7
16
  constructor(context, box) {
8
17
  super(context, box);
9
- this.#voltageInputX = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputX, Direction.Input, "X");
10
- this.#voltageInputY = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputY, Direction.Input, "Y");
11
- this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Result");
18
+ _ModuleMultiplierAdapter_voltageInputX.set(this, void 0);
19
+ _ModuleMultiplierAdapter_voltageInputY.set(this, void 0);
20
+ _ModuleMultiplierAdapter_voltageOutput.set(this, void 0);
21
+ __classPrivateFieldSet(this, _ModuleMultiplierAdapter_voltageInputX, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputX, Direction.Input, "X"), "f");
22
+ __classPrivateFieldSet(this, _ModuleMultiplierAdapter_voltageInputY, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputY, Direction.Input, "Y"), "f");
23
+ __classPrivateFieldSet(this, _ModuleMultiplierAdapter_voltageOutput, ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, "Result"), "f");
12
24
  }
13
25
  get inputs() {
14
- return [this.#voltageInputX, this.#voltageInputY];
26
+ return [__classPrivateFieldGet(this, _ModuleMultiplierAdapter_voltageInputX, "f"), __classPrivateFieldGet(this, _ModuleMultiplierAdapter_voltageInputY, "f")];
15
27
  }
16
28
  get outputs() {
17
- return [this.#voltageOutput];
29
+ return [__classPrivateFieldGet(this, _ModuleMultiplierAdapter_voltageOutput, "f")];
18
30
  }
19
31
  }
32
+ _ModuleMultiplierAdapter_voltageInputX = new WeakMap(), _ModuleMultiplierAdapter_voltageInputY = new WeakMap(), _ModuleMultiplierAdapter_voltageOutput = new WeakMap();
@@ -1,23 +1,36 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _DeviceInterfaceKnobAdapter_instances, _DeviceInterfaceKnobAdapter_context, _DeviceInterfaceKnobAdapter_box, _DeviceInterfaceKnobAdapter_parameterTarget_get;
1
13
  import { Modules } from "./module";
2
14
  export class DeviceInterfaceKnobAdapter {
3
- #context;
4
- #box;
5
15
  constructor(context, box) {
6
- this.#context = context;
7
- this.#box = box;
16
+ _DeviceInterfaceKnobAdapter_instances.add(this);
17
+ _DeviceInterfaceKnobAdapter_context.set(this, void 0);
18
+ _DeviceInterfaceKnobAdapter_box.set(this, void 0);
19
+ __classPrivateFieldSet(this, _DeviceInterfaceKnobAdapter_context, context, "f");
20
+ __classPrivateFieldSet(this, _DeviceInterfaceKnobAdapter_box, box, "f");
8
21
  }
9
- get box() { return this.#box; }
10
- get uuid() { return this.#box.address.uuid; }
11
- get address() { return this.#box.address; }
22
+ get box() { return __classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_box, "f"); }
23
+ get uuid() { return __classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_box, "f").address.uuid; }
24
+ get address() { return __classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_box, "f").address; }
12
25
  get moduleAdapter() {
13
- return Modules.adapterFor(this.#context.boxAdapters, this.#parameterTarget.box);
26
+ return Modules.adapterFor(__classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_context, "f").boxAdapters, __classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_instances, "a", _DeviceInterfaceKnobAdapter_parameterTarget_get).box);
14
27
  }
15
28
  get parameterAdapter() {
16
- return this.moduleAdapter.parameters.parameterAt(this.#parameterTarget.address);
17
- }
18
- get #parameterTarget() {
19
- return this.#box.parameter.targetVertex.unwrap("Parameter not assigned");
29
+ return this.moduleAdapter.parameters.parameterAt(__classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_instances, "a", _DeviceInterfaceKnobAdapter_parameterTarget_get).address);
20
30
  }
21
31
  terminate() {
22
32
  }
23
33
  }
34
+ _DeviceInterfaceKnobAdapter_context = new WeakMap(), _DeviceInterfaceKnobAdapter_box = new WeakMap(), _DeviceInterfaceKnobAdapter_instances = new WeakSet(), _DeviceInterfaceKnobAdapter_parameterTarget_get = function _DeviceInterfaceKnobAdapter_parameterTarget_get() {
35
+ return __classPrivateFieldGet(this, _DeviceInterfaceKnobAdapter_box, "f").parameter.targetVertex.unwrap("Parameter not assigned");
36
+ };
@@ -0,0 +1,11 @@
1
+ import { Attempt } from "@opendaw/lib-std";
2
+ import { AudioUnitBox } from "@opendaw/studio-boxes";
3
+ import { ProjectSkeleton } from "../project/ProjectSkeleton";
4
+ export declare namespace PresetDecoder {
5
+ const decode: (bytes: ArrayBufferLike, target: ProjectSkeleton) => void;
6
+ const replaceAudioUnit: (arrayBuffer: ArrayBuffer, targetAudioUnitBox: AudioUnitBox, options?: {
7
+ keepMIDIEffects?: boolean;
8
+ keepAudioEffects?: boolean;
9
+ }) => Attempt<void, string>;
10
+ }
11
+ //# sourceMappingURL=PresetDecoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresetDecoder.d.ts","sourceRoot":"","sources":["../../src/preset/PresetDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,OAAO,EAQV,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAK1D,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,OAAO,eAAe,EAAE,QAAQ,eAAe,SAqDrE,CAAA;IAEM,MAAM,gBAAgB,GAAI,aAAa,WAAW,EAAE,oBAAoB,YAAY,EAAE,UAAU;QACnG,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAC7B,KAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAgGvB,CAAA;CACJ"}
@@ -0,0 +1,154 @@
1
+ import { asDefined, asInstanceOf, Attempts, ByteArrayInput, isDefined, isInstanceOf, Option, RuntimeNotifier, UUID } from "@opendaw/lib-std";
2
+ import { BoxGraph, PointerField } from "@opendaw/lib-box";
3
+ import { AudioUnitType } from "@opendaw/studio-enums";
4
+ import { AudioFileBox, AudioUnitBox, BoxIO, CaptureAudioBox, CaptureMidiBox, SoundfontFileBox, TrackBox } from "@opendaw/studio-boxes";
5
+ import { ProjectSkeleton } from "../project/ProjectSkeleton";
6
+ import { ProjectUtils } from "../project/ProjectUtils";
7
+ import { TrackType } from "../timeline/TrackType";
8
+ import { PresetHeader } from "./PresetHeader";
9
+ export var PresetDecoder;
10
+ (function (PresetDecoder) {
11
+ PresetDecoder.decode = (bytes, target) => {
12
+ const header = new ByteArrayInput(bytes.slice(0, 8));
13
+ if (header.readInt() !== PresetHeader.MAGIC_HEADER_OPEN) {
14
+ RuntimeNotifier.info({
15
+ headline: "Could Not Import Preset",
16
+ message: "Invalid preset file"
17
+ }).then();
18
+ return;
19
+ }
20
+ if (header.readInt() !== PresetHeader.FORMAT_VERSION) {
21
+ RuntimeNotifier.info({
22
+ headline: "Could Not Import Preset",
23
+ message: "Invalid preset version"
24
+ }).then();
25
+ return;
26
+ }
27
+ const sourceBoxGraph = new BoxGraph(Option.wrap(BoxIO.create));
28
+ try {
29
+ sourceBoxGraph.fromArrayBuffer(bytes.slice(8));
30
+ }
31
+ catch (reason) {
32
+ RuntimeNotifier.info({
33
+ headline: "Could Not Import Preset",
34
+ message: String(reason)
35
+ }).then();
36
+ return;
37
+ }
38
+ const sourceAudioUnitBoxes = sourceBoxGraph.boxes()
39
+ .filter(box => isInstanceOf(box, AudioUnitBox))
40
+ .filter(box => box.type.getValue() !== AudioUnitType.Output);
41
+ ProjectUtils.extractAudioUnits(sourceAudioUnitBoxes, target, { excludeTimeline: true })
42
+ .filter(box => box.type.getValue() !== AudioUnitType.Output)
43
+ .forEach((audioUnitBox) => {
44
+ const inputBox = audioUnitBox.input.pointerHub.incoming().at(0)?.box;
45
+ if (isDefined(inputBox)) {
46
+ audioUnitBox.capture.targetVertex.ifSome(({ box: captureBox }) => {
47
+ if (captureBox instanceof CaptureMidiBox) {
48
+ TrackBox.create(target.boxGraph, UUID.generate(), box => {
49
+ box.index.setValue(0);
50
+ box.type.setValue(TrackType.Notes);
51
+ box.target.refer(audioUnitBox);
52
+ box.tracks.refer(audioUnitBox.tracks);
53
+ });
54
+ }
55
+ else if (captureBox instanceof CaptureAudioBox) {
56
+ TrackBox.create(target.boxGraph, UUID.generate(), box => {
57
+ box.index.setValue(0);
58
+ box.type.setValue(TrackType.Audio);
59
+ box.target.refer(audioUnitBox);
60
+ box.tracks.refer(audioUnitBox.tracks);
61
+ });
62
+ }
63
+ });
64
+ }
65
+ });
66
+ };
67
+ PresetDecoder.replaceAudioUnit = (arrayBuffer, targetAudioUnitBox, options) => {
68
+ console.debug("ReplaceAudioUnit with preset...");
69
+ const skeleton = ProjectSkeleton.empty({
70
+ createDefaultUser: false,
71
+ createOutputCompressor: false
72
+ });
73
+ const sourceBoxGraph = skeleton.boxGraph;
74
+ const targetBoxGraph = targetAudioUnitBox.graph;
75
+ sourceBoxGraph.beginTransaction();
76
+ PresetDecoder.decode(arrayBuffer, skeleton);
77
+ sourceBoxGraph.endTransaction();
78
+ const sourceAudioUnitBox = asDefined(skeleton.mandatoryBoxes.rootBox.audioUnits.pointerHub.incoming()
79
+ .map(({ box }) => asInstanceOf(box, AudioUnitBox))
80
+ .find((box) => box.type.getValue() !== AudioUnitType.Output), "Source has no audioUnitBox");
81
+ const sourceCaptureBox = sourceAudioUnitBox.capture.targetVertex.mapOr(({ box }) => box.name, "");
82
+ const targetCaptureBox = targetAudioUnitBox.capture.targetVertex.mapOr(({ box }) => box.name, "");
83
+ if (sourceCaptureBox !== targetCaptureBox) {
84
+ return Attempts.err("Cannot replace incompatible instruments");
85
+ }
86
+ const replaceMIDIEffects = options?.keepMIDIEffects !== true;
87
+ const replaceAudioEffects = options?.keepAudioEffects !== true;
88
+ console.debug("replaceMIDIEffects", replaceMIDIEffects);
89
+ console.debug("replaceAudioEffects", replaceAudioEffects);
90
+ asDefined(targetAudioUnitBox.input.pointerHub.incoming().at(0)?.box, "Target has no input").delete();
91
+ if (replaceMIDIEffects) {
92
+ targetAudioUnitBox.midiEffects.pointerHub.incoming().forEach(({ box }) => box.delete());
93
+ }
94
+ else {
95
+ sourceBoxGraph.beginTransaction();
96
+ sourceAudioUnitBox.midiEffects.pointerHub.incoming().forEach(({ box }) => box.delete());
97
+ sourceBoxGraph.endTransaction();
98
+ }
99
+ if (replaceAudioEffects) {
100
+ targetAudioUnitBox.audioEffects.pointerHub.incoming().forEach(({ box }) => box.delete());
101
+ }
102
+ else {
103
+ sourceBoxGraph.beginTransaction();
104
+ sourceAudioUnitBox.audioEffects.pointerHub.incoming().forEach(({ box }) => box.delete());
105
+ sourceBoxGraph.endTransaction();
106
+ }
107
+ // We do not take track or capture boxes into account
108
+ const excludeBox = (box) => box.accept({
109
+ visitTrackBox: (_box) => true,
110
+ visitCaptureMidiBox: (_box) => true,
111
+ visitCaptureAudioBox: (_box) => true
112
+ }) === true;
113
+ const uuidMap = UUID.newSet(({ source }) => source);
114
+ const dependencies = Array.from(sourceBoxGraph.dependenciesOf(sourceAudioUnitBox, {
115
+ excludeBox,
116
+ alwaysFollowMandatory: false
117
+ }).boxes);
118
+ uuidMap.addMany([
119
+ {
120
+ source: sourceAudioUnitBox.address.uuid,
121
+ target: targetAudioUnitBox.address.uuid
122
+ },
123
+ ...dependencies
124
+ .map(({ address: { uuid }, name }) => ({
125
+ source: uuid,
126
+ target: name === AudioFileBox.ClassName || name === SoundfontFileBox.ClassName
127
+ ? uuid
128
+ : UUID.generate()
129
+ }))
130
+ ]);
131
+ PointerField.decodeWith({
132
+ map: (_pointer, newAddress) => newAddress.map(address => uuidMap.opt(address.uuid).match({
133
+ none: () => address,
134
+ some: ({ target }) => address.moveTo(target)
135
+ }))
136
+ }, () => {
137
+ dependencies
138
+ .forEach((source) => {
139
+ const input = new ByteArrayInput(source.toArrayBuffer());
140
+ const key = source.name;
141
+ const uuid = uuidMap.get(source.address.uuid).target;
142
+ if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
143
+ // Those boxes keep their UUID. So if they are already in the graph, we can just read them.
144
+ if (targetBoxGraph.findBox(source.address.uuid).nonEmpty()) {
145
+ source.read(input);
146
+ return;
147
+ }
148
+ }
149
+ targetBoxGraph.createBox(key, uuid, box => box.read(input));
150
+ });
151
+ });
152
+ return Attempts.Ok;
153
+ };
154
+ })(PresetDecoder || (PresetDecoder = {}));