@opendaw/studio-adapters 0.3.0 → 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.
- package/dist/AutomatableParameterFieldAdapter.d.ts +9 -5
- package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
- package/dist/AutomatableParameterFieldAdapter.js +61 -40
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +12 -0
- package/dist/DeviceManualUrls.d.ts +4 -3
- package/dist/DeviceManualUrls.d.ts.map +1 -1
- package/dist/DeviceManualUrls.js +4 -3
- package/dist/ParameterFieldAdapters.d.ts +3 -7
- package/dist/ParameterFieldAdapters.d.ts.map +1 -1
- package/dist/ParameterFieldAdapters.js +2 -15
- package/dist/ParameterOwner.d.ts +10 -0
- package/dist/ParameterOwner.d.ts.map +1 -0
- package/dist/ParameterOwner.js +77 -0
- package/dist/RootBoxAdapter.d.ts +2 -0
- package/dist/RootBoxAdapter.d.ts.map +1 -1
- package/dist/RootBoxAdapter.js +8 -2
- package/dist/audio-unit/AudioUnitTracks.d.ts +2 -15
- package/dist/audio-unit/AudioUnitTracks.d.ts.map +1 -1
- package/dist/audio-unit/AudioUnitTracks.js +5 -59
- package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts +35 -0
- package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.d.ts.map +1 -0
- package/dist/devices/audio-effects/ConvolverDeviceBoxAdapter.js +60 -0
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/modulation/LfoModulatorBoxAdapter.d.ts +31 -0
- package/dist/modulation/LfoModulatorBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/LfoModulatorBoxAdapter.js +48 -0
- package/dist/modulation/MacroModulatorBoxAdapter.d.ts +11 -0
- package/dist/modulation/MacroModulatorBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/MacroModulatorBoxAdapter.js +21 -0
- package/dist/modulation/ModulationBoxAdapter.d.ts +27 -0
- package/dist/modulation/ModulationBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/ModulationBoxAdapter.js +72 -0
- package/dist/modulation/ModulatorBoxAdapter.d.ts +35 -0
- package/dist/modulation/ModulatorBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/ModulatorBoxAdapter.js +69 -0
- package/dist/modulation/Modulators.d.ts +25 -0
- package/dist/modulation/Modulators.d.ts.map +1 -0
- package/dist/modulation/Modulators.js +110 -0
- package/dist/modulation/RandomModulatorBoxAdapter.d.ts +22 -0
- package/dist/modulation/RandomModulatorBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/RandomModulatorBoxAdapter.js +60 -0
- package/dist/modulation/StepsModulatorBoxAdapter.d.ts +40 -0
- package/dist/modulation/StepsModulatorBoxAdapter.d.ts.map +1 -0
- package/dist/modulation/StepsModulatorBoxAdapter.js +99 -0
- package/dist/protocols.d.ts +2 -0
- package/dist/protocols.d.ts.map +1 -1
- package/dist/timeline/ParameterTracks.d.ts +30 -0
- package/dist/timeline/ParameterTracks.d.ts.map +1 -0
- package/dist/timeline/ParameterTracks.js +75 -0
- package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +21 -27
- 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 {
|
|
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:
|
|
22
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,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,EAAE,KAAK,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AAC3H,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAa,aAAa,EAAW,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAoBlG,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;IAuE1B,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,OAAO,IAAI,kBAAkB,CAAuB;IACxD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAGnE,IAAI,gBAAgB,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAEjD;IACD,IAAI,WAAW,IAAI,aAAa,CAAC,aAAa,CAAC,CAG9C;IAED,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY;IAIjE,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,UAAU;IAMnD,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC;IAMpC,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,cAAc,IAAI,IAAI;IAEtB,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;IAGvB,sBAAsB,IAAI,SAAS;IAInC,uBAAuB,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,aAAa,IAAI,QAAQ,CAAC,YAAY,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYjC,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAKpB"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/BoxAdapters.js
CHANGED
|
@@ -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),
|
|
@@ -6,13 +6,14 @@ export declare namespace DeviceManualUrls {
|
|
|
6
6
|
const Velocity = "manuals/devices/midi/velocity";
|
|
7
7
|
const Zeitgeist = "manuals/devices/midi/zeitgeist";
|
|
8
8
|
const Autotune = "manuals/devices/audio/autotune";
|
|
9
|
-
const StereoTool = "manuals/devices/audio/
|
|
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";
|
|
14
15
|
const Gate = "manuals/devices/audio/gate";
|
|
15
|
-
const Reverb = "manuals/devices/audio/
|
|
16
|
+
const Reverb = "manuals/devices/audio/reverb";
|
|
16
17
|
const Crusher = "manuals/devices/audio/crusher";
|
|
17
18
|
const Fold = "manuals/devices/audio/fold";
|
|
18
19
|
const Tidal = "manuals/devices/audio/tidal";
|
|
@@ -30,7 +31,7 @@ export declare namespace DeviceManualUrls {
|
|
|
30
31
|
const Playfield = "manuals/devices/instruments/playfield";
|
|
31
32
|
const Vaporisateur = "manuals/devices/instruments/vaporisateur";
|
|
32
33
|
const Neon = "manuals/devices/instruments/neon";
|
|
33
|
-
const MIDIOutput = "manuals/devices/instruments/
|
|
34
|
+
const MIDIOutput = "manuals/devices/instruments/midioutput";
|
|
34
35
|
const Soundfont = "manuals/devices/instruments/soundfont";
|
|
35
36
|
const FrequencySplit = "manuals/devices/audio/frequency-split";
|
|
36
37
|
}
|
|
@@ -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,
|
|
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"}
|
package/dist/DeviceManualUrls.js
CHANGED
|
@@ -10,13 +10,14 @@ export var DeviceManualUrls;
|
|
|
10
10
|
DeviceManualUrls.Zeitgeist = "manuals/devices/midi/zeitgeist";
|
|
11
11
|
// Audio Effects
|
|
12
12
|
DeviceManualUrls.Autotune = "manuals/devices/audio/autotune";
|
|
13
|
-
DeviceManualUrls.StereoTool = "manuals/devices/audio/
|
|
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";
|
|
18
19
|
DeviceManualUrls.Gate = "manuals/devices/audio/gate";
|
|
19
|
-
DeviceManualUrls.Reverb = "manuals/devices/audio/
|
|
20
|
+
DeviceManualUrls.Reverb = "manuals/devices/audio/reverb";
|
|
20
21
|
DeviceManualUrls.Crusher = "manuals/devices/audio/crusher";
|
|
21
22
|
DeviceManualUrls.Fold = "manuals/devices/audio/fold";
|
|
22
23
|
DeviceManualUrls.Tidal = "manuals/devices/audio/tidal";
|
|
@@ -35,7 +36,7 @@ export var DeviceManualUrls;
|
|
|
35
36
|
DeviceManualUrls.Playfield = "manuals/devices/instruments/playfield";
|
|
36
37
|
DeviceManualUrls.Vaporisateur = "manuals/devices/instruments/vaporisateur";
|
|
37
38
|
DeviceManualUrls.Neon = "manuals/devices/instruments/neon";
|
|
38
|
-
DeviceManualUrls.MIDIOutput = "manuals/devices/instruments/
|
|
39
|
+
DeviceManualUrls.MIDIOutput = "manuals/devices/instruments/midioutput";
|
|
39
40
|
DeviceManualUrls.Soundfont = "manuals/devices/instruments/soundfont";
|
|
40
41
|
DeviceManualUrls.FrequencySplit = "manuals/devices/audio/frequency-split";
|
|
41
42
|
})(DeviceManualUrls || (DeviceManualUrls = {}));
|
|
@@ -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 {
|
|
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:
|
|
17
|
-
getTracks(address: Address): Option<
|
|
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,
|
|
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,
|
|
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(),
|
|
49
|
+
_ParameterFieldAdapters_set = new WeakMap(), _ParameterFieldAdapters_writeNotifier = new WeakMap(), _ParameterFieldAdapters_tracksMap = new WeakMap(), _ParameterFieldAdapters_modeMap = new WeakMap();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Vertex } from "@opendaw/lib-box";
|
|
2
|
+
import { Observer, Option, Subscription } from "@opendaw/lib-std";
|
|
3
|
+
import { BoxAdaptersContext } from "./BoxAdaptersContext";
|
|
4
|
+
import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
|
|
5
|
+
export declare namespace ParameterOwner {
|
|
6
|
+
const nameOf: (context: BoxAdaptersContext, vertex: Vertex) => Option<string>;
|
|
7
|
+
const catchupAndSubscribeName: (context: BoxAdaptersContext, vertex: Vertex, observer: Observer<string>) => Subscription;
|
|
8
|
+
const audioUnitOf: (context: BoxAdaptersContext, vertex: Vertex) => Option<AudioUnitBoxAdapter>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ParameterOwner.d.ts.map
|
|
@@ -0,0 +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,CAYnG,CAAA;CAyBJ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { StringField } from "@opendaw/lib-box";
|
|
2
|
+
import { Option, Terminable } from "@opendaw/lib-std";
|
|
3
|
+
import { Pointers } from "@opendaw/studio-enums";
|
|
4
|
+
import { AudioUnitBox, ModulationBox } from "@opendaw/studio-boxes";
|
|
5
|
+
import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
|
|
6
|
+
import { ModulationBoxAdapter } from "./modulation/ModulationBoxAdapter";
|
|
7
|
+
import { Devices } from "./DeviceAdapter";
|
|
8
|
+
export var ParameterOwner;
|
|
9
|
+
(function (ParameterOwner) {
|
|
10
|
+
/// A scriptable device's dynamic parameter lives in its own child box, so the walk falls back to the
|
|
11
|
+
/// device that owns it.
|
|
12
|
+
ParameterOwner.nameOf = (context, vertex) => {
|
|
13
|
+
const box = vertex.box;
|
|
14
|
+
if (box instanceof AudioUnitBox) {
|
|
15
|
+
return context.boxAdapters.adapterFor(box, AudioUnitBoxAdapter).input.label;
|
|
16
|
+
}
|
|
17
|
+
if (box instanceof ModulationBox) {
|
|
18
|
+
const adapter = context.boxAdapters.adapterFor(box, ModulationBoxAdapter);
|
|
19
|
+
return Option.wrap(`${adapter.source.label} \u2192 ${adapter.targetOwner.unwrapOrElse("")} ${adapter.target.mapOr(parameter => parameter.name, "")}`.trim());
|
|
20
|
+
}
|
|
21
|
+
const own = labelOf(context, box);
|
|
22
|
+
if (own.nonEmpty()) {
|
|
23
|
+
return own;
|
|
24
|
+
}
|
|
25
|
+
const owner = resolveOwnerDeviceBox(box).flatMap(owner => labelOf(context, owner));
|
|
26
|
+
return owner.nonEmpty() ? owner : Option.wrap(box.name);
|
|
27
|
+
};
|
|
28
|
+
/// The same name as `nameOf`, but following the rename: a view stays in sync when the device (or the
|
|
29
|
+
/// audio unit's instrument) is relabelled.
|
|
30
|
+
ParameterOwner.catchupAndSubscribeName = (context, vertex, observer) => {
|
|
31
|
+
const box = vertex.box;
|
|
32
|
+
if (box instanceof AudioUnitBox) {
|
|
33
|
+
return context.boxAdapters.adapterFor(box, AudioUnitBoxAdapter).input
|
|
34
|
+
.catchupAndSubscribeLabelChange(label => observer(label.unwrapOrElse("")));
|
|
35
|
+
}
|
|
36
|
+
const own = labelFieldOf(context, box);
|
|
37
|
+
const field = own.nonEmpty()
|
|
38
|
+
? own
|
|
39
|
+
: resolveOwnerDeviceBox(box).flatMap(owner => labelFieldOf(context, owner));
|
|
40
|
+
if (field.isEmpty()) {
|
|
41
|
+
observer(ParameterOwner.nameOf(context, vertex).unwrapOrElse(box.name));
|
|
42
|
+
return Terminable.Empty;
|
|
43
|
+
}
|
|
44
|
+
return field.unwrap().catchupAndSubscribe(field => observer(field.getValue()));
|
|
45
|
+
};
|
|
46
|
+
ParameterOwner.audioUnitOf = (context, vertex) => {
|
|
47
|
+
const box = vertex.box;
|
|
48
|
+
if (box instanceof AudioUnitBox) {
|
|
49
|
+
return Option.wrap(context.boxAdapters.adapterFor(box, AudioUnitBoxAdapter));
|
|
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
|
+
}
|
|
55
|
+
const own = unitOf(context, box);
|
|
56
|
+
if (own.nonEmpty()) {
|
|
57
|
+
return own;
|
|
58
|
+
}
|
|
59
|
+
return resolveOwnerDeviceBox(box).flatMap(owner => unitOf(context, owner));
|
|
60
|
+
};
|
|
61
|
+
const unitOf = (context, box) => context.boxAdapters.optAdapter(box)
|
|
62
|
+
.flatMap(adapter => Devices.isAny(adapter)
|
|
63
|
+
? Option.wrap(adapter.audioUnitBoxAdapter())
|
|
64
|
+
: Option.None);
|
|
65
|
+
const labelOf = (context, box) => labelFieldOf(context, box).map(field => field.getValue());
|
|
66
|
+
const labelFieldOf = (context, box) => context.boxAdapters.optAdapter(box).flatMap(adapter => "labelField" in adapter && adapter.labelField instanceof StringField
|
|
67
|
+
? Option.wrap(adapter.labelField)
|
|
68
|
+
: Option.None);
|
|
69
|
+
const resolveOwnerDeviceBox = (box) => {
|
|
70
|
+
for (const [pointer] of box.outgoingEdges()) {
|
|
71
|
+
if (pointer.pointerType === Pointers.Parameter) {
|
|
72
|
+
return pointer.targetVertex.map(vertex => vertex.box);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return Option.None;
|
|
76
|
+
};
|
|
77
|
+
})(ParameterOwner || (ParameterOwner = {}));
|
package/dist/RootBoxAdapter.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/RootBoxAdapter.js
CHANGED
|
@@ -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();
|