@opendaw/studio-adapters 0.3.1 → 0.3.2

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 (39) hide show
  1. package/dist/AutomatableParameterFieldAdapter.d.ts +9 -5
  2. package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
  3. package/dist/AutomatableParameterFieldAdapter.js +61 -40
  4. package/dist/BoxAdapters.d.ts.map +1 -1
  5. package/dist/BoxAdapters.js +12 -0
  6. package/dist/DeviceManualUrls.d.ts +1 -0
  7. package/dist/DeviceManualUrls.d.ts.map +1 -1
  8. package/dist/DeviceManualUrls.js +1 -0
  9. package/dist/ParameterFieldAdapters.d.ts +3 -7
  10. package/dist/ParameterFieldAdapters.d.ts.map +1 -1
  11. package/dist/ParameterFieldAdapters.js +2 -15
  12. package/dist/ParameterOwner.d.ts.map +1 -1
  13. package/dist/ParameterOwner.js +4 -0
  14. package/dist/RootBoxAdapter.d.ts +2 -0
  15. package/dist/RootBoxAdapter.d.ts.map +1 -1
  16. package/dist/RootBoxAdapter.js +8 -2
  17. package/dist/audio-unit/AudioUnitTracks.d.ts +2 -15
  18. package/dist/audio-unit/AudioUnitTracks.d.ts.map +1 -1
  19. package/dist/audio-unit/AudioUnitTracks.js +5 -59
  20. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts +35 -0
  21. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts.map +1 -0
  22. package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.js +60 -0
  23. package/dist/index.d.ts +10 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +10 -0
  26. package/dist/modulation/Modulators.d.ts.map +1 -1
  27. package/dist/modulation/Modulators.js +11 -2
  28. package/dist/modulation/RandomModulatorBoxAdapter.d.ts +0 -2
  29. package/dist/modulation/RandomModulatorBoxAdapter.d.ts.map +1 -1
  30. package/dist/modulation/RandomModulatorBoxAdapter.js +4 -6
  31. package/dist/modulation/StepsModulatorBoxAdapter.d.ts +0 -2
  32. package/dist/modulation/StepsModulatorBoxAdapter.d.ts.map +1 -1
  33. package/dist/modulation/StepsModulatorBoxAdapter.js +2 -3
  34. package/dist/protocols.d.ts +2 -0
  35. package/dist/protocols.d.ts.map +1 -1
  36. package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
  37. package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
  38. package/dist/timeline/TrackBoxAdapter.js +21 -27
  39. package/package.json +10 -10
@@ -1,9 +1,10 @@
1
1
  import { ControlSourceListener, ObservableValue, Observer, Option, Parameter, StringMapping, StringResult, Subscription, Terminable, unitValue, ValueMapping } from "@opendaw/lib-std";
2
2
  import { ppqn } from "@opendaw/lib-dsp";
3
- import { Address, PrimitiveField, PrimitiveType, PrimitiveValues } from "@opendaw/lib-box";
3
+ import { Address, Field, PrimitiveField, PrimitiveType, PrimitiveValues } from "@opendaw/lib-box";
4
4
  import { Pointers } from "@opendaw/studio-enums";
5
+ import { ModulationBox } from "@opendaw/studio-boxes";
5
6
  import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
6
- import { AudioUnitTracks } from "./audio-unit/AudioUnitTracks";
7
+ import { ParameterTracks } from "./timeline/ParameterTracks";
7
8
  import { BoxAdaptersContext } from "./BoxAdaptersContext";
8
9
  export declare class AutomatableParameterFieldAdapter<T extends PrimitiveValues = any> implements Parameter<T>, Terminable {
9
10
  #private;
@@ -16,13 +17,16 @@ export declare class AutomatableParameterFieldAdapter<T extends PrimitiveValues
16
17
  get anchor(): unitValue;
17
18
  get type(): PrimitiveType;
18
19
  get address(): Address;
20
+ get context(): BoxAdaptersContext;
19
21
  get track(): Option<TrackBoxAdapter>;
22
+ get modulationTarget(): Field<Pointers.Modulation>;
23
+ get modulations(): ReadonlyArray<ModulationBox>;
20
24
  catchupAndSubscribeName(observer: Observer<string>): Subscription;
21
- registerTracks(tracks: AudioUnitTracks): Terminable;
22
- touchStart(): void;
23
- touchEnd(): void;
25
+ registerTracks(tracks: ParameterTracks): Terminable;
26
+ optTracks(): Option<ParameterTracks>;
24
27
  updateMappings(valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>): void;
25
28
  valueAt(position: ppqn): T;
29
+ notifyPrinting(): void;
26
30
  subscribe(observer: Observer<AutomatableParameterFieldAdapter<T>>): Subscription;
27
31
  catchupAndSubscribe(observer: Observer<AutomatableParameterFieldAdapter<T>>): Subscription;
28
32
  catchupAndSubscribeControlSources(observer: ControlSourceListener): Subscription;
@@ -1 +1 @@
1
- {"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAKrB,eAAe,EACf,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAmBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,EACtC,MAAM,CAAC,EAAE,SAAS,EAClB,UAAU,CAAC,EAAE,CAAC;IAsE1B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAA+B;IACjD,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY;IAIjE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU;IAGnD,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,IAAI;IAEhB,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAMpF,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAIhF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAK1F,iCAAiC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,YAAY;IAMhF,QAAQ,IAAI,CAAC;IACb,QAAQ,CAAC,KAAK,EAAE,CAAC;IAMjB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IACpC,YAAY,IAAI,SAAS;IACzB,kBAAkB,IAAI,CAAC;IACvB,sBAAsB,IAAI,SAAS;IACnC,uBAAuB,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,aAAa,IAAI,QAAQ,CAAC,YAAY,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWjC,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAKpB"}
1
+ {"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,12 @@ 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 _AutomatableParameterFieldAdapter_context, _AutomatableParameterFieldAdapter_field, _AutomatableParameterFieldAdapter_name, _AutomatableParameterFieldAdapter_anchor, _AutomatableParameterFieldAdapter_resetValue, _AutomatableParameterFieldAdapter_terminator, _AutomatableParameterFieldAdapter_valueChangeNotifier, _AutomatableParameterFieldAdapter_controlSource, _AutomatableParameterFieldAdapter_valueMapping, _AutomatableParameterFieldAdapter_stringMapping, _AutomatableParameterFieldAdapter_trackBoxAdapter, _AutomatableParameterFieldAdapter_automationHandle, _AutomatableParameterFieldAdapter_controlledValue, _AutomatableParameterFieldAdapter_midiControlled;
13
- import { assert, clamp, isNull, Listeners, Notifier, ObservableValue, Option, panic, Terminator } from "@opendaw/lib-std";
12
+ var _AutomatableParameterFieldAdapter_instances, _AutomatableParameterFieldAdapter_context, _AutomatableParameterFieldAdapter_field, _AutomatableParameterFieldAdapter_name, _AutomatableParameterFieldAdapter_anchor, _AutomatableParameterFieldAdapter_resetValue, _AutomatableParameterFieldAdapter_terminator, _AutomatableParameterFieldAdapter_valueChangeNotifier, _AutomatableParameterFieldAdapter_controlSource, _AutomatableParameterFieldAdapter_valueMapping, _AutomatableParameterFieldAdapter_stringMapping, _AutomatableParameterFieldAdapter_trackBoxAdapter, _AutomatableParameterFieldAdapter_automationHandle, _AutomatableParameterFieldAdapter_controlledValue, _AutomatableParameterFieldAdapter_modulationValue, _AutomatableParameterFieldAdapter_midiControlled, _AutomatableParameterFieldAdapter_observeEngineValue, _AutomatableParameterFieldAdapter_releaseEngineValue;
13
+ import { assert, asInstanceOf, clamp, isNull, Listeners, Notifier, ObservableValue, Option, panic, StringMapping, Terminator } from "@opendaw/lib-std";
14
14
  import { Pointers } from "@opendaw/studio-enums";
15
+ import { ModulationBox } from "@opendaw/studio-boxes";
15
16
  import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
17
+ import { ParameterOwner } from "./ParameterOwner";
16
18
  const ExternalControlTypes = [
17
19
  Pointers.Automation,
18
20
  Pointers.Modulation,
@@ -21,6 +23,7 @@ const ExternalControlTypes = [
21
23
  ];
22
24
  export class AutomatableParameterFieldAdapter {
23
25
  constructor(context, field, valueMapping, stringMapping, name, anchor, resetValue) {
26
+ _AutomatableParameterFieldAdapter_instances.add(this);
24
27
  _AutomatableParameterFieldAdapter_context.set(this, void 0);
25
28
  _AutomatableParameterFieldAdapter_field.set(this, void 0);
26
29
  _AutomatableParameterFieldAdapter_name.set(this, void 0);
@@ -34,6 +37,7 @@ export class AutomatableParameterFieldAdapter {
34
37
  _AutomatableParameterFieldAdapter_trackBoxAdapter.set(this, Option.None);
35
38
  _AutomatableParameterFieldAdapter_automationHandle.set(this, Option.None);
36
39
  _AutomatableParameterFieldAdapter_controlledValue.set(this, null);
40
+ _AutomatableParameterFieldAdapter_modulationValue.set(this, null);
37
41
  _AutomatableParameterFieldAdapter_midiControlled.set(this, false);
38
42
  __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_context, context, "f");
39
43
  __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_field, field, "f");
@@ -52,33 +56,10 @@ export class AutomatableParameterFieldAdapter {
52
56
  pointer.box.accept({
53
57
  visitTrackBox: (box) => {
54
58
  assert(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, "f").isEmpty(), "Already assigned");
55
- const adapter = __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").boxAdapters.adapterFor(box, TrackBoxAdapter);
56
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, Option.wrap(adapter), "f");
57
- if (__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").isMainThread) {
58
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_automationHandle, Option.wrap(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").liveStreamReceiver
59
- .subscribeFloat(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").address, value => {
60
- // NaN is the engine's "the curve yields NO value here" sentinel: automation
61
- // is attached but has no region / clip / events yet. The parameter must then
62
- // keep showing its STORAGE value (`getControlledUnitValue` falls back to
63
- // `getUnitValue` while `#controlledValue` is null) — a real value of 0 would
64
- // otherwise read as unit 0, pinning the knob to its minimum.
65
- if (isNaN(value)) {
66
- if (isNull(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlledValue, "f"))) {
67
- return;
68
- }
69
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlledValue, null, "f");
70
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this);
71
- return;
72
- }
73
- if (__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlledValue, "f") === value) {
74
- return;
75
- }
76
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlledValue, value, "f");
77
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this);
78
- })), "f");
79
- }
59
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, Option.wrap(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").boxAdapters.adapterFor(box, TrackBoxAdapter)), "f");
80
60
  }
81
61
  });
62
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_instances, "m", _AutomatableParameterFieldAdapter_observeEngineValue).call(this);
82
63
  },
83
64
  onRemoved: (pointer) => {
84
65
  __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlSource, "f").proxy.onControlSourceRemove(mapPointerToControlSource(pointer.pointerType));
@@ -86,14 +67,9 @@ export class AutomatableParameterFieldAdapter {
86
67
  visitTrackBox: (box) => {
87
68
  assert(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, "f").unwrapOrNull()?.address?.equals(box.address) === true, `Unknown ${box}`);
88
69
  __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, Option.None, "f");
89
- if (__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").isMainThread) {
90
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_automationHandle, "f").ifSome(handle => handle.terminate());
91
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_automationHandle, Option.None, "f");
92
- __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlledValue, null, "f");
93
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this);
94
- }
95
70
  }
96
71
  });
72
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_instances, "m", _AutomatableParameterFieldAdapter_releaseEngineValue).call(this);
97
73
  }
98
74
  }, ...ExternalControlTypes));
99
75
  /*
@@ -123,18 +99,32 @@ export class AutomatableParameterFieldAdapter {
123
99
  get anchor() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_anchor, "f"); }
124
100
  get type() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").type; }
125
101
  get address() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").address; }
102
+ get context() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f"); }
126
103
  get track() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_trackBoxAdapter, "f"); }
104
+ /// Every parameter field accepts `Modulation` (`ParameterPointerRules`), but the adapter types it by the
105
+ /// automation pointer it was built for.
106
+ get modulationTarget() {
107
+ return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f");
108
+ }
109
+ get modulations() {
110
+ return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").pointerHub.filter(Pointers.Modulation)
111
+ .map(pointer => asInstanceOf(pointer.box, ModulationBox));
112
+ }
127
113
  catchupAndSubscribeName(observer) {
128
114
  return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_name, "f").catchupAndSubscribe(owner => observer(owner.getValue()));
129
115
  }
130
116
  registerTracks(tracks) {
131
117
  return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.registerTracks(this.address, tracks);
132
118
  }
133
- touchStart() {
134
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.touchStart(this.address);
135
- __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.notifyWrite(this, this.getUnitValue());
119
+ /// Where this parameter's automation lanes live. A modulator registers itself as the owner, everything else
120
+ /// falls back to the audio unit the parameter belongs to, so a lane resolves with no editor mounted.
121
+ optTracks() {
122
+ const registered = __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.getTracks(this.address);
123
+ if (registered.nonEmpty()) {
124
+ return registered;
125
+ }
126
+ return ParameterOwner.audioUnitOf(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f"), __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f")).map(adapter => adapter.tracks);
136
127
  }
137
- touchEnd() { __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.touchEnd(this.address); }
138
128
  updateMappings(valueMapping, stringMapping) {
139
129
  __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_valueMapping, valueMapping, "f");
140
130
  __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_stringMapping, stringMapping, "f");
@@ -150,6 +140,7 @@ export class AutomatableParameterFieldAdapter {
150
140
  }
151
141
  return this.getValue();
152
142
  }
143
+ notifyPrinting() { __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this); }
153
144
  subscribe(observer) {
154
145
  return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").subscribe(observer);
155
146
  }
@@ -177,11 +168,17 @@ export class AutomatableParameterFieldAdapter {
177
168
  setUnitValue(value) { this.setValue(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").y(value)); }
178
169
  getUnitValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").x(this.getValue()); }
179
170
  getControlledValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").y(this.getControlledUnitValue()); }
180
- getControlledUnitValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlledValue, "f") ?? this.getUnitValue(); }
171
+ // The engine cannot fold these itself: for an unautomated parameter it holds the storage value in the
172
+ // parameter's real unit, and the mapping lives here (and in the device).
173
+ getControlledUnitValue() {
174
+ const base = __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlledValue, "f") ?? this.getUnitValue();
175
+ return isNull(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_modulationValue, "f")) ? base : clamp(base + __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_modulationValue, "f"), 0.0, 1.0);
176
+ }
181
177
  getControlledPrintValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_stringMapping, "f").x(this.getControlledValue()); }
182
178
  getPrintValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_stringMapping, "f").x(this.getValue()); }
183
179
  setPrintValue(text) {
184
- const result = __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_stringMapping, "f").y(text);
180
+ // bare numbers mean the unit the label currently displays ("10" while showing "ms" = 10 ms)
181
+ const result = __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_stringMapping, "f").y(StringMapping.withDisplayUnit(text, this.getPrintValue().unit));
185
182
  if (result.type === "unitValue") {
186
183
  this.setUnitValue(clamp(result.value, 0.0, 1.0));
187
184
  }
@@ -199,7 +196,31 @@ export class AutomatableParameterFieldAdapter {
199
196
  __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_terminator, "f").terminate();
200
197
  }
201
198
  }
202
- _AutomatableParameterFieldAdapter_context = new WeakMap(), _AutomatableParameterFieldAdapter_field = new WeakMap(), _AutomatableParameterFieldAdapter_name = new WeakMap(), _AutomatableParameterFieldAdapter_anchor = new WeakMap(), _AutomatableParameterFieldAdapter_resetValue = new WeakMap(), _AutomatableParameterFieldAdapter_terminator = new WeakMap(), _AutomatableParameterFieldAdapter_valueChangeNotifier = new WeakMap(), _AutomatableParameterFieldAdapter_controlSource = new WeakMap(), _AutomatableParameterFieldAdapter_valueMapping = new WeakMap(), _AutomatableParameterFieldAdapter_stringMapping = new WeakMap(), _AutomatableParameterFieldAdapter_trackBoxAdapter = new WeakMap(), _AutomatableParameterFieldAdapter_automationHandle = new WeakMap(), _AutomatableParameterFieldAdapter_controlledValue = new WeakMap(), _AutomatableParameterFieldAdapter_midiControlled = new WeakMap();
199
+ _AutomatableParameterFieldAdapter_context = new WeakMap(), _AutomatableParameterFieldAdapter_field = new WeakMap(), _AutomatableParameterFieldAdapter_name = new WeakMap(), _AutomatableParameterFieldAdapter_anchor = new WeakMap(), _AutomatableParameterFieldAdapter_resetValue = new WeakMap(), _AutomatableParameterFieldAdapter_terminator = new WeakMap(), _AutomatableParameterFieldAdapter_valueChangeNotifier = new WeakMap(), _AutomatableParameterFieldAdapter_controlSource = new WeakMap(), _AutomatableParameterFieldAdapter_valueMapping = new WeakMap(), _AutomatableParameterFieldAdapter_stringMapping = new WeakMap(), _AutomatableParameterFieldAdapter_trackBoxAdapter = new WeakMap(), _AutomatableParameterFieldAdapter_automationHandle = new WeakMap(), _AutomatableParameterFieldAdapter_controlledValue = new WeakMap(), _AutomatableParameterFieldAdapter_modulationValue = new WeakMap(), _AutomatableParameterFieldAdapter_midiControlled = new WeakMap(), _AutomatableParameterFieldAdapter_instances = new WeakSet(), _AutomatableParameterFieldAdapter_observeEngineValue = function _AutomatableParameterFieldAdapter_observeEngineValue() {
200
+ if (!__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").isMainThread || __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_automationHandle, "f").nonEmpty()) {
201
+ return;
202
+ }
203
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_automationHandle, Option.wrap(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").liveStreamReceiver
204
+ .subscribeFloats(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").address, values => {
205
+ const automated = isNaN(values[0]) ? null : values[0];
206
+ const modulation = isNaN(values[1]) ? null : values[1];
207
+ if (__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlledValue, "f") === automated && __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_modulationValue, "f") === modulation) {
208
+ return;
209
+ }
210
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlledValue, automated, "f");
211
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_modulationValue, modulation, "f");
212
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this);
213
+ })), "f");
214
+ }, _AutomatableParameterFieldAdapter_releaseEngineValue = function _AutomatableParameterFieldAdapter_releaseEngineValue() {
215
+ if (!__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").isMainThread || __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").pointerHub.filter(...ExternalControlTypes).length > 0) {
216
+ return;
217
+ }
218
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_automationHandle, "f").ifSome(handle => handle.terminate());
219
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_automationHandle, Option.None, "f");
220
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlledValue, null, "f");
221
+ __classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_modulationValue, null, "f");
222
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").notify(this);
223
+ };
203
224
  const mapPointerToControlSource = (pointer) => {
204
225
  switch (pointer) {
205
226
  case Pointers.Automation:
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAEL,MAAM,EAIN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AA2H5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AA6BvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAkBnG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;CA+E3C"}
1
+ {"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAEL,MAAM,EAIN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAiI5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAmCvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAkBnG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;CAqF3C"}
@@ -59,6 +59,11 @@ import { FrequencySplitBoxAdapter } from "./devices/audio-effects/FrequencySplit
59
59
  import { AudioEffectCompositeCellBoxAdapter } from "./devices/audio-effects/AudioEffectComposite/AudioEffectCompositeCellBoxAdapter";
60
60
  import { ZeitgeistDeviceBoxAdapter } from "./devices/midi-effects/ZeitgeistDeviceBoxAdapter";
61
61
  import { GrooveShuffleBoxAdapter } from "./grooves/GrooveShuffleBoxAdapter";
62
+ import { LfoModulatorBoxAdapter } from "./modulation/LfoModulatorBoxAdapter";
63
+ import { StepsModulatorBoxAdapter } from "./modulation/StepsModulatorBoxAdapter";
64
+ import { MacroModulatorBoxAdapter } from "./modulation/MacroModulatorBoxAdapter";
65
+ import { RandomModulatorBoxAdapter } from "./modulation/RandomModulatorBoxAdapter";
66
+ import { ModulationBoxAdapter } from "./modulation/ModulationBoxAdapter";
62
67
  import { UnknownAudioEffectDeviceBoxAdapter } from "./devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter";
63
68
  import { UnknownMidiEffectDeviceBoxAdapter } from "./devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter";
64
69
  import { SoundfontDeviceBoxAdapter } from "./devices/instruments/SoundfontDeviceBoxAdapter";
@@ -73,6 +78,7 @@ import { MIDIOutputDeviceBoxAdapter } from "./devices/instruments/MIDIOutputDevi
73
78
  import { VelocityDeviceBoxAdapter } from "./devices/midi-effects/VelocityDeviceBoxAdapter";
74
79
  import { TidalDeviceBoxAdapter } from "./devices/audio-effects/TidalDeviceBoxAdapter";
75
80
  import { VocoderDeviceBoxAdapter } from "./devices/audio-effects/VocoderDeviceBoxAdapter";
81
+ import { ConvolverDeviceBoxAdapter } from "./devices/audio-effects/ConvolverDeviceBoxAdapter";
76
82
  import { DattorroReverbDeviceBoxAdapter } from "./devices/audio-effects/DattorroReverbDeviceBoxAdapter";
77
83
  import { NeuralAmpDeviceBoxAdapter } from "./devices/audio-effects/NeuralAmpDeviceBoxAdapter";
78
84
  import { WaveshaperDeviceBoxAdapter } from "./devices/audio-effects/WaveshaperDeviceBoxAdapter";
@@ -151,12 +157,18 @@ _BoxAdapters_context = new WeakMap(), _BoxAdapters_adapters = new WeakMap(), _Bo
151
157
  visitGateDeviceBox: (box) => new GateDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
152
158
  visitAutotuneDeviceBox: (box) => new AutotuneDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
153
159
  visitCrusherDeviceBox: (box) => new CrusherDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
160
+ visitConvolverDeviceBox: (box) => new ConvolverDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
154
161
  visitDattorroReverbDeviceBox: (box) => new DattorroReverbDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
155
162
  visitDelayDeviceBox: (box) => new DelayDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
156
163
  visitDeviceInterfaceKnobBox: (box) => new DeviceInterfaceKnobAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
157
164
  visitTidalDeviceBox: (box) => new TidalDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
158
165
  visitFoldDeviceBox: (box) => new FoldDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
159
166
  visitGrooveShuffleBox: (box) => new GrooveShuffleBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
167
+ visitLfoModulatorBox: (box) => new LfoModulatorBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
168
+ visitStepsModulatorBox: (box) => new StepsModulatorBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
169
+ visitMacroModulatorBox: (box) => new MacroModulatorBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
170
+ visitRandomModulatorBox: (box) => new RandomModulatorBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
171
+ visitModulationBox: (box) => new ModulationBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
160
172
  visitMarkerBox: (box) => new MarkerBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
161
173
  visitSignatureEventBox: (box) => new SignatureEventBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
162
174
  visitMIDIOutputDeviceBox: (box) => new MIDIOutputDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
@@ -8,6 +8,7 @@ export declare namespace DeviceManualUrls {
8
8
  const Autotune = "manuals/devices/audio/autotune";
9
9
  const StereoTool = "manuals/devices/audio/stereotool";
10
10
  const Delay = "manuals/devices/audio/delay";
11
+ const Convolver = "manuals/devices/audio/convolver";
11
12
  const DattorroReverb = "manuals/devices/audio/dattorro-reverb";
12
13
  const Maximizer = "manuals/devices/audio/maximizer";
13
14
  const Compressor = "manuals/devices/audio/compressor";
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceManualUrls.d.ts","sourceRoot":"","sources":["../src/DeviceManualUrls.ts"],"names":[],"mappings":"AAAA,yBAAiB,gBAAgB,CAAC;IAEvB,MAAM,QAAQ,sBAAsB,CAAA;IAGpC,MAAM,QAAQ,kCAAkC,CAAA;IAChD,MAAM,KAAK,+BAA+B,CAAA;IAC1C,MAAM,SAAS,mCAAmC,CAAA;IAClD,MAAM,QAAQ,kCAAkC,CAAA;IAChD,MAAM,SAAS,mCAAmC,CAAA;IAGlD,MAAM,QAAQ,mCAAmC,CAAA;IACjD,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,KAAK,gCAAgC,CAAA;IAC3C,MAAM,cAAc,0CAA0C,CAAA;IAC9D,MAAM,SAAS,oCAAoC,CAAA;IACnD,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,IAAI,+BAA+B,CAAA;IACzC,MAAM,MAAM,iCAAiC,CAAA;IAC7C,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,IAAI,+BAA+B,CAAA;IACzC,MAAM,KAAK,gCAAgC,CAAA;IAC3C,MAAM,MAAM,iCAAiC,CAAA;IAC7C,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,SAAS,qCAAqC,CAAA;IACpD,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,SAAS,oCAAoC,CAAA;IACnD,MAAM,oBAAoB,2CAA2C,CAAA;IACrE,MAAM,eAAe,2CAA2C,CAAA;IAGhE,MAAM,OAAO,wCAAwC,CAAA;IACrD,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,SAAS,0CAA0C,CAAA;IACzD,MAAM,YAAY,6CAA6C,CAAA;IAC/D,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,UAAU,2CAA2C,CAAA;IAC3D,MAAM,SAAS,0CAA0C,CAAA;IACzD,MAAM,cAAc,0CAA0C,CAAA;CACxE"}
1
+ {"version":3,"file":"DeviceManualUrls.d.ts","sourceRoot":"","sources":["../src/DeviceManualUrls.ts"],"names":[],"mappings":"AAAA,yBAAiB,gBAAgB,CAAC;IAEvB,MAAM,QAAQ,sBAAsB,CAAA;IAGpC,MAAM,QAAQ,kCAAkC,CAAA;IAChD,MAAM,KAAK,+BAA+B,CAAA;IAC1C,MAAM,SAAS,mCAAmC,CAAA;IAClD,MAAM,QAAQ,kCAAkC,CAAA;IAChD,MAAM,SAAS,mCAAmC,CAAA;IAGlD,MAAM,QAAQ,mCAAmC,CAAA;IACjD,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,KAAK,gCAAgC,CAAA;IAC3C,MAAM,SAAS,oCAAoC,CAAA;IACnD,MAAM,cAAc,0CAA0C,CAAA;IAC9D,MAAM,SAAS,oCAAoC,CAAA;IACnD,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,IAAI,+BAA+B,CAAA;IACzC,MAAM,MAAM,iCAAiC,CAAA;IAC7C,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,IAAI,+BAA+B,CAAA;IACzC,MAAM,KAAK,gCAAgC,CAAA;IAC3C,MAAM,MAAM,iCAAiC,CAAA;IAC7C,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,SAAS,qCAAqC,CAAA;IACpD,MAAM,OAAO,kCAAkC,CAAA;IAC/C,MAAM,UAAU,qCAAqC,CAAA;IACrD,MAAM,SAAS,oCAAoC,CAAA;IACnD,MAAM,oBAAoB,2CAA2C,CAAA;IACrE,MAAM,eAAe,2CAA2C,CAAA;IAGhE,MAAM,OAAO,wCAAwC,CAAA;IACrD,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,SAAS,0CAA0C,CAAA;IACzD,MAAM,YAAY,6CAA6C,CAAA;IAC/D,MAAM,IAAI,qCAAqC,CAAA;IAC/C,MAAM,UAAU,2CAA2C,CAAA;IAC3D,MAAM,SAAS,0CAA0C,CAAA;IACzD,MAAM,cAAc,0CAA0C,CAAA;CACxE"}
@@ -12,6 +12,7 @@ export var DeviceManualUrls;
12
12
  DeviceManualUrls.Autotune = "manuals/devices/audio/autotune";
13
13
  DeviceManualUrls.StereoTool = "manuals/devices/audio/stereotool";
14
14
  DeviceManualUrls.Delay = "manuals/devices/audio/delay";
15
+ DeviceManualUrls.Convolver = "manuals/devices/audio/convolver";
15
16
  DeviceManualUrls.DattorroReverb = "manuals/devices/audio/dattorro-reverb";
16
17
  DeviceManualUrls.Maximizer = "manuals/devices/audio/maximizer";
17
18
  DeviceManualUrls.Compressor = "manuals/devices/audio/compressor";
@@ -1,7 +1,7 @@
1
1
  import { Observer, Option, Subscription, Terminable, unitValue } from "@opendaw/lib-std";
2
2
  import { Address } from "@opendaw/lib-box";
3
3
  import { AutomatableParameterFieldAdapter } from "./AutomatableParameterFieldAdapter";
4
- import { AudioUnitTracks } from "./audio-unit/AudioUnitTracks";
4
+ import { ParameterTracks } from "./timeline/ParameterTracks";
5
5
  export type AutomationMode = "read" | "touch" | "latch";
6
6
  export type ParameterWriteEvent = {
7
7
  adapter: AutomatableParameterFieldAdapter;
@@ -13,14 +13,10 @@ export declare class ParameterFieldAdapters {
13
13
  register(adapter: AutomatableParameterFieldAdapter): Terminable;
14
14
  get(address: Address): AutomatableParameterFieldAdapter;
15
15
  opt(address: Address): Option<AutomatableParameterFieldAdapter>;
16
- registerTracks(address: Address, tracks: AudioUnitTracks): Terminable;
17
- getTracks(address: Address): Option<AudioUnitTracks>;
16
+ registerTracks(address: Address, tracks: ParameterTracks): Terminable;
17
+ getTracks(address: Address): Option<ParameterTracks>;
18
18
  setMode(address: Address, mode: AutomationMode): void;
19
19
  getMode(address: Address): AutomationMode;
20
- touchStart(address: Address): void;
21
- touchEnd(address: Address): void;
22
- isTouched(address: Address): boolean;
23
- subscribeTouchEnd(observer: Observer<Address>): Subscription;
24
20
  subscribeWrites(observer: Observer<ParameterWriteEvent>): Subscription;
25
21
  notifyWrite(adapter: AutomatableParameterFieldAdapter, previousUnitValue: unitValue): void;
26
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterFieldAdapters.d.ts","sourceRoot":"","sources":["../src/ParameterFieldAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,EAAa,YAAY,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAC3G,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AACnF,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAA;AAE5D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,gCAAgC,CAAA;IACzC,iBAAiB,EAAE,SAAS,CAAA;CAC/B,CAAA;AAED,qBAAa,sBAAsB;;;IAiB/B,QAAQ,CAAC,OAAO,EAAE,gCAAgC,GAAG,UAAU;IAK/D,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IACvD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gCAAgC,CAAC;IAE/D,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,UAAU;IAMrE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;IAIpD,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IACrD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc;IAEzC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIhC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IACpC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,YAAY;IAE5D,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,YAAY;IAItE,WAAW,CAAC,OAAO,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,SAAS,GAAG,IAAI;CAG7F"}
1
+ {"version":3,"file":"ParameterFieldAdapters.d.ts","sourceRoot":"","sources":["../src/ParameterFieldAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,EAAa,YAAY,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAC3G,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AACnF,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,EAAE,gCAAgC,CAAA;IACzC,iBAAiB,EAAE,SAAS,CAAA;CAC/B,CAAA;AAED,qBAAa,sBAAsB;;;IAa/B,QAAQ,CAAC,OAAO,EAAE,gCAAgC,GAAG,UAAU;IAK/D,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IACvD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gCAAgC,CAAC;IAE/D,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,UAAU;IAMrE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;IAIpD,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IACrD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc;IAEzC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,YAAY;IAItE,WAAW,CAAC,OAAO,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,SAAS,GAAG,IAAI;CAG7F"}
@@ -9,7 +9,7 @@ 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 _ParameterFieldAdapters_set, _ParameterFieldAdapters_writeNotifier, _ParameterFieldAdapters_tracksMap, _ParameterFieldAdapters_touchedSet, _ParameterFieldAdapters_touchEndNotifier, _ParameterFieldAdapters_modeMap;
12
+ var _ParameterFieldAdapters_set, _ParameterFieldAdapters_writeNotifier, _ParameterFieldAdapters_tracksMap, _ParameterFieldAdapters_modeMap;
13
13
  import { Notifier, Option } from "@opendaw/lib-std";
14
14
  import { Address } from "@opendaw/lib-box";
15
15
  export class ParameterFieldAdapters {
@@ -17,14 +17,10 @@ export class ParameterFieldAdapters {
17
17
  _ParameterFieldAdapters_set.set(this, void 0);
18
18
  _ParameterFieldAdapters_writeNotifier.set(this, void 0);
19
19
  _ParameterFieldAdapters_tracksMap.set(this, void 0);
20
- _ParameterFieldAdapters_touchedSet.set(this, void 0);
21
- _ParameterFieldAdapters_touchEndNotifier.set(this, void 0);
22
20
  _ParameterFieldAdapters_modeMap.set(this, void 0);
23
21
  __classPrivateFieldSet(this, _ParameterFieldAdapters_set, Address.newSet(adapter => adapter.field.address), "f");
24
22
  __classPrivateFieldSet(this, _ParameterFieldAdapters_writeNotifier, new Notifier(), "f");
25
23
  __classPrivateFieldSet(this, _ParameterFieldAdapters_tracksMap, new Map(), "f");
26
- __classPrivateFieldSet(this, _ParameterFieldAdapters_touchedSet, new Set(), "f");
27
- __classPrivateFieldSet(this, _ParameterFieldAdapters_touchEndNotifier, new Notifier(), "f");
28
24
  __classPrivateFieldSet(this, _ParameterFieldAdapters_modeMap, new Map(), "f");
29
25
  }
30
26
  register(adapter) {
@@ -43,15 +39,6 @@ export class ParameterFieldAdapters {
43
39
  }
44
40
  setMode(address, mode) { __classPrivateFieldGet(this, _ParameterFieldAdapters_modeMap, "f").set(address.toString(), mode); }
45
41
  getMode(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_modeMap, "f").get(address.toString()) ?? "read"; }
46
- touchStart(address) { __classPrivateFieldGet(this, _ParameterFieldAdapters_touchedSet, "f").add(address.toString()); }
47
- touchEnd(address) {
48
- const key = address.toString();
49
- if (__classPrivateFieldGet(this, _ParameterFieldAdapters_touchedSet, "f").delete(key)) {
50
- __classPrivateFieldGet(this, _ParameterFieldAdapters_touchEndNotifier, "f").notify(address);
51
- }
52
- }
53
- isTouched(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_touchedSet, "f").has(address.toString()); }
54
- subscribeTouchEnd(observer) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_touchEndNotifier, "f").subscribe(observer); }
55
42
  subscribeWrites(observer) {
56
43
  return __classPrivateFieldGet(this, _ParameterFieldAdapters_writeNotifier, "f").subscribe(observer);
57
44
  }
@@ -59,4 +46,4 @@ export class ParameterFieldAdapters {
59
46
  __classPrivateFieldGet(this, _ParameterFieldAdapters_writeNotifier, "f").notify({ adapter, previousUnitValue });
60
47
  }
61
48
  }
62
- _ParameterFieldAdapters_set = new WeakMap(), _ParameterFieldAdapters_writeNotifier = new WeakMap(), _ParameterFieldAdapters_tracksMap = new WeakMap(), _ParameterFieldAdapters_touchedSet = new WeakMap(), _ParameterFieldAdapters_touchEndNotifier = new WeakMap(), _ParameterFieldAdapters_modeMap = new WeakMap();
49
+ _ParameterFieldAdapters_set = new WeakMap(), _ParameterFieldAdapters_writeNotifier = new WeakMap(), _ParameterFieldAdapters_tracksMap = new WeakMap(), _ParameterFieldAdapters_modeMap = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterOwner.d.ts","sourceRoot":"","sources":["../src/ParameterOwner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAA;AAG3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AAIpE,yBAAiB,cAAc,CAAC;IAGrB,MAAM,MAAM,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,MAAM,CAAC,MAAM,CAcjF,CAAA;IAIM,MAAM,uBAAuB,GAAI,SAAS,kBAAkB,EAC3B,QAAQ,MAAM,EACd,UAAU,QAAQ,CAAC,MAAM,CAAC,KAAG,YAepE,CAAA;IAEM,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,MAAM,CAAC,mBAAmB,CAQnG,CAAA;CAyBJ"}
1
+ {"version":3,"file":"ParameterOwner.d.ts","sourceRoot":"","sources":["../src/ParameterOwner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAA;AAG3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AAIpE,yBAAiB,cAAc,CAAC;IAGrB,MAAM,MAAM,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,MAAM,CAAC,MAAM,CAcjF,CAAA;IAIM,MAAM,uBAAuB,GAAI,SAAS,kBAAkB,EAC3B,QAAQ,MAAM,EACd,UAAU,QAAQ,CAAC,MAAM,CAAC,KAAG,YAepE,CAAA;IAEM,MAAM,WAAW,GAAI,SAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAG,MAAM,CAAC,mBAAmB,CAYnG,CAAA;CAyBJ"}
@@ -48,6 +48,10 @@ export var ParameterOwner;
48
48
  if (box instanceof AudioUnitBox) {
49
49
  return Option.wrap(context.boxAdapters.adapterFor(box, AudioUnitBoxAdapter));
50
50
  }
51
+ // A modulated DEPTH owns no device of its own, so the walk follows the assignment to what it drives.
52
+ if (box instanceof ModulationBox) {
53
+ return box.target.targetVertex.flatMap(target => ParameterOwner.audioUnitOf(context, target));
54
+ }
51
55
  const own = unitOf(context, box);
52
56
  if (own.nonEmpty()) {
53
57
  return own;
@@ -11,6 +11,7 @@ import { BoxAdaptersContext } from "./BoxAdaptersContext";
11
11
  import { BoxAdapter } from "./BoxAdapter";
12
12
  import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
13
13
  import { GrooveShuffleBoxAdapter } from "./grooves/GrooveShuffleBoxAdapter";
14
+ import { ModulatorBoxAdapter } from "./modulation/ModulatorBoxAdapter";
14
15
  import { PianoModeAdapter } from "./PianoModeAdapter";
15
16
  import { LabeledAudioOutput, LabeledAudioOutputsOwner } from "./LabeledAudioOutputsOwner";
16
17
  export declare class RootBoxAdapter implements BoxAdapter, LabeledAudioOutputsOwner {
@@ -21,6 +22,7 @@ export declare class RootBoxAdapter implements BoxAdapter, LabeledAudioOutputsOw
21
22
  get box(): RootBox;
22
23
  get audioBusses(): BoxAdapterCollection<AudioBusBoxAdapter>;
23
24
  get audioUnits(): IndexedBoxAdapterCollection<AudioUnitBoxAdapter, Pointers.AudioUnits>;
25
+ get modulators(): IndexedBoxAdapterCollection<ModulatorBoxAdapter, Pointers.ModulatorCollection>;
24
26
  get clips(): ReadonlyArray<AnyClipBoxAdapter>;
25
27
  get groove(): GrooveShuffleBoxAdapter;
26
28
  get timeline(): TimelineBoxAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"RootBoxAdapter.d.ts","sourceRoot":"","sources":["../src/RootBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAuB,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,4BAA4B,CAAA;AAEvF,qBAAa,cAAe,YAAW,UAAU,EAAE,wBAAwB;;gBAQ3D,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO;IAarD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,GAAG,IAAI,OAAO,CAAmB;IACrC,IAAI,WAAW,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAA2B;IACtF,IAAI,UAAU,IAAI,2BAA2B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACjH,IAAI,KAAK,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAI5C;IACD,IAAI,MAAM,IAAI,uBAAuB,CAGpC;IACD,IAAI,QAAQ,IAAI,kBAAkB,CAGjC;IACD,IAAI,SAAS,IAAI,gBAAgB,CAAyB;IAC1D,IAAI,OAAO,IAAI,IAAI,CAAgD;IACnE,IAAI,iBAAiB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEpD;IAEC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAUrD,SAAS,IAAI,IAAI;CACpB"}
1
+ {"version":3,"file":"RootBoxAdapter.d.ts","sourceRoot":"","sources":["../src/RootBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAuB,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAwB,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,4BAA4B,CAAA;AAEvF,qBAAa,cAAe,YAAW,UAAU,EAAE,wBAAwB;;gBAS3D,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO;IAgBrD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,GAAG,IAAI,OAAO,CAAmB;IACrC,IAAI,WAAW,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAA2B;IACtF,IAAI,UAAU,IAAI,2BAA2B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACjH,IAAI,UAAU,IAAI,2BAA2B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAE/F;IACD,IAAI,KAAK,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAI5C;IACD,IAAI,MAAM,IAAI,uBAAuB,CAGpC;IACD,IAAI,QAAQ,IAAI,kBAAkB,CAGjC;IACD,IAAI,SAAS,IAAI,gBAAgB,CAAyB;IAC1D,IAAI,OAAO,IAAI,IAAI,CAAgD;IACnE,IAAI,iBAAiB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEpD;IAEC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAUrD,SAAS,IAAI,IAAI;CACpB"}
@@ -9,7 +9,7 @@ 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 _RootBoxAdapter_context, _RootBoxAdapter_box, _RootBoxAdapter_audioUnits, _RootBoxAdapter_audioBusses, _RootBoxAdapter_pianoMode;
12
+ var _RootBoxAdapter_context, _RootBoxAdapter_box, _RootBoxAdapter_audioUnits, _RootBoxAdapter_audioBusses, _RootBoxAdapter_modulators, _RootBoxAdapter_pianoMode;
13
13
  import { MIDIOutputBox } from "@opendaw/studio-boxes";
14
14
  import { asInstanceOf, Option } from "@opendaw/lib-std";
15
15
  import { AudioBusBoxAdapter } from "./audio-unit/AudioBusBoxAdapter";
@@ -19,6 +19,7 @@ import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
19
19
  import { BoxAdapterCollection } from "./BoxAdapterCollection";
20
20
  import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
21
21
  import { GrooveShuffleBoxAdapter } from "./grooves/GrooveShuffleBoxAdapter";
22
+ import { isModulatorBoxAdapter } from "./modulation/ModulatorBoxAdapter";
22
23
  import { PianoModeAdapter } from "./PianoModeAdapter";
23
24
  export class RootBoxAdapter {
24
25
  constructor(context, box) {
@@ -26,11 +27,13 @@ export class RootBoxAdapter {
26
27
  _RootBoxAdapter_box.set(this, void 0);
27
28
  _RootBoxAdapter_audioUnits.set(this, void 0);
28
29
  _RootBoxAdapter_audioBusses.set(this, void 0);
30
+ _RootBoxAdapter_modulators.set(this, void 0);
29
31
  _RootBoxAdapter_pianoMode.set(this, void 0);
30
32
  __classPrivateFieldSet(this, _RootBoxAdapter_context, context, "f");
31
33
  __classPrivateFieldSet(this, _RootBoxAdapter_box, box, "f");
32
34
  __classPrivateFieldSet(this, _RootBoxAdapter_audioUnits, IndexedBoxAdapterCollection.create(__classPrivateFieldGet(this, _RootBoxAdapter_box, "f").audioUnits, box => __classPrivateFieldGet(this, _RootBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioUnitBoxAdapter), Pointers.AudioUnits), "f");
33
35
  __classPrivateFieldSet(this, _RootBoxAdapter_audioBusses, new BoxAdapterCollection(__classPrivateFieldGet(this, _RootBoxAdapter_box, "f").audioBusses.pointerHub, box => __classPrivateFieldGet(this, _RootBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioBusBoxAdapter), Pointers.AudioBusses), "f");
36
+ __classPrivateFieldSet(this, _RootBoxAdapter_modulators, IndexedBoxAdapterCollection.create(__classPrivateFieldGet(this, _RootBoxAdapter_box, "f").modulators, box => __classPrivateFieldGet(this, _RootBoxAdapter_context, "f").boxAdapters.adapterFor(box, isModulatorBoxAdapter), Pointers.ModulatorCollection), "f");
34
37
  __classPrivateFieldSet(this, _RootBoxAdapter_pianoMode, new PianoModeAdapter(__classPrivateFieldGet(this, _RootBoxAdapter_box, "f").pianoMode), "f");
35
38
  }
36
39
  get uuid() { return __classPrivateFieldGet(this, _RootBoxAdapter_box, "f").address.uuid; }
@@ -38,6 +41,9 @@ export class RootBoxAdapter {
38
41
  get box() { return __classPrivateFieldGet(this, _RootBoxAdapter_box, "f"); }
39
42
  get audioBusses() { return __classPrivateFieldGet(this, _RootBoxAdapter_audioBusses, "f"); }
40
43
  get audioUnits() { return __classPrivateFieldGet(this, _RootBoxAdapter_audioUnits, "f"); }
44
+ get modulators() {
45
+ return __classPrivateFieldGet(this, _RootBoxAdapter_modulators, "f");
46
+ }
41
47
  get clips() {
42
48
  return __classPrivateFieldGet(this, _RootBoxAdapter_audioUnits, "f").adapters()
43
49
  .flatMap(adapter => adapter.tracks.collection.adapters())
@@ -67,4 +73,4 @@ export class RootBoxAdapter {
67
73
  }
68
74
  terminate() { __classPrivateFieldGet(this, _RootBoxAdapter_audioUnits, "f").terminate(); }
69
75
  }
70
- _RootBoxAdapter_context = new WeakMap(), _RootBoxAdapter_box = new WeakMap(), _RootBoxAdapter_audioUnits = new WeakMap(), _RootBoxAdapter_audioBusses = new WeakMap(), _RootBoxAdapter_pianoMode = new WeakMap();
76
+ _RootBoxAdapter_context = new WeakMap(), _RootBoxAdapter_box = new WeakMap(), _RootBoxAdapter_audioUnits = new WeakMap(), _RootBoxAdapter_audioBusses = new WeakMap(), _RootBoxAdapter_modulators = new WeakMap(), _RootBoxAdapter_pianoMode = new WeakMap();
@@ -1,22 +1,9 @@
1
- import { int, Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
2
- import { Pointers } from "@opendaw/studio-enums";
3
- import { Vertex } from "@opendaw/lib-box";
4
1
  import { AudioUnitBoxAdapter } from "./AudioUnitBoxAdapter";
5
- import { IndexedAdapterCollectionListener, IndexedBoxAdapterCollection } from "../IndexedBoxAdapterCollection";
6
- import { TrackBoxAdapter } from "../timeline/TrackBoxAdapter";
7
2
  import { BoxAdapters } from "../BoxAdapters";
8
- import { TrackType } from "../timeline/TrackType";
9
- export declare class AudioUnitTracks implements Terminable {
3
+ import { FieldParameterTracks } from "../timeline/ParameterTracks";
4
+ export declare class AudioUnitTracks extends FieldParameterTracks {
10
5
  #private;
11
6
  constructor(adapter: AudioUnitBoxAdapter, boxAdapters: BoxAdapters);
12
- create(type: TrackType, target: Vertex<Pointers.Automation | Pointers>, index?: int): void;
13
- controls(target: Vertex<Pointers.Automation | Pointers>): Option<TrackBoxAdapter>;
14
- delete(adapter: TrackBoxAdapter): void;
15
7
  get audioUnitBox(): AudioUnitBoxAdapter["box"];
16
- get collection(): IndexedBoxAdapterCollection<TrackBoxAdapter, Pointers.TrackCollection>;
17
- values(): ReadonlyArray<TrackBoxAdapter>;
18
- catchupAndSubscribe(listener: IndexedAdapterCollectionListener<TrackBoxAdapter>): Subscription;
19
- subscribeAnyChange(observer: Observer<void>): Subscription;
20
- terminate(): void;
21
8
  }
22
9
  //# sourceMappingURL=AudioUnitTracks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioUnitTracks.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAY,QAAQ,EAAE,MAAM,EAAoB,YAAY,EAAE,UAAU,EAAO,MAAM,kBAAkB,CAAA;AAClH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,gCAAgC,EAAE,2BAA2B,EAAC,MAAM,gCAAgC,CAAA;AAC5G,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAE/C,qBAAa,eAAgB,YAAW,UAAU;;gBAQlC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW;IAelE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAW1F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;IAKjF,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAUtC,IAAI,YAAY,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAA2B;IACzE,IAAI,UAAU,IAAI,2BAA2B,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAA0B;IAElH,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC;IAExC,mBAAmB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,eAAe,CAAC,GAAG,YAAY;IAI9F,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAE1D,SAAS,IAAI,IAAI;CAMpB"}
1
+ {"version":3,"file":"AudioUnitTracks.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioUnitTracks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAA;AAEhE,qBAAa,eAAgB,SAAQ,oBAAoB;;gBAGzC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW;IAKlE,IAAI,YAAY,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAA2B;CAC5E"}
@@ -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;
@@ -20,6 +20,8 @@ export interface EngineCommands extends Terminable {
20
20
  noteSignal(signal: NoteSignal): void;
21
21
  /** @internal */
22
22
  ignoreNoteRegion(uuid: UUID.Bytes): void;
23
+ /** @internal */
24
+ suspendAutomation(uuid: UUID.Bytes): void;
23
25
  scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
24
26
  scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
25
27
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAAE,CAAA;AAEnF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,gBAAgB;IAChB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,gBAAgB;IAChB,aAAa,IAAI,IAAI,CAAA;IACrB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,gBAAgB;IAChB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,gBAAgB;IAChB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC7D,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACnD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACtE,gBAAgB;IAChB,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAClD,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrD,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACpC,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,IAAI,IAAI,CAAA;CAChB"}
1
+ {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAAE,CAAA;AAEnF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,gBAAgB;IAChB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,gBAAgB;IAChB,aAAa,IAAI,IAAI,CAAA;IACrB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,gBAAgB;IAChB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,gBAAgB;IAChB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACzC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,gBAAgB;IAChB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC7D,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACnD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACtE,gBAAgB;IAChB,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAClD,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrD,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACpC,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,IAAI,IAAI,CAAA;CAChB"}
@@ -18,6 +18,7 @@ export declare class TrackBoxAdapter implements BoxAdapter {
18
18
  get targetName(): Option<string>;
19
19
  terminate(): void;
20
20
  get audioUnit(): AudioUnitBox;
21
+ get optAudioUnit(): Option<AudioUnitBox>;
21
22
  get target(): PointerField<Pointers.Automation>;
22
23
  get clips(): TrackClips;
23
24
  get regions(): TrackRegions;
@@ -1 +1 @@
1
- {"version":3,"file":"TrackBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TrackBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,YAAY,EAAO,UAAU,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAC,IAAI,EAAkB,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AAG3E,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,qBAAa,eAAgB,YAAW,UAAU;;gBAWlC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ;IAUtD,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;IAuBnF,IAAI,OAAO,IAAI,kBAAkB,CAAuB;IAExD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAoB3B;IAED,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAwB/B;IAgCD,SAAS;IAET,IAAI,SAAS,IAAI,YAAY,CAE5B;IAED,IAAI,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA0B;IAEzE,IAAI,KAAK,IAAI,UAAU,CAAqB;IAC5C,IAAI,OAAO,IAAI,YAAY,CAAuB;IAClD,IAAI,OAAO,IAAI,YAAY,CAA2B;IACtD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,IAAI,IAAI,SAAS,CAAmC;IACxD,IAAI,GAAG,IAAI,QAAQ,CAAmB;IACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAoC;IACxD,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAmC;IAE3D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,OAAO;IAgBlE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;IAiCvD,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,CAWtC;CAsCJ"}
1
+ {"version":3,"file":"TrackBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TrackBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,YAAY,EAAO,UAAU,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAC,IAAI,EAAkB,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAI3C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AAG3E,OAAO,EAAC,YAAY,EAAiB,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,qBAAa,eAAgB,YAAW,UAAU;;gBAWlC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ;IAUtD,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;IAuBnF,IAAI,OAAO,IAAI,kBAAkB,CAAuB;IAExD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAoB3B;IAED,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAE/B;IA0CD,SAAS;IAET,IAAI,SAAS,IAAI,YAAY,CAE5B;IAED,IAAI,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,CAGvC;IAED,IAAI,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACzE,IAAI,KAAK,IAAI,UAAU,CAAqB;IAC5C,IAAI,OAAO,IAAI,YAAY,CAAuB;IAClD,IAAI,OAAO,IAAI,YAAY,CAA2B;IACtD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,IAAI,IAAI,SAAS,CAAmC;IACxD,IAAI,GAAG,IAAI,QAAQ,CAAmB;IACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAoC;IACxD,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAmC;IAE3D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,OAAO;IAgBlE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;IAiCvD,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,CAWtC;CAsCJ"}
@@ -10,16 +10,18 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _TrackBoxAdapter_instances, _TrackBoxAdapter_context, _TrackBoxAdapter_box, _TrackBoxAdapter_terminator, _TrackBoxAdapter_clips, _TrackBoxAdapter_regions, _TrackBoxAdapter_listIndex, _TrackBoxAdapter_catchupAndSubscribeTargetName, _TrackBoxAdapter_catchupAndSubscribeTargetControlName, _TrackBoxAdapter_resolveOwnerDeviceBox;
13
- import { asInstanceOf, DefaultObservableValue, isInstanceOf, Option, panic, Terminable, Terminator } from "@opendaw/lib-std";
13
+ import { DefaultObservableValue, isInstanceOf, Option, panic, Terminable, Terminator } from "@opendaw/lib-std";
14
14
  import { StringField } from "@opendaw/lib-box";
15
15
  import { UpdateClockRate } from "@opendaw/lib-dsp";
16
16
  import { TrackClips } from "./TrackClips";
17
17
  import { TrackRegions } from "./TrackRegions";
18
18
  import { AudioUnitBoxAdapter } from "../audio-unit/AudioUnitBoxAdapter";
19
+ import { ParameterOwner } from "../ParameterOwner";
20
+ import { isModulatorBoxAdapter } from "../modulation/ModulatorBoxAdapter";
19
21
  import { TrackType } from "./TrackType";
20
22
  import { ValueClipBoxAdapter } from "./clip/ValueClipBoxAdapter";
21
23
  import { ValueRegionBoxAdapter } from "./region/ValueRegionBoxAdapter";
22
- import { AudioUnitBox } from "@opendaw/studio-boxes";
24
+ import { AudioUnitBox, ModulationBox } from "@opendaw/studio-boxes";
23
25
  import { Pointers } from "@opendaw/studio-enums";
24
26
  export class TrackBoxAdapter {
25
27
  constructor(context, box) {
@@ -84,33 +86,15 @@ export class TrackBoxAdapter {
84
86
  });
85
87
  }
86
88
  get targetName() {
87
- return __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex.flatMap(targetVertex => {
88
- const box = targetVertex.box;
89
- if (box instanceof AudioUnitBox) {
90
- const adapter = __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioUnitBoxAdapter);
91
- return adapter.input.label;
92
- }
93
- const optAdapter = __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").boxAdapters.optAdapter(box);
94
- if (optAdapter.nonEmpty()) {
95
- const adapter = optAdapter.unwrap();
96
- if ("labelField" in adapter && adapter.labelField instanceof StringField) {
97
- return Option.wrap(adapter.labelField.getValue());
98
- }
99
- }
100
- const ownerAdapter = __classPrivateFieldGet(this, _TrackBoxAdapter_instances, "m", _TrackBoxAdapter_resolveOwnerDeviceBox).call(this, box)
101
- .flatMap(owner => __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").boxAdapters.optAdapter(owner));
102
- if (ownerAdapter.nonEmpty()) {
103
- const adapter = ownerAdapter.unwrap();
104
- if ("labelField" in adapter && adapter.labelField instanceof StringField) {
105
- return Option.wrap(adapter.labelField.getValue());
106
- }
107
- }
108
- return Option.wrap(box.name);
109
- });
89
+ return __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex.flatMap(vertex => ParameterOwner.nameOf(__classPrivateFieldGet(this, _TrackBoxAdapter_context, "f"), vertex));
110
90
  }
111
91
  terminate() { __classPrivateFieldGet(this, _TrackBoxAdapter_terminator, "f").terminate(); }
112
92
  get audioUnit() {
113
- return asInstanceOf(__classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").tracks.targetVertex.unwrap("track has no audioUnit").box, AudioUnitBox);
93
+ return this.optAudioUnit.unwrap("track has no audioUnit");
94
+ }
95
+ get optAudioUnit() {
96
+ return __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").tracks.targetVertex
97
+ .flatMap(vertex => vertex.box instanceof AudioUnitBox ? Option.wrap(vertex.box) : Option.None);
114
98
  }
115
99
  get target() { return __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target; }
116
100
  get clips() { return __classPrivateFieldGet(this, _TrackBoxAdapter_clips, "f"); }
@@ -195,7 +179,17 @@ _TrackBoxAdapter_context = new WeakMap(), _TrackBoxAdapter_box = new WeakMap(),
195
179
  const targetVertex = __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex;
196
180
  if (targetVertex.nonEmpty()) {
197
181
  const box = targetVertex.unwrap().box;
198
- if (box instanceof AudioUnitBox) {
182
+ if (isInstanceOf(box, ModulationBox)) {
183
+ const vertex = targetVertex.unwrap();
184
+ const update = () => observer(ParameterOwner.nameOf(__classPrivateFieldGet(this, _TrackBoxAdapter_context, "f"), vertex));
185
+ update();
186
+ return box.source.targetVertex
187
+ .flatMap(source => __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").boxAdapters.optAdapter(source.box))
188
+ .mapOr(adapter => isModulatorBoxAdapter(adapter)
189
+ ? adapter.labelField.subscribe(update)
190
+ : Terminable.Empty, Terminable.Empty);
191
+ }
192
+ if (isInstanceOf(box, AudioUnitBox)) {
199
193
  const adapter = __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioUnitBoxAdapter);
200
194
  return adapter.input.catchupAndSubscribeLabelChange(option => observer(option));
201
195
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-adapters",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,19 +25,19 @@
25
25
  "pregenerate-all-boxes": "npm run build -w @opendaw/studio-forge-boxes && npm run build -w @opendaw/studio-boxes"
26
26
  },
27
27
  "dependencies": {
28
- "@opendaw/lib-box": "^0.0.92",
29
- "@opendaw/lib-dsp": "^0.0.91",
30
- "@opendaw/lib-fusion": "^0.0.101",
31
- "@opendaw/lib-midi": "^0.0.72",
32
- "@opendaw/lib-runtime": "^0.0.84",
33
- "@opendaw/lib-std": "^0.0.83",
34
- "@opendaw/studio-boxes": "^0.0.107",
35
- "@opendaw/studio-enums": "^0.1.0",
28
+ "@opendaw/lib-box": "^0.0.93",
29
+ "@opendaw/lib-dsp": "^0.0.92",
30
+ "@opendaw/lib-fusion": "^0.0.102",
31
+ "@opendaw/lib-midi": "^0.0.73",
32
+ "@opendaw/lib-runtime": "^0.0.85",
33
+ "@opendaw/lib-std": "^0.0.84",
34
+ "@opendaw/studio-boxes": "^0.0.108",
35
+ "@opendaw/studio-enums": "^0.1.1",
36
36
  "soundfont2": "^0.5.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@opendaw/eslint-config": "^0.0.28",
40
40
  "@opendaw/typescript-config": "^0.0.32"
41
41
  },
42
- "gitHead": "e1495bbd78b89e262bcd72141dde0344bc328326"
42
+ "gitHead": "b0c31f349354ad6ecbc5d4724b041eaae9181251"
43
43
  }