@opendaw/studio-adapters 0.0.100 → 0.0.102
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 +1 -1
- package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
- package/dist/AutomatableParameterFieldAdapter.js +6 -4
- package/dist/NoteStreamReceiver.d.ts +2 -1
- package/dist/NoteStreamReceiver.d.ts.map +1 -1
- package/dist/NoteStreamReceiver.js +25 -13
- package/dist/ParameterAdapterSet.d.ts +1 -1
- package/dist/ParameterAdapterSet.d.ts.map +1 -1
- package/dist/ParameterAdapterSet.js +2 -2
- package/dist/ScriptCompiler.d.ts +5 -7
- package/dist/ScriptCompiler.d.ts.map +1 -1
- package/dist/ScriptCompiler.js +8 -6
- package/dist/{ScriptParamDeclaration.d.ts → ScriptDeclaration.d.ts} +20 -3
- package/dist/ScriptDeclaration.d.ts.map +1 -0
- package/dist/{ScriptParamDeclaration.js → ScriptDeclaration.js} +66 -19
- package/dist/devices/audio-effects/WerkstattDeviceBoxAdapter.js +2 -2
- package/dist/devices/instruments/ApparatDeviceBoxAdapter.js +2 -2
- package/dist/devices/midi-effects/SpielwerkDeviceBoxAdapter.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/preset/PresetDecoder.js +1 -1
- package/dist/preset/PresetEncoder.js +1 -1
- package/dist/project/ProjectSkeleton.d.ts +1 -1
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +5 -6
- package/package.json +9 -9
- package/dist/ScriptParamDeclaration.d.ts.map +0 -1
|
@@ -7,7 +7,7 @@ import { AudioUnitTracks } from "./audio-unit/AudioUnitTracks";
|
|
|
7
7
|
import { BoxAdaptersContext } from "./BoxAdaptersContext";
|
|
8
8
|
export declare class AutomatableParameterFieldAdapter<T extends PrimitiveValues = any> implements Parameter<T>, Terminable {
|
|
9
9
|
#private;
|
|
10
|
-
constructor(context: BoxAdaptersContext, field: PrimitiveField<T, any>, valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>, name: string, anchor?: unitValue);
|
|
10
|
+
constructor(context: BoxAdaptersContext, field: PrimitiveField<T, any>, valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>, name: string, anchor?: unitValue, resetValue?: T);
|
|
11
11
|
registerMidiControl(): Terminable;
|
|
12
12
|
get field(): PrimitiveField<T, Pointers.Automation>;
|
|
13
13
|
get valueMapping(): ValueMapping<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,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;;
|
|
1
|
+
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,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,EACZ,MAAM,CAAC,EAAE,SAAS,EAClB,UAAU,CAAC,EAAE,CAAC;IA2D1B,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,CAAoB;IACtC,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,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"}
|
|
@@ -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 _AutomatableParameterFieldAdapter_context, _AutomatableParameterFieldAdapter_field, _AutomatableParameterFieldAdapter_name, _AutomatableParameterFieldAdapter_anchor, _AutomatableParameterFieldAdapter_terminator, _AutomatableParameterFieldAdapter_valueChangeNotifier, _AutomatableParameterFieldAdapter_controlSource, _AutomatableParameterFieldAdapter_valueMapping, _AutomatableParameterFieldAdapter_stringMapping, _AutomatableParameterFieldAdapter_trackBoxAdapter, _AutomatableParameterFieldAdapter_automationHandle, _AutomatableParameterFieldAdapter_controlledValue, _AutomatableParameterFieldAdapter_midiControlled;
|
|
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
13
|
import { assert, clamp, Listeners, Notifier, Option, panic, Terminator } from "@opendaw/lib-std";
|
|
14
14
|
import { Pointers } from "@opendaw/studio-enums";
|
|
15
15
|
import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
|
|
@@ -20,11 +20,12 @@ const ExternalControlTypes = [
|
|
|
20
20
|
Pointers.ParameterController
|
|
21
21
|
];
|
|
22
22
|
export class AutomatableParameterFieldAdapter {
|
|
23
|
-
constructor(context, field, valueMapping, stringMapping, name, anchor) {
|
|
23
|
+
constructor(context, field, valueMapping, stringMapping, name, anchor, resetValue) {
|
|
24
24
|
_AutomatableParameterFieldAdapter_context.set(this, void 0);
|
|
25
25
|
_AutomatableParameterFieldAdapter_field.set(this, void 0);
|
|
26
26
|
_AutomatableParameterFieldAdapter_name.set(this, void 0);
|
|
27
27
|
_AutomatableParameterFieldAdapter_anchor.set(this, void 0);
|
|
28
|
+
_AutomatableParameterFieldAdapter_resetValue.set(this, void 0);
|
|
28
29
|
_AutomatableParameterFieldAdapter_terminator.set(this, new Terminator());
|
|
29
30
|
_AutomatableParameterFieldAdapter_valueChangeNotifier.set(this, void 0);
|
|
30
31
|
_AutomatableParameterFieldAdapter_controlSource.set(this, void 0);
|
|
@@ -40,6 +41,7 @@ export class AutomatableParameterFieldAdapter {
|
|
|
40
41
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_stringMapping, stringMapping, "f");
|
|
41
42
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_name, name, "f");
|
|
42
43
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_anchor, anchor ?? 0.0, "f");
|
|
44
|
+
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_resetValue, Option.wrap(resetValue), "f");
|
|
43
45
|
__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_terminator, "f").own(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.register(this));
|
|
44
46
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_terminator, "f").own(new Notifier()), "f");
|
|
45
47
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_controlSource, new Listeners(), "f");
|
|
@@ -174,14 +176,14 @@ export class AutomatableParameterFieldAdapter {
|
|
|
174
176
|
console.debug(`Unknown text input: '${result.value}'`);
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
|
-
reset() { this.setValue(__classPrivateFieldGet(this,
|
|
179
|
+
reset() { this.setValue(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_resetValue, "f").unwrapOrElse(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").initValue)); }
|
|
178
180
|
terminate() {
|
|
179
181
|
__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_automationHandle, "f").ifSome(handle => handle.terminate());
|
|
180
182
|
__classPrivateFieldSet(this, _AutomatableParameterFieldAdapter_automationHandle, Option.None, "f");
|
|
181
183
|
__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_terminator, "f").terminate();
|
|
182
184
|
}
|
|
183
185
|
}
|
|
184
|
-
_AutomatableParameterFieldAdapter_context = new WeakMap(), _AutomatableParameterFieldAdapter_field = new WeakMap(), _AutomatableParameterFieldAdapter_name = new WeakMap(), _AutomatableParameterFieldAdapter_anchor = 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();
|
|
186
|
+
_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();
|
|
185
187
|
const mapPointerToControlSource = (pointer) => {
|
|
186
188
|
switch (pointer) {
|
|
187
189
|
case Pointers.Automation:
|
|
@@ -3,7 +3,8 @@ import { Address } from "@opendaw/lib-box";
|
|
|
3
3
|
import { LiveStreamReceiver } from "@opendaw/lib-fusion";
|
|
4
4
|
export declare class NoteStreamReceiver implements Terminable {
|
|
5
5
|
#private;
|
|
6
|
-
constructor(receiver: LiveStreamReceiver, address
|
|
6
|
+
constructor(receiver: LiveStreamReceiver, address?: Address);
|
|
7
|
+
bind(receiver: LiveStreamReceiver, address: Address): Terminable;
|
|
7
8
|
isNoteOn(note: byte): boolean;
|
|
8
9
|
isAnyNoteOn(): boolean;
|
|
9
10
|
subscribe(observer: Observer<this>): Subscription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoteStreamReceiver.d.ts","sourceRoot":"","sources":["../src/NoteStreamReceiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,IAAI,EAAY,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AACrG,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAEtD,qBAAa,kBAAmB,YAAW,UAAU;;
|
|
1
|
+
{"version":3,"file":"NoteStreamReceiver.d.ts","sourceRoot":"","sources":["../src/NoteStreamReceiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,IAAI,EAAY,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AACrG,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAEtD,qBAAa,kBAAmB,YAAW,UAAU;;gBAOrC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO;IAQ3D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;IAQhE,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAC7B,WAAW,IAAI,OAAO;IAEtB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEjD,SAAS,IAAI,IAAI;CAYpB"}
|
|
@@ -9,28 +9,40 @@ 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 _NoteStreamReceiver_terminator,
|
|
13
|
-
import { Bits, Notifier, Terminator } from "@opendaw/lib-std";
|
|
12
|
+
var _NoteStreamReceiver_instances, _NoteStreamReceiver_terminator, _NoteStreamReceiver_bits, _NoteStreamReceiver_notifier, _NoteStreamReceiver_binding, _NoteStreamReceiver_subscribe;
|
|
13
|
+
import { Bits, Notifier, Terminable, Terminator } from "@opendaw/lib-std";
|
|
14
14
|
export class NoteStreamReceiver {
|
|
15
15
|
constructor(receiver, address) {
|
|
16
|
+
_NoteStreamReceiver_instances.add(this);
|
|
16
17
|
_NoteStreamReceiver_terminator.set(this, new Terminator());
|
|
17
|
-
_NoteStreamReceiver_receiver.set(this, void 0);
|
|
18
|
-
_NoteStreamReceiver_address.set(this, void 0);
|
|
19
18
|
_NoteStreamReceiver_bits.set(this, void 0);
|
|
20
19
|
_NoteStreamReceiver_notifier.set(this, void 0);
|
|
21
|
-
|
|
22
|
-
__classPrivateFieldSet(this, _NoteStreamReceiver_address, address, "f");
|
|
20
|
+
_NoteStreamReceiver_binding.set(this, Terminable.Empty);
|
|
23
21
|
__classPrivateFieldSet(this, _NoteStreamReceiver_bits, new Bits(128), "f");
|
|
24
22
|
__classPrivateFieldSet(this, _NoteStreamReceiver_notifier, new Notifier(), "f");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
if (address !== undefined) {
|
|
24
|
+
__classPrivateFieldSet(this, _NoteStreamReceiver_binding, __classPrivateFieldGet(this, _NoteStreamReceiver_instances, "m", _NoteStreamReceiver_subscribe).call(this, receiver, address), "f");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
bind(receiver, address) {
|
|
28
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_binding, "f").terminate();
|
|
29
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_bits, "f").clear();
|
|
30
|
+
__classPrivateFieldSet(this, _NoteStreamReceiver_binding, __classPrivateFieldGet(this, _NoteStreamReceiver_instances, "m", _NoteStreamReceiver_subscribe).call(this, receiver, address), "f");
|
|
31
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_notifier, "f").notify(this);
|
|
32
|
+
return __classPrivateFieldGet(this, _NoteStreamReceiver_binding, "f");
|
|
30
33
|
}
|
|
31
34
|
isNoteOn(note) { return __classPrivateFieldGet(this, _NoteStreamReceiver_bits, "f").getBit(note); }
|
|
32
35
|
isAnyNoteOn() { return __classPrivateFieldGet(this, _NoteStreamReceiver_bits, "f").nonEmpty(); }
|
|
33
36
|
subscribe(observer) { return __classPrivateFieldGet(this, _NoteStreamReceiver_notifier, "f").subscribe(observer); }
|
|
34
|
-
terminate() {
|
|
37
|
+
terminate() {
|
|
38
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_binding, "f").terminate();
|
|
39
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_terminator, "f").terminate();
|
|
40
|
+
}
|
|
35
41
|
}
|
|
36
|
-
_NoteStreamReceiver_terminator = new WeakMap(),
|
|
42
|
+
_NoteStreamReceiver_terminator = new WeakMap(), _NoteStreamReceiver_bits = new WeakMap(), _NoteStreamReceiver_notifier = new WeakMap(), _NoteStreamReceiver_binding = new WeakMap(), _NoteStreamReceiver_instances = new WeakSet(), _NoteStreamReceiver_subscribe = function _NoteStreamReceiver_subscribe(receiver, address) {
|
|
43
|
+
return receiver.subscribeIntegers(address, (array) => {
|
|
44
|
+
if (__classPrivateFieldGet(this, _NoteStreamReceiver_bits, "f").replace(array.buffer)) {
|
|
45
|
+
__classPrivateFieldGet(this, _NoteStreamReceiver_notifier, "f").notify(this);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
@@ -8,7 +8,7 @@ export declare class ParameterAdapterSet implements Terminable {
|
|
|
8
8
|
terminate(): void;
|
|
9
9
|
parameters(): ReadonlyArray<AutomatableParameterFieldAdapter>;
|
|
10
10
|
parameterAt(address: Address): AutomatableParameterFieldAdapter;
|
|
11
|
-
createParameter<T extends PrimitiveValues>(field: PrimitiveField<T, PointerTypes>, valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>, name: string, anchor?: unitValue): AutomatableParameterFieldAdapter<T>;
|
|
11
|
+
createParameter<T extends PrimitiveValues>(field: PrimitiveField<T, PointerTypes>, valueMapping: ValueMapping<T>, stringMapping: StringMapping<T>, name: string, anchor?: unitValue, resetValue?: T): AutomatableParameterFieldAdapter<T>;
|
|
12
12
|
removeParameter<T extends PrimitiveValues>(address: Address): AutomatableParameterFieldAdapter<T>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=ParameterAdapterSet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterAdapterSet.d.ts","sourceRoot":"","sources":["../src/ParameterAdapterSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AACtG,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAEvD,qBAAa,mBAAoB,YAAW,UAAU;;gBAItC,OAAO,EAAE,kBAAkB;IAKvC,SAAS,IAAI,IAAI;IAKjB,UAAU,IAAI,aAAa,CAAC,gCAAgC,CAAC;IAC7D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IAK/D,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,EACtC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,GAAG,gCAAgC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ParameterAdapterSet.d.ts","sourceRoot":"","sources":["../src/ParameterAdapterSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AACtG,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAEvD,qBAAa,mBAAoB,YAAW,UAAU;;gBAItC,OAAO,EAAE,kBAAkB;IAKvC,SAAS,IAAI,IAAI;IAKjB,UAAU,IAAI,aAAa,CAAC,gCAAgC,CAAC;IAC7D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IAK/D,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,EACtC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,EAClB,UAAU,CAAC,EAAE,CAAC,GAAG,gCAAgC,CAAC,CAAC,CAAC;IAQ/F,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,gCAAgC,CAAC,CAAC,CAAC;CAGpG"}
|
|
@@ -28,8 +28,8 @@ export class ParameterAdapterSet {
|
|
|
28
28
|
parameterAt(address) {
|
|
29
29
|
return __classPrivateFieldGet(this, _ParameterAdapterSet_parameters, "f").getOrThrow(address, () => new Error(`No ParameterAdapter found at [${address.toString()}]`));
|
|
30
30
|
}
|
|
31
|
-
createParameter(field, valueMapping, stringMapping, name, anchor) {
|
|
32
|
-
const adapter = new AutomatableParameterFieldAdapter(__classPrivateFieldGet(this, _ParameterAdapterSet_context, "f"), field, valueMapping, stringMapping, name, anchor);
|
|
31
|
+
createParameter(field, valueMapping, stringMapping, name, anchor, resetValue) {
|
|
32
|
+
const adapter = new AutomatableParameterFieldAdapter(__classPrivateFieldGet(this, _ParameterAdapterSet_context, "f"), field, valueMapping, stringMapping, name, anchor, resetValue);
|
|
33
33
|
const added = __classPrivateFieldGet(this, _ParameterAdapterSet_parameters, "f").add(adapter);
|
|
34
34
|
assert(added, `Could not add adapter for ${field}`);
|
|
35
35
|
return adapter;
|
package/dist/ScriptCompiler.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { Editing
|
|
1
|
+
import { Editing } from "@opendaw/lib-std";
|
|
2
2
|
import { BoxGraph, Field, StringField } from "@opendaw/lib-box";
|
|
3
3
|
import { Pointers } from "@opendaw/studio-enums";
|
|
4
|
+
import { DeviceBox } from "./DeviceBox";
|
|
4
5
|
export declare namespace ScriptCompiler {
|
|
5
|
-
interface DeviceBox {
|
|
6
|
+
interface ScriptDeviceBox extends DeviceBox {
|
|
6
7
|
readonly graph: BoxGraph;
|
|
7
|
-
readonly address: {
|
|
8
|
-
readonly uuid: UUID.Bytes;
|
|
9
|
-
};
|
|
10
8
|
readonly code: StringField;
|
|
11
9
|
readonly parameters: Field<Pointers.Parameter>;
|
|
12
10
|
readonly samples: Field<Pointers.Sample>;
|
|
@@ -18,8 +16,8 @@ export declare namespace ScriptCompiler {
|
|
|
18
16
|
};
|
|
19
17
|
const create: (config: Config) => {
|
|
20
18
|
stripHeader: (source: string) => string;
|
|
21
|
-
load: (audioContext: BaseAudioContext, deviceBox:
|
|
22
|
-
compile: (audioContext: BaseAudioContext, editing: Editing, deviceBox:
|
|
19
|
+
load: (audioContext: BaseAudioContext, deviceBox: ScriptDeviceBox) => Promise<void>;
|
|
20
|
+
compile: (audioContext: BaseAudioContext, editing: Editing, deviceBox: ScriptDeviceBox, source: string, append?: boolean) => Promise<void>;
|
|
23
21
|
};
|
|
24
22
|
}
|
|
25
23
|
//# sourceMappingURL=ScriptCompiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptCompiler.d.ts","sourceRoot":"","sources":["../src/ScriptCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,
|
|
1
|
+
{"version":3,"file":"ScriptCompiler.d.ts","sourceRoot":"","sources":["../src/ScriptCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAkB,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAmIrC,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,eAAgB,SAAQ,SAAS;QAC9C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;QACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;QAC1B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC3C;IAED,KAAY,MAAM,GAAG;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAChC,CAAA;IAEM,MAAM,MAAM,GAAI,QAAQ,MAAM;8BAMP,MAAM,KAAG,MAAM;6BACV,gBAAgB,aAAa,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;gCAYzD,gBAAgB,WACrB,OAAO,aACL,eAAe,UAClB,MAAM,WACN,OAAO,KAAW,OAAO,CAAC,IAAI,CAAC;KA2B9D,CAAA;CACJ"}
|
package/dist/ScriptCompiler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { asInstanceOf, isDefined, UUID } from "@opendaw/lib-std";
|
|
2
2
|
import { WerkstattParameterBox, WerkstattSampleBox } from "@opendaw/studio-boxes";
|
|
3
|
-
import {
|
|
3
|
+
import { ScriptDeclaration } from "./ScriptDeclaration";
|
|
4
4
|
const COMPILER_VERSION = 1;
|
|
5
5
|
const createHeaderPattern = (tag) => new RegExp(`^// @${tag} (\\w+) (\\d+) (\\d+)\n`);
|
|
6
6
|
const parseHeader = (source, pattern) => {
|
|
@@ -42,7 +42,7 @@ const reconcileParameters = (deviceBox, declared, order) => {
|
|
|
42
42
|
const unifiedIndex = order.get(declaration.label) ?? 0;
|
|
43
43
|
const existing = existingByLabel.get(declaration.label);
|
|
44
44
|
const previous = previousDeclarations.get(declaration.label);
|
|
45
|
-
const declarationChanged = !isDefined(previous) || !
|
|
45
|
+
const declarationChanged = !isDefined(previous) || !ScriptDeclaration.isEqual(previous, declaration);
|
|
46
46
|
if (isDefined(existing) && declarationChanged) {
|
|
47
47
|
existing.delete();
|
|
48
48
|
existingByLabel.delete(declaration.label);
|
|
@@ -147,7 +147,7 @@ export var ScriptCompiler;
|
|
|
147
147
|
if (update === 0) {
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
|
-
const params =
|
|
150
|
+
const params = ScriptDeclaration.parseParams(userCode);
|
|
151
151
|
const declMap = new Map();
|
|
152
152
|
for (const declaration of params) {
|
|
153
153
|
declMap.set(declaration.label, declaration);
|
|
@@ -165,13 +165,15 @@ export var ScriptCompiler;
|
|
|
165
165
|
const newUpdate = maxUpdate + 1;
|
|
166
166
|
maxUpdate = newUpdate;
|
|
167
167
|
const uuid = UUID.toString(deviceBox.address.uuid);
|
|
168
|
-
const params =
|
|
169
|
-
const samples =
|
|
170
|
-
const order =
|
|
168
|
+
const params = ScriptDeclaration.parseParams(userCode);
|
|
169
|
+
const samples = ScriptDeclaration.parseSamples(userCode);
|
|
170
|
+
const order = ScriptDeclaration.parseDeclarationOrder(userCode);
|
|
171
171
|
const wrappedCode = wrapCode(config, uuid, newUpdate, userCode);
|
|
172
172
|
validateCode(wrappedCode);
|
|
173
|
+
const label = ScriptDeclaration.parseLabel(userCode);
|
|
173
174
|
const modifier = () => {
|
|
174
175
|
deviceBox.code.setValue(createHeader(newUpdate) + userCode);
|
|
176
|
+
label.ifSome(name => deviceBox.label.setValue(name));
|
|
175
177
|
reconcileParameters(deviceBox, params, order);
|
|
176
178
|
reconcileSamples(deviceBox, samples, order);
|
|
177
179
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
|
|
1
|
+
import { Nullable, Observable, Option, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
|
|
2
2
|
import { Field, StringField } from "@opendaw/lib-box";
|
|
3
3
|
import { Pointers } from "@opendaw/studio-enums";
|
|
4
4
|
import { ParameterAdapterSet } from "./ParameterAdapterSet";
|
|
@@ -14,11 +14,28 @@ export interface ParamDeclaration {
|
|
|
14
14
|
export interface SampleDeclaration {
|
|
15
15
|
readonly label: string;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
17
|
+
export interface GroupDeclaration {
|
|
18
|
+
readonly label: string;
|
|
19
|
+
readonly color: string;
|
|
20
|
+
}
|
|
21
|
+
export type DeclarationItem = {
|
|
22
|
+
readonly type: "param";
|
|
23
|
+
readonly declaration: ParamDeclaration;
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: "sample";
|
|
26
|
+
readonly declaration: SampleDeclaration;
|
|
27
|
+
};
|
|
28
|
+
export interface DeclarationSection {
|
|
29
|
+
readonly group: Nullable<GroupDeclaration>;
|
|
30
|
+
readonly items: ReadonlyArray<DeclarationItem>;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace ScriptDeclaration {
|
|
18
33
|
export const isEqual: (a: ParamDeclaration, b: ParamDeclaration) => boolean;
|
|
34
|
+
export const parseLabel: (code: string) => Option<string>;
|
|
19
35
|
export const parseParams: (code: string) => ReadonlyArray<ParamDeclaration>;
|
|
20
36
|
export const parseSamples: (code: string) => ReadonlyArray<SampleDeclaration>;
|
|
21
37
|
export const parseDeclarationOrder: (code: string) => Map<string, number>;
|
|
38
|
+
export const parseGroups: (code: string) => ReadonlyArray<DeclarationSection>;
|
|
22
39
|
export const resolveValueMapping: (declaration: ParamDeclaration) => ValueMapping<number>;
|
|
23
40
|
export const resolveStringMapping: (declaration: ParamDeclaration) => StringMapping<number>;
|
|
24
41
|
type ParamMapping = {
|
|
@@ -33,4 +50,4 @@ export declare namespace ScriptParamDeclaration {
|
|
|
33
50
|
export const subscribeScriptParams: (parametric: ParameterAdapterSet, codeField: StringField, parametersField: Field<Pointers.Parameter>) => ScriptParamsBinding;
|
|
34
51
|
export {};
|
|
35
52
|
}
|
|
36
|
-
//# sourceMappingURL=
|
|
53
|
+
//# sourceMappingURL=ScriptDeclaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptDeclaration.d.ts","sourceRoot":"","sources":["../src/ScriptDeclaration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { asInstanceOf, isDefined, Notifier, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
|
|
1
|
+
import { asInstanceOf, isDefined, Notifier, Option, StringMapping, Terminable, ValueMapping } from "@opendaw/lib-std";
|
|
2
2
|
import { WerkstattParameterBox } from "@opendaw/studio-boxes";
|
|
3
|
+
const LABEL_LINE = /^\/\/ @label .+$/m;
|
|
3
4
|
const PARAM_LINE = /^\/\/ @param .+$/gm;
|
|
4
5
|
const SAMPLE_LINE = /^\/\/ @sample .+$/gm;
|
|
6
|
+
const GROUP_LINE = /^\/\/ @group .+$/gm;
|
|
7
|
+
const DIRECTIVE_LINE = /^\/\/ @(group|param|sample) .+$/gm;
|
|
5
8
|
const DECLARATION_LINE = /^\/\/ @(?:param|sample) \S+/gm;
|
|
6
9
|
const FLOAT_TOLERANCE = 1e-6;
|
|
7
10
|
const VALID_MAPPINGS = ["linear", "exp", "int", "bool"];
|
|
@@ -77,10 +80,21 @@ const parseSingleParam = (line) => {
|
|
|
77
80
|
};
|
|
78
81
|
const declarationEquals = (a, b) => a.mapping === b.mapping && a.min === b.min && a.max === b.max && a.unit === b.unit;
|
|
79
82
|
const declarationFullEquals = (a, b) => declarationEquals(a, b) && Math.abs(a.defaultValue - b.defaultValue) < 1e-6;
|
|
80
|
-
export var
|
|
81
|
-
(function (
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
export var ScriptDeclaration;
|
|
84
|
+
(function (ScriptDeclaration) {
|
|
85
|
+
ScriptDeclaration.isEqual = declarationFullEquals;
|
|
86
|
+
ScriptDeclaration.parseLabel = (code) => {
|
|
87
|
+
const match = LABEL_LINE.exec(code);
|
|
88
|
+
if (match === null) {
|
|
89
|
+
return Option.None;
|
|
90
|
+
}
|
|
91
|
+
const label = match[0].replace(/^\/\/ @label\s+/, "").trim();
|
|
92
|
+
if (label.length === 0) {
|
|
93
|
+
throw new Error("Malformed @label: expected: // @label <name>");
|
|
94
|
+
}
|
|
95
|
+
return Option.wrap(label);
|
|
96
|
+
};
|
|
97
|
+
ScriptDeclaration.parseParams = (code) => {
|
|
84
98
|
const params = [];
|
|
85
99
|
let match;
|
|
86
100
|
PARAM_LINE.lastIndex = 0;
|
|
@@ -89,7 +103,7 @@ export var ScriptParamDeclaration;
|
|
|
89
103
|
}
|
|
90
104
|
return params;
|
|
91
105
|
};
|
|
92
|
-
|
|
106
|
+
ScriptDeclaration.parseSamples = (code) => {
|
|
93
107
|
const samples = [];
|
|
94
108
|
let match;
|
|
95
109
|
SAMPLE_LINE.lastIndex = 0;
|
|
@@ -105,7 +119,7 @@ export var ScriptParamDeclaration;
|
|
|
105
119
|
}
|
|
106
120
|
return samples;
|
|
107
121
|
};
|
|
108
|
-
|
|
122
|
+
ScriptDeclaration.parseDeclarationOrder = (code) => {
|
|
109
123
|
const order = new Map();
|
|
110
124
|
let match;
|
|
111
125
|
DECLARATION_LINE.lastIndex = 0;
|
|
@@ -118,7 +132,40 @@ export var ScriptParamDeclaration;
|
|
|
118
132
|
}
|
|
119
133
|
return order;
|
|
120
134
|
};
|
|
121
|
-
|
|
135
|
+
ScriptDeclaration.parseGroups = (code) => {
|
|
136
|
+
const sections = [];
|
|
137
|
+
let currentGroup = null;
|
|
138
|
+
let currentItems = [];
|
|
139
|
+
DIRECTIVE_LINE.lastIndex = 0;
|
|
140
|
+
let match;
|
|
141
|
+
while ((match = DIRECTIVE_LINE.exec(code)) !== null) {
|
|
142
|
+
const line = match[0];
|
|
143
|
+
const type = match[1];
|
|
144
|
+
if (type === "group") {
|
|
145
|
+
if (currentItems.length > 0 || currentGroup !== null) {
|
|
146
|
+
sections.push({ group: currentGroup, items: currentItems });
|
|
147
|
+
}
|
|
148
|
+
const tokens = line.replace(/^\/\/ @group\s+/, "").trim().split(/\s+/);
|
|
149
|
+
currentGroup = { label: tokens[0], color: tokens[1] ?? "dark" };
|
|
150
|
+
currentItems = [];
|
|
151
|
+
}
|
|
152
|
+
else if (type === "param") {
|
|
153
|
+
currentItems.push({ type: "param", declaration: parseSingleParam(line) });
|
|
154
|
+
}
|
|
155
|
+
else if (type === "sample") {
|
|
156
|
+
const tokens = line.replace(/^\/\/ @sample\s+/, "").replace(/\s+\/\/.*$/, "").trim().split(/\s+/);
|
|
157
|
+
if (tokens.length === 0 || tokens[0].length === 0) {
|
|
158
|
+
throw new Error(`Malformed @sample: '${line}' — expected: // @sample <name>`);
|
|
159
|
+
}
|
|
160
|
+
currentItems.push({ type: "sample", declaration: { label: tokens[0] } });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (currentItems.length > 0 || currentGroup !== null) {
|
|
164
|
+
sections.push({ group: currentGroup, items: currentItems });
|
|
165
|
+
}
|
|
166
|
+
return sections;
|
|
167
|
+
};
|
|
168
|
+
ScriptDeclaration.resolveValueMapping = (declaration) => {
|
|
122
169
|
switch (declaration.mapping) {
|
|
123
170
|
case "unipolar":
|
|
124
171
|
return ValueMapping.unipolar();
|
|
@@ -132,7 +179,7 @@ export var ScriptParamDeclaration;
|
|
|
132
179
|
return ValueMapping.linearInteger(0, 1);
|
|
133
180
|
}
|
|
134
181
|
};
|
|
135
|
-
|
|
182
|
+
ScriptDeclaration.resolveStringMapping = (declaration) => {
|
|
136
183
|
switch (declaration.mapping) {
|
|
137
184
|
case "unipolar":
|
|
138
185
|
return StringMapping.percent();
|
|
@@ -146,26 +193,26 @@ export var ScriptParamDeclaration;
|
|
|
146
193
|
return BoolStringMapping;
|
|
147
194
|
}
|
|
148
195
|
};
|
|
149
|
-
|
|
150
|
-
valueMapping:
|
|
151
|
-
stringMapping:
|
|
196
|
+
ScriptDeclaration.resolveParamMappings = (declaration) => ({
|
|
197
|
+
valueMapping: ScriptDeclaration.resolveValueMapping(declaration),
|
|
198
|
+
stringMapping: ScriptDeclaration.resolveStringMapping(declaration)
|
|
152
199
|
});
|
|
153
|
-
|
|
200
|
+
ScriptDeclaration.subscribeScriptParams = (parametric, codeField, parametersField) => {
|
|
154
201
|
const cachedDeclarations = new Map();
|
|
155
202
|
const codeChangedNotifier = new Notifier();
|
|
156
203
|
const terminable = Terminable.many(parametersField.pointerHub.catchupAndSubscribe({
|
|
157
204
|
onAdded: (({ box: parameterBox }) => {
|
|
158
205
|
const paramBox = asInstanceOf(parameterBox, WerkstattParameterBox);
|
|
159
206
|
const label = paramBox.label.getValue();
|
|
160
|
-
const declarations =
|
|
207
|
+
const declarations = ScriptDeclaration.parseParams(codeField.getValue());
|
|
161
208
|
const declaration = declarations.find(decl => decl.label === label);
|
|
162
209
|
const { valueMapping, stringMapping } = isDefined(declaration)
|
|
163
|
-
?
|
|
210
|
+
? ScriptDeclaration.resolveParamMappings(declaration)
|
|
164
211
|
: {
|
|
165
212
|
valueMapping: ValueMapping.unipolar(),
|
|
166
213
|
stringMapping: StringMapping.percent({ fractionDigits: 1 })
|
|
167
214
|
};
|
|
168
|
-
parametric.createParameter(paramBox.value, valueMapping, stringMapping, label);
|
|
215
|
+
parametric.createParameter(paramBox.value, valueMapping, stringMapping, label, undefined, paramBox.defaultValue.getValue());
|
|
169
216
|
if (isDefined(declaration)) {
|
|
170
217
|
cachedDeclarations.set(label, declaration);
|
|
171
218
|
}
|
|
@@ -176,7 +223,7 @@ export var ScriptParamDeclaration;
|
|
|
176
223
|
parametric.removeParameter(paramBox.value.address);
|
|
177
224
|
})
|
|
178
225
|
}), codeField.subscribe(() => {
|
|
179
|
-
const declarations =
|
|
226
|
+
const declarations = ScriptDeclaration.parseParams(codeField.getValue());
|
|
180
227
|
for (const adapter of parametric.parameters()) {
|
|
181
228
|
const newDeclaration = declarations.find(decl => decl.label === adapter.name);
|
|
182
229
|
if (!isDefined(newDeclaration)) {
|
|
@@ -186,7 +233,7 @@ export var ScriptParamDeclaration;
|
|
|
186
233
|
if (isDefined(oldDeclaration) && declarationEquals(oldDeclaration, newDeclaration)) {
|
|
187
234
|
continue;
|
|
188
235
|
}
|
|
189
|
-
const { valueMapping, stringMapping } =
|
|
236
|
+
const { valueMapping, stringMapping } = ScriptDeclaration.resolveParamMappings(newDeclaration);
|
|
190
237
|
adapter.updateMappings(valueMapping, stringMapping);
|
|
191
238
|
cachedDeclarations.set(adapter.name, newDeclaration);
|
|
192
239
|
}
|
|
@@ -194,4 +241,4 @@ export var ScriptParamDeclaration;
|
|
|
194
241
|
}), codeChangedNotifier);
|
|
195
242
|
return { terminable, codeChanged: codeChangedNotifier };
|
|
196
243
|
};
|
|
197
|
-
})(
|
|
244
|
+
})(ScriptDeclaration || (ScriptDeclaration = {}));
|
|
@@ -14,7 +14,7 @@ import { Option, Terminator } from "@opendaw/lib-std";
|
|
|
14
14
|
import { Devices } from "../../DeviceAdapter";
|
|
15
15
|
import { DeviceManualUrls } from "../../DeviceManualUrls";
|
|
16
16
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
17
|
-
import {
|
|
17
|
+
import { ScriptDeclaration } from "../../ScriptDeclaration";
|
|
18
18
|
export class WerkstattDeviceBoxAdapter {
|
|
19
19
|
constructor(context, box) {
|
|
20
20
|
_WerkstattDeviceBoxAdapter_terminator.set(this, new Terminator());
|
|
@@ -28,7 +28,7 @@ export class WerkstattDeviceBoxAdapter {
|
|
|
28
28
|
__classPrivateFieldSet(this, _WerkstattDeviceBoxAdapter_context, context, "f");
|
|
29
29
|
__classPrivateFieldSet(this, _WerkstattDeviceBoxAdapter_box, box, "f");
|
|
30
30
|
__classPrivateFieldSet(this, _WerkstattDeviceBoxAdapter_parametric, __classPrivateFieldGet(this, _WerkstattDeviceBoxAdapter_terminator, "f").own(new ParameterAdapterSet(__classPrivateFieldGet(this, _WerkstattDeviceBoxAdapter_context, "f"))), "f");
|
|
31
|
-
const { terminable, codeChanged } =
|
|
31
|
+
const { terminable, codeChanged } = ScriptDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _WerkstattDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
|
|
32
32
|
__classPrivateFieldGet(this, _WerkstattDeviceBoxAdapter_terminator, "f").own(terminable);
|
|
33
33
|
__classPrivateFieldSet(this, _WerkstattDeviceBoxAdapter_codeChanged, codeChanged, "f");
|
|
34
34
|
}
|
|
@@ -15,7 +15,7 @@ import { Devices } from "../../DeviceAdapter";
|
|
|
15
15
|
import { DeviceManualUrls } from "../../DeviceManualUrls";
|
|
16
16
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
17
17
|
import { TrackType } from "../../timeline/TrackType";
|
|
18
|
-
import {
|
|
18
|
+
import { ScriptDeclaration } from "../../ScriptDeclaration";
|
|
19
19
|
export class ApparatDeviceBoxAdapter {
|
|
20
20
|
constructor(context, box) {
|
|
21
21
|
_ApparatDeviceBoxAdapter_terminator.set(this, new Terminator());
|
|
@@ -29,7 +29,7 @@ export class ApparatDeviceBoxAdapter {
|
|
|
29
29
|
__classPrivateFieldSet(this, _ApparatDeviceBoxAdapter_context, context, "f");
|
|
30
30
|
__classPrivateFieldSet(this, _ApparatDeviceBoxAdapter_box, box, "f");
|
|
31
31
|
__classPrivateFieldSet(this, _ApparatDeviceBoxAdapter_parametric, __classPrivateFieldGet(this, _ApparatDeviceBoxAdapter_terminator, "f").own(new ParameterAdapterSet(__classPrivateFieldGet(this, _ApparatDeviceBoxAdapter_context, "f"))), "f");
|
|
32
|
-
const { terminable, codeChanged } =
|
|
32
|
+
const { terminable, codeChanged } = ScriptDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _ApparatDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
|
|
33
33
|
__classPrivateFieldGet(this, _ApparatDeviceBoxAdapter_terminator, "f").own(terminable);
|
|
34
34
|
__classPrivateFieldSet(this, _ApparatDeviceBoxAdapter_codeChanged, codeChanged, "f");
|
|
35
35
|
}
|
|
@@ -14,7 +14,7 @@ import { Terminator } from "@opendaw/lib-std";
|
|
|
14
14
|
import { Devices } from "../../DeviceAdapter";
|
|
15
15
|
import { DeviceManualUrls } from "../../DeviceManualUrls";
|
|
16
16
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
17
|
-
import {
|
|
17
|
+
import { ScriptDeclaration } from "../../ScriptDeclaration";
|
|
18
18
|
export class SpielwerkDeviceBoxAdapter {
|
|
19
19
|
constructor(context, box) {
|
|
20
20
|
_SpielwerkDeviceBoxAdapter_terminator.set(this, new Terminator());
|
|
@@ -28,7 +28,7 @@ export class SpielwerkDeviceBoxAdapter {
|
|
|
28
28
|
__classPrivateFieldSet(this, _SpielwerkDeviceBoxAdapter_context, context, "f");
|
|
29
29
|
__classPrivateFieldSet(this, _SpielwerkDeviceBoxAdapter_box, box, "f");
|
|
30
30
|
__classPrivateFieldSet(this, _SpielwerkDeviceBoxAdapter_parametric, __classPrivateFieldGet(this, _SpielwerkDeviceBoxAdapter_terminator, "f").own(new ParameterAdapterSet(__classPrivateFieldGet(this, _SpielwerkDeviceBoxAdapter_context, "f"))), "f");
|
|
31
|
-
const { terminable, codeChanged } =
|
|
31
|
+
const { terminable, codeChanged } = ScriptDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _SpielwerkDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
|
|
32
32
|
__classPrivateFieldGet(this, _SpielwerkDeviceBoxAdapter_terminator, "f").own(terminable);
|
|
33
33
|
__classPrivateFieldSet(this, _SpielwerkDeviceBoxAdapter_codeChanged, codeChanged, "f");
|
|
34
34
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export * from "./RecordingProcessorOptions";
|
|
|
31
31
|
export * from "./RingBuffer";
|
|
32
32
|
export * from "./RootBoxAdapter";
|
|
33
33
|
export * from "./ScriptCompiler";
|
|
34
|
-
export * from "./
|
|
34
|
+
export * from "./ScriptDeclaration";
|
|
35
35
|
export * from "./TempoRange";
|
|
36
36
|
export * from "./UnionAdapterTypes";
|
|
37
37
|
export * from "./Validator";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,WAAW,CAAA;AACzB,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,7 +33,7 @@ export * from "./RecordingProcessorOptions";
|
|
|
33
33
|
export * from "./RingBuffer";
|
|
34
34
|
export * from "./RootBoxAdapter";
|
|
35
35
|
export * from "./ScriptCompiler";
|
|
36
|
-
export * from "./
|
|
36
|
+
export * from "./ScriptDeclaration";
|
|
37
37
|
export * from "./TempoRange";
|
|
38
38
|
export * from "./UnionAdapterTypes";
|
|
39
39
|
export * from "./Validator";
|
|
@@ -81,7 +81,7 @@ export var PresetDecoder;
|
|
|
81
81
|
console.debug("ReplaceAudioUnit with preset...");
|
|
82
82
|
const skeleton = ProjectSkeleton.empty({
|
|
83
83
|
createDefaultUser: false,
|
|
84
|
-
|
|
84
|
+
createOutputMaximizer: false
|
|
85
85
|
});
|
|
86
86
|
const sourceBoxGraph = skeleton.boxGraph;
|
|
87
87
|
const targetBoxGraph = targetAudioUnitBox.graph;
|
|
@@ -8,7 +8,7 @@ export var PresetEncoder;
|
|
|
8
8
|
const header = ByteArrayOutput.create();
|
|
9
9
|
header.writeInt(PresetHeader.MAGIC_HEADER_OPEN);
|
|
10
10
|
header.writeInt(PresetHeader.FORMAT_VERSION);
|
|
11
|
-
const preset = ProjectSkeleton.empty({
|
|
11
|
+
const preset = ProjectSkeleton.empty({ createOutputMaximizer: false, createDefaultUser: false });
|
|
12
12
|
const { boxGraph, mandatoryBoxes: { rootBox, primaryAudioBusBox } } = preset;
|
|
13
13
|
const audioUnitBoxes = [audioUnitBox];
|
|
14
14
|
const excludeBox = (box) => TransferUtils.shouldExclude(box) || TransferUtils.excludeTimelinePredicate(box);
|
|
@@ -7,7 +7,7 @@ export type ProjectSkeleton = {
|
|
|
7
7
|
};
|
|
8
8
|
export declare namespace ProjectSkeleton {
|
|
9
9
|
const empty: (options: {
|
|
10
|
-
|
|
10
|
+
createOutputMaximizer: boolean;
|
|
11
11
|
createDefaultUser: boolean;
|
|
12
12
|
}) => ProjectSkeleton;
|
|
13
13
|
const encode: (boxGraph: BoxGraph) => ArrayBufferLike;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAItB,MAAM,KAAK,GAAI,SAAS;QAC3B,
|
|
1
|
+
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAItB,MAAM,KAAK,GAAI,SAAS;QAC3B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAsDH,CAAA;IAEM,MAAM,MAAM,GAAI,UAAU,QAAQ,oBAQxC,CAAA;IAEM,MAAM,MAAM,GAAI,aAAa,eAAe,KAAG,eAYrD,CAAA;IAEM,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,qBAiBvD,CAAA;CACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BoxGraph } from "@opendaw/lib-box";
|
|
2
|
-
import { AudioBusBox, AudioUnitBox, BoxIO,
|
|
2
|
+
import { AudioBusBox, AudioUnitBox, BoxIO, MaximizerDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox, ValueEventCollectionBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { asInstanceOf, assert, ByteArrayInput, ByteArrayOutput, isDefined, Option, panic, UUID } from "@opendaw/lib-std";
|
|
4
4
|
import { AudioUnitType, Colors, IconSymbol } from "@opendaw/studio-enums";
|
|
5
5
|
export var ProjectSkeleton;
|
|
@@ -30,13 +30,12 @@ export var ProjectSkeleton;
|
|
|
30
30
|
box.output.refer(rootBox.outputDevice);
|
|
31
31
|
box.index.setValue(0);
|
|
32
32
|
});
|
|
33
|
-
if (options.
|
|
34
|
-
|
|
35
|
-
box.label.setValue("Master
|
|
33
|
+
if (options.createOutputMaximizer) {
|
|
34
|
+
MaximizerDeviceBox.create(boxGraph, UUID.generate(), box => {
|
|
35
|
+
box.label.setValue("Master Maximizer");
|
|
36
36
|
box.index.setValue(0);
|
|
37
37
|
box.host.refer(primaryAudioOutputUnit.audioEffects);
|
|
38
|
-
box.
|
|
39
|
-
box.ratio.setValue(24);
|
|
38
|
+
box.lookahead.setValue(false);
|
|
40
39
|
});
|
|
41
40
|
}
|
|
42
41
|
const timelineBox = TimelineBox.create(boxGraph, UUID.generate());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendaw/studio-adapters",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.102",
|
|
4
4
|
"license": "LGPL-3.0-or-later",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
"test": "echo \"No tests to run\""
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@opendaw/lib-box": "^0.0.
|
|
27
|
-
"@opendaw/lib-dsp": "^0.0.
|
|
28
|
-
"@opendaw/lib-fusion": "^0.0.
|
|
29
|
-
"@opendaw/lib-runtime": "^0.0.
|
|
30
|
-
"@opendaw/lib-std": "^0.0.
|
|
31
|
-
"@opendaw/studio-boxes": "^0.0.
|
|
32
|
-
"@opendaw/studio-enums": "^0.0.
|
|
26
|
+
"@opendaw/lib-box": "^0.0.80",
|
|
27
|
+
"@opendaw/lib-dsp": "^0.0.79",
|
|
28
|
+
"@opendaw/lib-fusion": "^0.0.87",
|
|
29
|
+
"@opendaw/lib-runtime": "^0.0.75",
|
|
30
|
+
"@opendaw/lib-std": "^0.0.74",
|
|
31
|
+
"@opendaw/studio-boxes": "^0.0.85",
|
|
32
|
+
"@opendaw/studio-enums": "^0.0.70",
|
|
33
33
|
"soundfont2": "^0.5.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@opendaw/eslint-config": "^0.0.27",
|
|
37
37
|
"@opendaw/typescript-config": "^0.0.29"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "8e46cba2c2aba3ebb2ff49c764d039e0f9b8b820"
|
|
40
40
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptParamDeclaration.d.ts","sourceRoot":"","sources":["../src/ScriptParamDeclaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AACjI,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAEzD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACzB;AAsFD,yBAAiB,sBAAsB,CAAC;IACpC,MAAM,CAAC,MAAM,OAAO,MAJU,gBAAgB,KAAK,gBAAgB,KAAG,OAI1B,CAAA;IAE5C,MAAM,CAAC,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,gBAAgB,CAQxE,CAAA;IAED,MAAM,CAAC,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,aAAa,CAAC,iBAAiB,CAe1E,CAAA;IAED,MAAM,CAAC,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAYtE,CAAA;IAED,MAAM,CAAC,MAAM,mBAAmB,GAAI,aAAa,gBAAgB,KAAG,YAAY,CAAC,MAAM,CAatF,CAAA;IAED,MAAM,CAAC,MAAM,oBAAoB,GAAI,aAAa,gBAAgB,KAAG,aAAa,CAAC,MAAM,CAaxF,CAAA;IAED,KAAK,YAAY,GAAG;QAChB,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;QAClC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;KACvC,CAAA;IAED,MAAM,CAAC,MAAM,oBAAoB,GAAI,aAAa,gBAAgB,KAAG,YAGnE,CAAA;IAEF,MAAM,MAAM,mBAAmB,GAAG;QAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;QAC/B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;KACzC,CAAA;IAED,MAAM,CAAC,MAAM,qBAAqB,GAAI,YAAY,mBAAmB,EAC/B,WAAW,WAAW,EACtB,iBAAiB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAG,mBAyClF,CAAA;;CACJ"}
|