@opendaw/studio-adapters 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +661 -0
  2. package/dist/AutomatableParameterFieldAdapter.d.ts +9 -5
  3. package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
  4. package/dist/AutomatableParameterFieldAdapter.js +61 -40
  5. package/dist/BoxAdapters.d.ts.map +1 -1
  6. package/dist/BoxAdapters.js +12 -0
  7. package/dist/DeviceManualUrls.d.ts +1 -0
  8. package/dist/DeviceManualUrls.d.ts.map +1 -1
  9. package/dist/DeviceManualUrls.js +1 -0
  10. package/dist/ParameterFieldAdapters.d.ts +3 -7
  11. package/dist/ParameterFieldAdapters.d.ts.map +1 -1
  12. package/dist/ParameterFieldAdapters.js +2 -15
  13. package/dist/ParameterOwner.d.ts.map +1 -1
  14. package/dist/ParameterOwner.js +4 -0
  15. package/dist/RecordingProcessorOptions.d.ts +4 -0
  16. package/dist/RecordingProcessorOptions.d.ts.map +1 -1
  17. package/dist/RecordingProcessorOptions.js +1 -1
  18. package/dist/RootBoxAdapter.d.ts +2 -0
  19. package/dist/RootBoxAdapter.d.ts.map +1 -1
  20. package/dist/RootBoxAdapter.js +8 -2
  21. package/dist/audio-unit/AudioUnitTracks.d.ts +2 -15
  22. package/dist/audio-unit/AudioUnitTracks.d.ts.map +1 -1
  23. package/dist/audio-unit/AudioUnitTracks.js +5 -59
  24. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts +35 -0
  25. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts.map +1 -0
  26. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.js +60 -0
  27. package/dist/index.d.ts +10 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +10 -0
  30. package/dist/modulation/Modulators.d.ts.map +1 -1
  31. package/dist/modulation/Modulators.js +11 -2
  32. package/dist/modulation/RandomModulatorBoxAdapter.d.ts +0 -2
  33. package/dist/modulation/RandomModulatorBoxAdapter.d.ts.map +1 -1
  34. package/dist/modulation/RandomModulatorBoxAdapter.js +4 -6
  35. package/dist/modulation/StepsModulatorBoxAdapter.d.ts +0 -2
  36. package/dist/modulation/StepsModulatorBoxAdapter.d.ts.map +1 -1
  37. package/dist/modulation/StepsModulatorBoxAdapter.js +2 -3
  38. package/dist/preset/PresetDecoder.d.ts.map +1 -1
  39. package/dist/preset/PresetDecoder.js +27 -31
  40. package/dist/preset/PresetEncoder.d.ts.map +1 -1
  41. package/dist/preset/PresetEncoder.js +8 -5
  42. package/dist/protocols.d.ts +4 -1
  43. package/dist/protocols.d.ts.map +1 -1
  44. package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
  45. package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
  46. package/dist/timeline/TrackBoxAdapter.js +21 -27
  47. package/dist/transfer/TransferAudioUnits.js +2 -2
  48. package/dist/transfer/TransferUtils.d.ts +5 -2
  49. package/dist/transfer/TransferUtils.d.ts.map +1 -1
  50. package/dist/transfer/TransferUtils.js +41 -5
  51. package/package.json +11 -11
@@ -9,68 +9,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
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
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _AudioUnitTracks_adapter, _AudioUnitTracks_regionNotifier, _AudioUnitTracks_collection, _AudioUnitTracks_subscriptions, _AudioUnitTracks_subscription;
13
- import { Notifier, Option, panic, UUID } from "@opendaw/lib-std";
14
- import { Pointers } from "@opendaw/studio-enums";
15
- import { TrackBox } from "@opendaw/studio-boxes";
16
- import { IndexedBoxAdapterCollection } from "../IndexedBoxAdapterCollection";
17
- import { TrackBoxAdapter } from "../timeline/TrackBoxAdapter";
18
- export class AudioUnitTracks {
12
+ var _AudioUnitTracks_adapter;
13
+ import { FieldParameterTracks } from "../timeline/ParameterTracks";
14
+ export class AudioUnitTracks extends FieldParameterTracks {
19
15
  constructor(adapter, boxAdapters) {
16
+ super(adapter.box.graph, adapter.box.tracks, boxAdapters);
20
17
  _AudioUnitTracks_adapter.set(this, void 0);
21
- _AudioUnitTracks_regionNotifier.set(this, new Notifier());
22
- _AudioUnitTracks_collection.set(this, void 0);
23
- _AudioUnitTracks_subscriptions.set(this, void 0);
24
- _AudioUnitTracks_subscription.set(this, void 0);
25
18
  __classPrivateFieldSet(this, _AudioUnitTracks_adapter, adapter, "f");
26
- __classPrivateFieldSet(this, _AudioUnitTracks_collection, IndexedBoxAdapterCollection.create(adapter.box.tracks, box => boxAdapters.adapterFor(box, TrackBoxAdapter), Pointers.TrackCollection), "f");
27
- __classPrivateFieldSet(this, _AudioUnitTracks_subscriptions, UUID.newSet(({ uuid }) => uuid), "f");
28
- __classPrivateFieldSet(this, _AudioUnitTracks_subscription, __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").catchupAndSubscribe({
29
- onAdd: (adapter) => __classPrivateFieldGet(this, _AudioUnitTracks_subscriptions, "f").add({
30
- uuid: adapter.uuid,
31
- subscription: adapter.regions.subscribeChanges(() => __classPrivateFieldGet(this, _AudioUnitTracks_regionNotifier, "f").notify())
32
- }),
33
- onRemove: ({ uuid }) => __classPrivateFieldGet(this, _AudioUnitTracks_subscriptions, "f").removeByKey(uuid).subscription.terminate(),
34
- onReorder: (_adapter) => { }
35
- }), "f");
36
- }
37
- create(type, target, index) {
38
- const graph = __classPrivateFieldGet(this, _AudioUnitTracks_adapter, "f").box.graph;
39
- const tracks = __classPrivateFieldGet(this, _AudioUnitTracks_adapter, "f").box.tracks;
40
- TrackBox.create(graph, UUID.generate(), box => {
41
- box.index.setValue(index ?? __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").getMinFreeIndex());
42
- box.type.setValue(type);
43
- box.tracks.refer(tracks);
44
- box.target.refer(target);
45
- });
46
- }
47
- controls(target) {
48
- return Option.wrap(__classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").adapters()
49
- .find(adapter => adapter.target.targetVertex.contains(target), false));
50
- }
51
- delete(adapter) {
52
- const adapters = __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").adapters();
53
- const deleteIndex = adapters.indexOf(adapter);
54
- if (deleteIndex === -1) {
55
- return panic(`Cannot delete ${adapter}. Does not exist.`);
56
- }
57
- for (let index = deleteIndex + 1; index < adapters.length; index++) {
58
- adapters[index].indexField.setValue(index - 1);
59
- }
60
- adapter.box.delete();
61
19
  }
62
20
  get audioUnitBox() { return __classPrivateFieldGet(this, _AudioUnitTracks_adapter, "f").box; }
63
- get collection() { return __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f"); }
64
- values() { return __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").adapters(); }
65
- catchupAndSubscribe(listener) {
66
- return __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").catchupAndSubscribe(listener);
67
- }
68
- subscribeAnyChange(observer) { return __classPrivateFieldGet(this, _AudioUnitTracks_regionNotifier, "f").subscribe(observer); }
69
- terminate() {
70
- __classPrivateFieldGet(this, _AudioUnitTracks_collection, "f").terminate();
71
- __classPrivateFieldGet(this, _AudioUnitTracks_subscription, "f").terminate();
72
- __classPrivateFieldGet(this, _AudioUnitTracks_subscriptions, "f").forEach(({ subscription }) => subscription.terminate());
73
- __classPrivateFieldGet(this, _AudioUnitTracks_subscriptions, "f").clear();
74
- }
75
21
  }
76
- _AudioUnitTracks_adapter = new WeakMap(), _AudioUnitTracks_regionNotifier = new WeakMap(), _AudioUnitTracks_collection = new WeakMap(), _AudioUnitTracks_subscriptions = new WeakMap(), _AudioUnitTracks_subscription = new WeakMap();
22
+ _AudioUnitTracks_adapter = new WeakMap();
@@ -0,0 +1,35 @@
1
+ import { UUID } from "@opendaw/lib-std";
2
+ import { Address, BooleanField, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
3
+ import { ConvolverDeviceBox } from "@opendaw/studio-boxes";
4
+ import { Pointers } from "@opendaw/studio-enums";
5
+ import { AudioEffectDeviceAdapter, DeviceHost } from "../../DeviceAdapter";
6
+ import { LabeledAudioOutput } from "../../LabeledAudioOutputsOwner";
7
+ import { BoxAdaptersContext } from "../../BoxAdaptersContext";
8
+ import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ export declare class ConvolverDeviceBoxAdapter implements AudioEffectDeviceAdapter {
10
+ #private;
11
+ static readonly MAX_IR_FRAMES = 770048;
12
+ readonly type = "audio-effect";
13
+ readonly accepts = "audio";
14
+ readonly manualUrl = "manuals/devices/audio/convolver";
15
+ readonly namedParameter: {
16
+ readonly wet: import("../..").AutomatableParameterFieldAdapter<number>;
17
+ readonly dry: import("../..").AutomatableParameterFieldAdapter<number>;
18
+ readonly preDelay: import("../..").AutomatableParameterFieldAdapter<number>;
19
+ };
20
+ constructor(context: BoxAdaptersContext, box: ConvolverDeviceBox);
21
+ get box(): ConvolverDeviceBox;
22
+ get uuid(): UUID.Bytes;
23
+ get address(): Address;
24
+ get indexField(): Int32Field;
25
+ get labelField(): StringField;
26
+ get enabledField(): BooleanField;
27
+ get minimizedField(): BooleanField;
28
+ get host(): PointerField<Pointers.AudioEffectHost>;
29
+ get fileField(): PointerField<Pointers.AudioFile>;
30
+ deviceHost(): DeviceHost;
31
+ audioUnitBoxAdapter(): AudioUnitBoxAdapter;
32
+ labeledAudioOutputs(): Iterable<LabeledAudioOutput>;
33
+ terminate(): void;
34
+ }
35
+ //# sourceMappingURL=ConvolverDeviceBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConvolverDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/audio-effects/ConvolverDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAU,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAG3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,yBAA0B,YAAW,wBAAwB;;IAEtE,MAAM,CAAC,QAAQ,CAAC,aAAa,UAAS;IAEtC,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,OAAO,WAAU;IAC1B,QAAQ,CAAC,SAAS,qCAA6B;IAM/C,QAAQ,CAAC,cAAc;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAOhE,IAAI,GAAG,IAAI,kBAAkB,CAAmB;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAwB;IAC1E,IAAI,SAAS,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAwB;IAEzE,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAEzC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAIpD,SAAS,IAAI,IAAI;CAoBpB"}
@@ -0,0 +1,60 @@
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 _ConvolverDeviceBoxAdapter_instances, _ConvolverDeviceBoxAdapter_context, _ConvolverDeviceBoxAdapter_box, _ConvolverDeviceBoxAdapter_parametric, _ConvolverDeviceBoxAdapter_wrapParameters;
13
+ import { Option, StringMapping, ValueMapping } from "@opendaw/lib-std";
14
+ import { Devices } from "../../DeviceAdapter";
15
+ import { DeviceManualUrls } from "../../DeviceManualUrls";
16
+ import { ParameterAdapterSet } from "../../ParameterAdapterSet";
17
+ export class ConvolverDeviceBoxAdapter {
18
+ constructor(context, box) {
19
+ _ConvolverDeviceBoxAdapter_instances.add(this);
20
+ this.type = "audio-effect";
21
+ this.accepts = "audio";
22
+ this.manualUrl = DeviceManualUrls.Convolver;
23
+ _ConvolverDeviceBoxAdapter_context.set(this, void 0);
24
+ _ConvolverDeviceBoxAdapter_box.set(this, void 0);
25
+ _ConvolverDeviceBoxAdapter_parametric.set(this, void 0);
26
+ __classPrivateFieldSet(this, _ConvolverDeviceBoxAdapter_context, context, "f");
27
+ __classPrivateFieldSet(this, _ConvolverDeviceBoxAdapter_box, box, "f");
28
+ __classPrivateFieldSet(this, _ConvolverDeviceBoxAdapter_parametric, new ParameterAdapterSet(__classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_context, "f")), "f");
29
+ this.namedParameter = __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_instances, "m", _ConvolverDeviceBoxAdapter_wrapParameters).call(this, box);
30
+ }
31
+ get box() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f"); }
32
+ get uuid() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").address.uuid; }
33
+ get address() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").address; }
34
+ get indexField() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").index; }
35
+ get labelField() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").label; }
36
+ get enabledField() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").enabled; }
37
+ get minimizedField() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").minimized; }
38
+ get host() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").host; }
39
+ get fileField() { return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").file; }
40
+ deviceHost() {
41
+ return __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_context, "f").boxAdapters
42
+ .adapterFor(__classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
43
+ }
44
+ audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
45
+ *labeledAudioOutputs() {
46
+ yield { address: this.address, label: this.labelField.getValue(), children: () => Option.None };
47
+ }
48
+ terminate() {
49
+ __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_parametric, "f").terminate();
50
+ }
51
+ }
52
+ _ConvolverDeviceBoxAdapter_context = new WeakMap(), _ConvolverDeviceBoxAdapter_box = new WeakMap(), _ConvolverDeviceBoxAdapter_parametric = new WeakMap(), _ConvolverDeviceBoxAdapter_instances = new WeakSet(), _ConvolverDeviceBoxAdapter_wrapParameters = function _ConvolverDeviceBoxAdapter_wrapParameters(box) {
53
+ return {
54
+ wet: __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_parametric, "f").createParameter(box.wet, ValueMapping.DefaultDecibel, StringMapping.decible, "Wet"),
55
+ dry: __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_parametric, "f").createParameter(box.dry, ValueMapping.DefaultDecibel, StringMapping.decible, "Dry"),
56
+ preDelay: __classPrivateFieldGet(this, _ConvolverDeviceBoxAdapter_parametric, "f").createParameter(box.preDelay, ValueMapping.powerByCenter(0.050, 0.0, 0.500), StringMapping.numeric({ unit: "s", fractionDigits: 1, unitPrefix: true }), "Pre-Delay")
57
+ };
58
+ };
59
+ // WASM CONTRACT: mirrors `MAX_IR_FRAMES` (crates/dsp/src/convolution.rs), engine-rate frames after resampling.
60
+ ConvolverDeviceBoxAdapter.MAX_IR_FRAMES = 770048;
package/dist/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export * from "./NoteSignal";
24
24
  export * from "./NoteStreamReceiver";
25
25
  export * from "./ParameterAdapterSet";
26
26
  export * from "./ParameterFieldAdapters";
27
+ export * from "./ParameterOwner";
27
28
  export * from "./Parsing";
28
29
  export * from "./PeakMeterProcessorOptions";
29
30
  export * from "./PianoModeAdapter";
@@ -56,6 +57,7 @@ export * from "./devices/audio-effects/AudioEffectComposite/AudioEffectComposite
56
57
  export * from "./devices/audio-effects/AudioEffectCompositeBoxAdapter";
57
58
  export * from "./devices/audio-effects/AutotuneDeviceBoxAdapter";
58
59
  export * from "./devices/audio-effects/CompressorDeviceBoxAdapter";
60
+ export * from "./devices/audio-effects/ConvolverDeviceBoxAdapter";
59
61
  export * from "./devices/audio-effects/CrusherDeviceBoxAdapter";
60
62
  export * from "./devices/audio-effects/DattorroReverbDeviceBoxAdapter";
61
63
  export * from "./devices/audio-effects/DelayDeviceBoxAdapter";
@@ -126,6 +128,13 @@ export * from "./modular/modules/delay";
126
128
  export * from "./modular/modules/gain";
127
129
  export * from "./modular/modules/multiplier";
128
130
  export * from "./modular/user-interface";
131
+ export * from "./modulation/LfoModulatorBoxAdapter";
132
+ export * from "./modulation/MacroModulatorBoxAdapter";
133
+ export * from "./modulation/ModulationBoxAdapter";
134
+ export * from "./modulation/ModulatorBoxAdapter";
135
+ export * from "./modulation/Modulators";
136
+ export * from "./modulation/RandomModulatorBoxAdapter";
137
+ export * from "./modulation/StepsModulatorBoxAdapter";
129
138
  export * from "./nam/NeuralAmpModelBoxAdapter";
130
139
  export * from "./offline-renderer";
131
140
  export * from "./preset/PresetDecoder";
@@ -158,6 +167,7 @@ export * from "./timeline/AudioContentBoxAdapter";
158
167
  export * from "./timeline/ClipBoxAdapter";
159
168
  export * from "./timeline/MarkerBoxAdapter";
160
169
  export * from "./timeline/MarkerTrackAdapter";
170
+ export * from "./timeline/ParameterTracks";
161
171
  export * from "./timeline/RegionBoxAdapter";
162
172
  export * from "./timeline/RegionEditing";
163
173
  export * from "./timeline/SignatureEventBoxAdapter";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ export * from "./NoteSignal";
26
26
  export * from "./NoteStreamReceiver";
27
27
  export * from "./ParameterAdapterSet";
28
28
  export * from "./ParameterFieldAdapters";
29
+ export * from "./ParameterOwner";
29
30
  export * from "./Parsing";
30
31
  export * from "./PeakMeterProcessorOptions";
31
32
  export * from "./PianoModeAdapter";
@@ -58,6 +59,7 @@ export * from "./devices/audio-effects/AudioEffectComposite/AudioEffectComposite
58
59
  export * from "./devices/audio-effects/AudioEffectCompositeBoxAdapter";
59
60
  export * from "./devices/audio-effects/AutotuneDeviceBoxAdapter";
60
61
  export * from "./devices/audio-effects/CompressorDeviceBoxAdapter";
62
+ export * from "./devices/audio-effects/ConvolverDeviceBoxAdapter";
61
63
  export * from "./devices/audio-effects/CrusherDeviceBoxAdapter";
62
64
  export * from "./devices/audio-effects/DattorroReverbDeviceBoxAdapter";
63
65
  export * from "./devices/audio-effects/DelayDeviceBoxAdapter";
@@ -128,6 +130,13 @@ export * from "./modular/modules/delay";
128
130
  export * from "./modular/modules/gain";
129
131
  export * from "./modular/modules/multiplier";
130
132
  export * from "./modular/user-interface";
133
+ export * from "./modulation/LfoModulatorBoxAdapter";
134
+ export * from "./modulation/MacroModulatorBoxAdapter";
135
+ export * from "./modulation/ModulationBoxAdapter";
136
+ export * from "./modulation/ModulatorBoxAdapter";
137
+ export * from "./modulation/Modulators";
138
+ export * from "./modulation/RandomModulatorBoxAdapter";
139
+ export * from "./modulation/StepsModulatorBoxAdapter";
131
140
  export * from "./nam/NeuralAmpModelBoxAdapter";
132
141
  export * from "./offline-renderer";
133
142
  export * from "./preset/PresetDecoder";
@@ -160,6 +169,7 @@ export * from "./timeline/AudioContentBoxAdapter";
160
169
  export * from "./timeline/ClipBoxAdapter";
161
170
  export * from "./timeline/MarkerBoxAdapter";
162
171
  export * from "./timeline/MarkerTrackAdapter";
172
+ export * from "./timeline/ParameterTracks";
163
173
  export * from "./timeline/RegionBoxAdapter";
164
174
  export * from "./timeline/RegionEditing";
165
175
  export * from "./timeline/SignatureEventBoxAdapter";
@@ -1 +1 @@
1
- {"version":3,"file":"Modulators.d.ts","sourceRoot":"","sources":["../../src/modulation/Modulators.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAElB,iBAAiB,EACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAM,KAAK,EAAe,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAiB,IAAI,EAAkB,SAAS,EAAO,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAGlD,yBAAiB,UAAU,CAAC;IACjB,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,eACkC,CAAA;IAEnG,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,iBACoC,CAAA;IAEvG,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,iBACoC,CAAA;IAEvG,MAAM,YAAY,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,kBACqC,CAAA;IAEhH,KAAY,IAAI,GAAG;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;KAC1D,CAAA;IAEM,MAAM,KAAK,EAAE,aAAa,CAAC,IAAI,CAKrC,CAAA;IAGM,MAAM,OAAO,GAAI,SAAS,kBAAkB,EAAE,WAAW,YAAY,EAAE,MAAM,IAAI,KAAG,YAgB1F,CAAA;IAGM,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,WAAW,YAAY,KAAG,YACxC,CAAA;IAKlC,MAAM,YAAY,GAAI,SAAS,kBAAkB,EAC3B,YAAY,aAAa,CAAC,YAAY,CAAC,KAAG,aAAa,CAAC,YAAY,CAehG,CAAA;IAGM,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,YAAY,aAAa,CAAC,YAAY,CAAC,KAAG,IAMhG,CAAA;IAIM,MAAM,IAAI,GAAI,SAAS,kBAAkB,EAC3B,YAAY,aAAa,CAAC,YAAY,CAAC,EACvC,QAAQ,YAAY,KAAG,IAW3C,CAAA;IAqBM,MAAM,MAAM,GAAI,SAAS,kBAAkB,EAC3B,WAAW,YAAY,EACvB,QAAQ,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAClC,QAAO,SAAgB,KAAG,aAM3C,CAAA;CACT"}
1
+ {"version":3,"file":"Modulators.d.ts","sourceRoot":"","sources":["../../src/modulation/Modulators.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAElB,iBAAiB,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAM,KAAK,EAAe,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAiB,IAAI,EAAgC,SAAS,EAAO,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAGlD,yBAAiB,UAAU,CAAC;IACjB,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,eACkC,CAAA;IAEnG,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,iBACoC,CAAA;IAEvG,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,iBACoC,CAAA;IAEvG,MAAM,YAAY,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,kBACqC,CAAA;IAEhH,KAAY,IAAI,GAAG;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;KAC1D,CAAA;IAEM,MAAM,KAAK,EAAE,aAAa,CAAC,IAAI,CAKrC,CAAA;IAGM,MAAM,OAAO,GAAI,SAAS,kBAAkB,EAAE,WAAW,YAAY,EAAE,MAAM,IAAI,KAAG,YAyB1F,CAAA;IAGM,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,WAAW,YAAY,KAAG,YACxC,CAAA;IAKlC,MAAM,YAAY,GAAI,SAAS,kBAAkB,EAC3B,YAAY,aAAa,CAAC,YAAY,CAAC,KAAG,aAAa,CAAC,YAAY,CAehG,CAAA;IAGM,MAAM,SAAS,GAAI,SAAS,kBAAkB,EAAE,YAAY,aAAa,CAAC,YAAY,CAAC,KAAG,IAMhG,CAAA;IAIM,MAAM,IAAI,GAAI,SAAS,kBAAkB,EAC3B,YAAY,aAAa,CAAC,YAAY,CAAC,EACvC,QAAQ,YAAY,KAAG,IAW3C,CAAA;IAqBM,MAAM,MAAM,GAAI,SAAS,kBAAkB,EAC3B,WAAW,YAAY,EACvB,QAAQ,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAClC,QAAO,SAAgB,KAAG,aAM3C,CAAA;CACT"}
@@ -1,5 +1,5 @@
1
- import { LfoModulatorBox, MacroModulatorBox, ModulationBox, RandomModulatorBox, StepsModulatorBox } from "@opendaw/studio-boxes";
2
- import { ByteArrayInput, panic, Strings, UUID } from "@opendaw/lib-std";
1
+ import { LfoModulatorBox, MacroModulatorBox, ModulationBox, RandomModulatorBox, StepsModulatorBox, TrackBox } from "@opendaw/studio-boxes";
2
+ import { ByteArrayInput, isInstanceOf, panic, Strings, UUID } from "@opendaw/lib-std";
3
3
  /// Every caller is inside an `editing.modify`, so nothing here opens a transaction.
4
4
  export var Modulators;
5
5
  (function (Modulators) {
@@ -18,6 +18,15 @@ export var Modulators;
18
18
  const replacement = kind.create(context);
19
19
  modulator.assignments.pointerHub.incoming().slice()
20
20
  .forEach((pointer) => pointer.refer(replacement.assignments));
21
+ // An assignment's depth lane is parented to its SOURCE, so it would die with the old box while the
22
+ // assignment it belongs to survives. The old kind's own parameter lanes have no meaning in the new
23
+ // kind and are left to the cascade.
24
+ modulator.tracks.pointerHub.incoming().slice()
25
+ .map((pointer) => pointer.box)
26
+ .filter((box) => isInstanceOf(box, TrackBox))
27
+ .filter((track) => track.target.targetVertex
28
+ .mapOr(vertex => isInstanceOf(vertex.box, ModulationBox), false))
29
+ .forEach((track) => track.tracks.refer(replacement.tracks));
21
30
  const label = modulator.label.getValue();
22
31
  const index = modulator.index.getValue();
23
32
  const enabled = modulator.enabled.getValue();
@@ -8,12 +8,10 @@ export declare class RandomModulatorBoxAdapter extends ModulatorBoxAdapter<Rando
8
8
  static readonly MaxLevels = 32;
9
9
  static readonly MaxSeed = 999999;
10
10
  readonly namedParameter: {
11
- readonly loop: import("..").AutomatableParameterFieldAdapter<number>;
12
11
  readonly rateSync: import("..").AutomatableParameterFieldAdapter<number>;
13
12
  readonly rateAbsolute: import("..").AutomatableParameterFieldAdapter<number>;
14
13
  readonly phase: import("..").AutomatableParameterFieldAdapter<number>;
15
14
  readonly smooth: import("..").AutomatableParameterFieldAdapter<number>;
16
- readonly levels: import("..").AutomatableParameterFieldAdapter<number>;
17
15
  };
18
16
  constructor(context: BoxAdaptersContext, box: RandomModulatorBox);
19
17
  get loop(): int;
@@ -1 +1 @@
1
- {"version":3,"file":"RandomModulatorBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/modulation/RandomModulatorBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,GAAG,EAAiB,SAAS,EAAe,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAGzD,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,kBAAkB,CAAC;;IAClF,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAK;IAC5B,MAAM,CAAC,QAAQ,CAAC,SAAS,MAAK;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,UAAS;IAEhC,QAAQ,CAAC,cAAc;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAMhE,IAAI,IAAI,IAAI,GAAG,CAAkC;IAEjD,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAS3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAUhC,MAAM,IAAI,IAAI;CAmCjB"}
1
+ {"version":3,"file":"RandomModulatorBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/modulation/RandomModulatorBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,GAAG,EAAiB,SAAS,EAAe,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAGzD,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,kBAAkB,CAAC;;IAClF,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAK;IAC5B,MAAM,CAAC,QAAQ,CAAC,SAAS,MAAK;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,UAAS;IAEhC,QAAQ,CAAC,cAAc;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAMhE,IAAI,IAAI,IAAI,GAAG,CAAkC;IAEjD,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS;IAS3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAUhC,MAAM,IAAI,IAAI;CA6BjB"}
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  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");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _RandomModulatorBoxAdapter_instances, _a, _RandomModulatorBoxAdapter_localIndex, _RandomModulatorBoxAdapter_quantize, _RandomModulatorBoxAdapter_wrapParameters;
6
+ var _RandomModulatorBoxAdapter_instances, _RandomModulatorBoxAdapter_localIndex, _RandomModulatorBoxAdapter_quantize, _RandomModulatorBoxAdapter_wrapParameters;
7
7
  import { StringMapping, ValueMapping } from "@opendaw/lib-std";
8
8
  import { LfoModulatorBoxAdapter } from "./LfoModulatorBoxAdapter";
9
9
  import { ModulatorBoxAdapter } from "./ModulatorBoxAdapter";
@@ -35,9 +35,9 @@ export class RandomModulatorBoxAdapter extends ModulatorBoxAdapter {
35
35
  const ramp = Math.min(1.0, (step - index) / smooth);
36
36
  return previous + (current - previous) * ramp * ramp * (3.0 - 2.0 * ramp);
37
37
  }
38
- reseed() { this.box.seed.setValue(Math.floor(Math.random() * _a.MaxSeed)); }
38
+ reseed() { this.box.seed.setValue(Math.floor(Math.random() * RandomModulatorBoxAdapter.MaxSeed)); }
39
39
  }
40
- _a = RandomModulatorBoxAdapter, _RandomModulatorBoxAdapter_instances = new WeakSet(), _RandomModulatorBoxAdapter_localIndex = function _RandomModulatorBoxAdapter_localIndex(index) {
40
+ _RandomModulatorBoxAdapter_instances = new WeakSet(), _RandomModulatorBoxAdapter_localIndex = function _RandomModulatorBoxAdapter_localIndex(index) {
41
41
  const length = this.loop;
42
42
  return length > 0 ? ((index % length) + length) % length : index | 0;
43
43
  }, _RandomModulatorBoxAdapter_quantize = function _RandomModulatorBoxAdapter_quantize(value) {
@@ -49,12 +49,10 @@ _a = RandomModulatorBoxAdapter, _RandomModulatorBoxAdapter_instances = new WeakS
49
49
  return Math.min(steps, Math.max(0, Math.floor((value + 1.0) * 0.5 * steps + 0.5))) / steps * 2.0 - 1.0;
50
50
  }, _RandomModulatorBoxAdapter_wrapParameters = function _RandomModulatorBoxAdapter_wrapParameters(box) {
51
51
  return {
52
- loop: this.parametric.createParameter(box.loop, ValueMapping.linearInteger(0, _a.MaxLoop), StringMapping.numeric({ unit: "" }), "Loop"),
53
52
  rateSync: this.parametric.createParameter(box.rateSync, ValueMapping.linearInteger(0, LfoModulatorBoxAdapter.RateStrings.length - 1), StringMapping.indices("", LfoModulatorBoxAdapter.RateStrings), "Sync"),
54
53
  rateAbsolute: this.parametric.createParameter(box.rateAbsolute, ValueMapping.powerByCenter(LfoModulatorBoxAdapter.CenterAbsoluteRate, 0.0, LfoModulatorBoxAdapter.MaxAbsoluteRate), StringMapping.numeric({ unit: "Hz", fractionDigits: 2 }), "Free"),
55
54
  phase: this.parametric.createParameter(box.phase, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Phase"),
56
- smooth: this.parametric.createParameter(box.smooth, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Smooth"),
57
- levels: this.parametric.createParameter(box.levels, ValueMapping.linearInteger(0, _a.MaxLevels), StringMapping.numeric({ unit: "" }), "Levels")
55
+ smooth: this.parametric.createParameter(box.smooth, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Smooth")
58
56
  };
59
57
  };
60
58
  RandomModulatorBoxAdapter.MaxLoop = 64;
@@ -20,12 +20,10 @@ export declare class StepsModulatorBoxAdapter extends ModulatorBoxAdapter<StepsM
20
20
  static readonly MaxSteps = 64;
21
21
  static readonly DirectionStrings: ReadonlyArray<string>;
22
22
  readonly namedParameter: {
23
- readonly count: import("..").AutomatableParameterFieldAdapter<number>;
24
23
  readonly rateSync: import("..").AutomatableParameterFieldAdapter<number>;
25
24
  readonly rateAbsolute: import("..").AutomatableParameterFieldAdapter<number>;
26
25
  readonly phase: import("..").AutomatableParameterFieldAdapter<number>;
27
26
  readonly smooth: import("..").AutomatableParameterFieldAdapter<number>;
28
- readonly direction: import("..").AutomatableParameterFieldAdapter<number>;
29
27
  };
30
28
  constructor(context: BoxAdaptersContext, box: StepsModulatorBox);
31
29
  get count(): int;
@@ -1 +1 @@
1
- {"version":3,"file":"StepsModulatorBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/modulation/StepsModulatorBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,GAAG,EAAiB,SAAS,EAAe,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAGzD,oBAAY,cAAc;IAAE,OAAO,IAAA;IAAE,QAAQ,IAAA;IAAE,QAAQ,IAAA;IAAE,SAAS,IAAA;IAAE,MAAM,IAAA;CAAC;AAE3E,MAAM,MAAM,SAAS,GAAG;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAC,CAAA;AAEhE,qBAAa,wBAAyB,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;;IAChF,MAAM,CAAC,QAAQ,CAAC,QAAQ,MAAK;IAC7B,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAA8D;IAErH,QAAQ,CAAC,cAAc;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAM/D,IAAI,KAAK,IAAI,GAAG,CAAmC;IACnD,IAAI,KAAK,IAAI,aAAa,CAAC,YAAY,CAAC,CAAiC;IAGzE,IAAI,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,CAcrC;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS;IA6BtD,IAAI,OAAO,IAAI,SAAS,CAAiD;IAEzE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAElC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAElC,KAAK,IAAI,IAAI;IAKb,SAAS,IAAI,IAAI;IAEjB,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;CAiC5B"}
1
+ {"version":3,"file":"StepsModulatorBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/modulation/StepsModulatorBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,GAAG,EAAiB,SAAS,EAAe,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAGzD,oBAAY,cAAc;IAAE,OAAO,IAAA;IAAE,QAAQ,IAAA;IAAE,QAAQ,IAAA;IAAE,SAAS,IAAA;IAAE,MAAM,IAAA;CAAC;AAE3E,MAAM,MAAM,SAAS,GAAG;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAC,CAAA;AAEhE,qBAAa,wBAAyB,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;;IAChF,MAAM,CAAC,QAAQ,CAAC,QAAQ,MAAK;IAC7B,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAA8D;IAErH,QAAQ,CAAC,cAAc;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAM/D,IAAI,KAAK,IAAI,GAAG,CAAmC;IACnD,IAAI,KAAK,IAAI,aAAa,CAAC,YAAY,CAAC,CAAiC;IAGzE,IAAI,MAAM,IAAI,aAAa,CAAC,SAAS,CAAC,CAerC;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS;IA6BtD,IAAI,OAAO,IAAI,SAAS,CAAiD;IAEzE,OAAO,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAElC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAElC,KAAK,IAAI,IAAI;IAKb,SAAS,IAAI,IAAI;IAEjB,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;CA2B5B"}
@@ -37,6 +37,7 @@ export class StepsModulatorBoxAdapter extends ModulatorBoxAdapter {
37
37
  return count < 3
38
38
  ? [{ ascending: true, from: 0, to: count }]
39
39
  : [{ ascending: true, from: 0, to: count - 1 }, { ascending: false, from: 1, to: count }];
40
+ // Random reorders per cycle, so there is no one pass to draw: the display shows a forward one.
40
41
  default:
41
42
  return [{ ascending: true, from: 0, to: count }];
42
43
  }
@@ -88,12 +89,10 @@ _a = StepsModulatorBoxAdapter, _StepsModulatorBoxAdapter_instances = new WeakSet
88
89
  return this.steps.slice(0, Math.max(1, Math.min(this.count, _a.MaxSteps)));
89
90
  }, _StepsModulatorBoxAdapter_wrapParameters = function _StepsModulatorBoxAdapter_wrapParameters(box) {
90
91
  return {
91
- count: this.parametric.createParameter(box.count, ValueMapping.linearInteger(1, _a.MaxSteps), StringMapping.numeric({ unit: "" }), "Steps"),
92
92
  rateSync: this.parametric.createParameter(box.rateSync, ValueMapping.linearInteger(0, LfoModulatorBoxAdapter.RateStrings.length - 1), StringMapping.indices("", LfoModulatorBoxAdapter.RateStrings), "Sync"),
93
93
  rateAbsolute: this.parametric.createParameter(box.rateAbsolute, ValueMapping.powerByCenter(LfoModulatorBoxAdapter.CenterAbsoluteRate, 0.0, LfoModulatorBoxAdapter.MaxAbsoluteRate), StringMapping.numeric({ unit: "Hz", fractionDigits: 2 }), "Free"),
94
94
  phase: this.parametric.createParameter(box.phase, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Phase"),
95
- smooth: this.parametric.createParameter(box.smooth, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Smooth"),
96
- direction: this.parametric.createParameter(box.direction, ValueMapping.linearInteger(0, _a.DirectionStrings.length - 1), StringMapping.indices("", _a.DirectionStrings), "Mode")
95
+ smooth: this.parametric.createParameter(box.smooth, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Smooth")
97
96
  };
98
97
  };
99
98
  StepsModulatorBoxAdapter.MaxSteps = 64;
@@ -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;AACzB,OAAO,EAAyB,KAAK,EAA2B,MAAM,kBAAkB,CAAA;AACxF,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAA;AAElD,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,aAAa,KAAK,CAAC,iBAAiB,CAAC,EACrC,aAAa,GAAG,EAChB,MAAM,YAAY,CAAC,SAAS,KAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,CAmGtB,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;AACzB,OAAO,EAAyB,KAAK,EAA2B,MAAM,kBAAkB,CAAA;AACxF,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAI3C,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,CA6GvB,CAAA;IAEM,MAAM,iBAAiB,GAC1B,OAAO,eAAe,EACtB,aAAa,KAAK,CAAC,iBAAiB,CAAC,EACrC,aAAa,GAAG,EAChB,MAAM,YAAY,CAAC,SAAS,KAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,CAqGtB,CAAA;CACJ"}
@@ -6,6 +6,7 @@ import { ProjectSkeleton } from "../project/ProjectSkeleton";
6
6
  import { TransferUtils } from "../transfer";
7
7
  import { PresetHeader } from "./PresetHeader";
8
8
  import { TrackType } from "../timeline/TrackType";
9
+ import { isModulatorBox } from "../modulation/ModulatorBoxAdapter";
9
10
  export var PresetDecoder;
10
11
  (function (PresetDecoder) {
11
12
  PresetDecoder.decode = (bytes, target) => {
@@ -38,11 +39,11 @@ export var PresetDecoder;
38
39
  .filter(box => isInstanceOf(box, AudioUnitBox))
39
40
  .filter(box => box.type.getValue() !== AudioUnitType.Output);
40
41
  const excludeBox = (box) => TransferUtils.shouldExclude(box);
41
- const dependencies = Array.from(sourceBoxGraph.dependenciesOf(sourceAudioUnitBoxes, {
42
+ const dependencies = TransferUtils.withModulators(Array.from(sourceBoxGraph.dependenciesOf(sourceAudioUnitBoxes, {
42
43
  alwaysFollowMandatory: true,
43
44
  stopAtResources: true,
44
45
  excludeBox
45
- }).boxes);
46
+ }).boxes));
46
47
  const { mandatoryBoxes: { rootBox, primaryAudioBusBox } } = target;
47
48
  const uuidMap = TransferUtils.generateMap(sourceAudioUnitBoxes, dependencies, rootBox.audioUnits.address.uuid, primaryAudioBusBox.address.uuid);
48
49
  TransferUtils.copyBoxes(uuidMap, target.boxGraph, sourceAudioUnitBoxes, dependencies);
@@ -171,46 +172,39 @@ export var PresetDecoder;
171
172
  return false;
172
173
  };
173
174
  const uuidMap = UUID.newSet(({ source }) => source);
174
- const dependencies = Array.from(sourceBoxGraph.dependenciesOf(sourceAudioUnitBox, {
175
+ const dependencies = TransferUtils.withModulators(Array.from(sourceBoxGraph.dependenciesOf(sourceAudioUnitBox, {
175
176
  excludeBox,
176
177
  alwaysFollowMandatory: true,
177
178
  stopAtResources: true
178
- }).boxes);
179
+ }).boxes));
180
+ const keepsIdentity = (box) => box instanceof AudioFileBox || box instanceof SoundfontFileBox || isModulatorBox(box);
179
181
  uuidMap.addMany([
180
182
  {
181
183
  source: sourceAudioUnitBox.address.uuid,
182
184
  target: targetAudioUnitBox.address.uuid
183
185
  },
184
186
  ...dependencies
185
- .map(({ address: { uuid }, name }) => ({
186
- source: uuid,
187
- target: name === AudioFileBox.ClassName || name === SoundfontFileBox.ClassName
188
- ? uuid
189
- : UUID.generate()
190
- }))
187
+ .map(box => ({ source: box.address.uuid, target: keepsIdentity(box) ? box.address.uuid : UUID.generate() }))
191
188
  ]);
192
- // First, identify which file boxes already exist and should be skipped
193
- const existingFileBoxUUIDs = UUID.newSet(uuid => uuid);
189
+ // Identity-keeping boxes already in the target graph are shared, not copied
190
+ const existingKeptUuids = UUID.newSet(uuid => uuid);
194
191
  dependencies.forEach((source) => {
195
- if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
196
- if (targetBoxGraph.findBox(source.address.uuid).nonEmpty()) {
197
- existingFileBoxUUIDs.add(source.address.uuid);
198
- }
192
+ if (keepsIdentity(source) && targetBoxGraph.findBox(source.address.uuid).nonEmpty()) {
193
+ existingKeptUuids.add(source.address.uuid);
199
194
  }
200
195
  });
201
196
  PointerField.decodeWith({
202
- map: (_pointer, newAddress) => newAddress.flatMap(address => uuidMap.opt(address.uuid).match({
197
+ map: (pointer, newAddress) => newAddress.flatMap(address => uuidMap.opt(address.uuid).match({
203
198
  some: ({ target }) => Option.wrap(address.moveTo(target)),
204
- none: () => targetBoxGraph.findBox(address.uuid).nonEmpty() ? Option.wrap(address) : Option.None
199
+ none: () => targetBoxGraph.findBox(address.uuid).nonEmpty()
200
+ ? Option.wrap(address)
201
+ : TransferUtils.mapModulatorCollection(pointer, targetBoxGraph)
205
202
  }))
206
203
  }, () => {
207
204
  dependencies
208
205
  .forEach((source) => {
209
- if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
210
- // Those boxes keep their UUID. So if they are already in the graph, skip them.
211
- if (existingFileBoxUUIDs.opt(source.address.uuid).nonEmpty()) {
212
- return;
213
- }
206
+ if (existingKeptUuids.hasKey(source.address.uuid)) {
207
+ return;
214
208
  }
215
209
  const input = new ByteArrayInput(source.toArrayBuffer());
216
210
  const key = source.name;
@@ -269,15 +263,15 @@ export var PresetDecoder;
269
263
  || TransferUtils.excludeTimelinePredicate(box)
270
264
  || box instanceof AudioUnitBox;
271
265
  const effectSet = new Set(effects);
272
- const dependencies = Array.from(sourceGraph.dependenciesOf(effects, {
266
+ const dependencies = TransferUtils.withModulators(Array.from(sourceGraph.dependenciesOf(effects, {
273
267
  alwaysFollowMandatory: true,
274
268
  stopAtResources: true,
275
269
  excludeBox
276
- }).boxes).filter(box => !effectSet.has(box));
277
- const existingPreservedUuids = UUID.newSet(uuid => uuid);
270
+ }).boxes).filter(box => !effectSet.has(box)));
271
+ const existingKeptUuids = UUID.newSet(uuid => uuid);
278
272
  dependencies.forEach(source => {
279
- if (source.resource === "preserved" && targetGraph.findBox(source.address.uuid).nonEmpty()) {
280
- existingPreservedUuids.add(source.address.uuid);
273
+ if (TransferUtils.keepsIdentity(source) && targetGraph.findBox(source.address.uuid).nonEmpty()) {
274
+ existingKeptUuids.add(source.address.uuid);
281
275
  }
282
276
  });
283
277
  const uuidMap = UUID.newSet(({ source }) => source);
@@ -285,7 +279,7 @@ export var PresetDecoder;
285
279
  ...effects.map(box => ({ source: box.address.uuid, target: UUID.generate() })),
286
280
  ...dependencies.map(box => ({
287
281
  source: box.address.uuid,
288
- target: box.resource === "preserved" ? box.address.uuid : UUID.generate()
282
+ target: TransferUtils.keepsIdentity(box) ? box.address.uuid : UUID.generate()
289
283
  }))
290
284
  ]);
291
285
  PointerField.decodeWith({
@@ -302,7 +296,9 @@ export var PresetDecoder;
302
296
  if (pointer.pointerType === hostPointerType) {
303
297
  return Option.wrap(targetFieldAddress);
304
298
  }
305
- return address.flatMap(addr => targetGraph.findBox(addr.uuid).nonEmpty() ? Option.wrap(addr) : Option.None);
299
+ return address.flatMap(addr => targetGraph.findBox(addr.uuid).nonEmpty()
300
+ ? Option.wrap(addr)
301
+ : TransferUtils.mapModulatorCollection(pointer, targetGraph));
306
302
  }
307
303
  }, () => {
308
304
  effects.forEach((source, i) => {
@@ -316,7 +312,7 @@ export var PresetDecoder;
316
312
  });
317
313
  });
318
314
  dependencies.forEach(source => {
319
- if (existingPreservedUuids.hasKey(source.address.uuid)) {
315
+ if (existingKeptUuids.hasKey(source.address.uuid)) {
320
316
  return;
321
317
  }
322
318
  const input = new ByteArrayInput(source.toArrayBuffer());
@@ -1 +1 @@
1
- {"version":3,"file":"PresetEncoder.d.ts","sourceRoot":"","sources":["../../src/preset/PresetEncoder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAA2B,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAC,YAAY,EAA4D,MAAM,uBAAuB,CAAA;AAI7G,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,cAAc,YAAY,EAC1B,UAAS;QACL,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;QACtC,eAAe,CAAC,EAAE,OAAO,CAAA;KACvB,KAAG,eA+B/B,CAAA;IAEM,MAAM,aAAa,GACtB,SAAS,aAAa,CAAC,GAAG,CAAC,EAC3B,MAAM,YAAY,CAAC,SAAS,KAC7B,eAgFF,CAAA;CACJ"}
1
+ {"version":3,"file":"PresetEncoder.d.ts","sourceRoot":"","sources":["../../src/preset/PresetEncoder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAA2B,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAC,YAAY,EAA4D,MAAM,uBAAuB,CAAA;AAI7G,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,yBAAiB,aAAa,CAAC;IACpB,MAAM,MAAM,GAAI,cAAc,YAAY,EAC1B,UAAS;QACL,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;QACtC,eAAe,CAAC,EAAE,OAAO,CAAA;KACvB,KAAG,eA+B/B,CAAA;IAEM,MAAM,aAAa,GACtB,SAAS,aAAa,CAAC,GAAG,CAAC,EAC3B,MAAM,YAAY,CAAC,SAAS,KAC7B,eAmFF,CAAA;CACJ"}
@@ -20,11 +20,11 @@ export var PresetEncoder;
20
20
  || (!includeTimeline && TransferUtils.excludeTimelinePredicate(box))
21
21
  || excludeEffect(box);
22
22
  boxGraph.beginTransaction();
23
- const dependencies = Array.from(audioUnitBox.graph.dependenciesOf(audioUnitBoxes, {
23
+ const dependencies = TransferUtils.withModulators(Array.from(audioUnitBox.graph.dependenciesOf(audioUnitBoxes, {
24
24
  alwaysFollowMandatory: true,
25
25
  stopAtResources: true,
26
26
  excludeBox
27
- }).boxes);
27
+ }).boxes));
28
28
  const summary = {};
29
29
  for (const dep of dependencies) {
30
30
  summary[dep.name] = (summary[dep.name] ?? 0) + 1;
@@ -62,17 +62,17 @@ export var PresetEncoder;
62
62
  || TransferUtils.excludeTimelinePredicate(box)
63
63
  || box instanceof AudioUnitBox;
64
64
  const effectSet = new Set(effects);
65
- const dependencies = Array.from(sourceGraph.dependenciesOf(effects, {
65
+ const dependencies = TransferUtils.withModulators(Array.from(sourceGraph.dependenciesOf(effects, {
66
66
  alwaysFollowMandatory: true,
67
67
  stopAtResources: true,
68
68
  excludeBox
69
- }).boxes).filter(box => !effectSet.has(box));
69
+ }).boxes).filter(box => !effectSet.has(box)));
70
70
  const uuidMap = UUID.newSet(({ source }) => source);
71
71
  uuidMap.addMany([
72
72
  ...effects.map(box => ({ source: box.address.uuid, target: UUID.generate() })),
73
73
  ...dependencies.map(box => ({
74
74
  source: box.address.uuid,
75
- target: box.resource === "preserved" ? box.address.uuid : UUID.generate()
75
+ target: TransferUtils.keepsIdentity(box) ? box.address.uuid : UUID.generate()
76
76
  }))
77
77
  ]);
78
78
  const targetField = kind === PresetHeader.ChainKind.Audio
@@ -95,6 +95,9 @@ export var PresetEncoder;
95
95
  if (pointer.pointerType === hostPointerType) {
96
96
  return Option.wrap(targetField.address);
97
97
  }
98
+ if (pointer.pointerType === Pointers.ModulatorCollection) {
99
+ return Option.wrap(rootBox.modulators.address);
100
+ }
98
101
  return address.flatMap(addr => boxGraph.findBox(addr.uuid).nonEmpty() ? Option.wrap(addr) : Option.None);
99
102
  }
100
103
  }, () => {