@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.
@@ -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;;gBAkBlG,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;IA0D9B,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"}
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, _AutomatableParameterFieldAdapter_valueMapping, "f").clamp(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").initValue)); }
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: 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;;gBASrC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO;IAa1D,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;CACpB"}
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, _NoteStreamReceiver_receiver, _NoteStreamReceiver_address, _NoteStreamReceiver_bits, _NoteStreamReceiver_notifier;
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
- __classPrivateFieldSet(this, _NoteStreamReceiver_receiver, receiver, "f");
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
- __classPrivateFieldGet(this, _NoteStreamReceiver_terminator, "f").own(__classPrivateFieldGet(this, _NoteStreamReceiver_receiver, "f").subscribeIntegers(__classPrivateFieldGet(this, _NoteStreamReceiver_address, "f"), (array) => {
26
- if (__classPrivateFieldGet(this, _NoteStreamReceiver_bits, "f").replace(array.buffer)) {
27
- __classPrivateFieldGet(this, _NoteStreamReceiver_notifier, "f").notify(this);
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() { __classPrivateFieldGet(this, _NoteStreamReceiver_terminator, "f").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(), _NoteStreamReceiver_receiver = new WeakMap(), _NoteStreamReceiver_address = new WeakMap(), _NoteStreamReceiver_bits = new WeakMap(), _NoteStreamReceiver_notifier = 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;IAQnG,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,gCAAgC,CAAC,CAAC,CAAC;CAGpG"}
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;
@@ -1,12 +1,10 @@
1
- import { Editing, UUID } from "@opendaw/lib-std";
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: DeviceBox) => Promise<void>;
22
- compile: (audioContext: BaseAudioContext, editing: Editing, deviceBox: DeviceBox, source: string, append?: boolean) => Promise<void>;
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,EAAa,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAqI9C,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,SAAS;QACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;QACxB,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAA;SAAE,CAAA;QAC/C,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,SAAS,KAAG,OAAO,CAAC,IAAI,CAAC;gCAYnD,gBAAgB,WACrB,OAAO,aACL,SAAS,UACZ,MAAM,WACN,OAAO,KAAW,OAAO,CAAC,IAAI,CAAC;KAyB9D,CAAA;CACJ"}
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"}
@@ -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 { ScriptParamDeclaration } from "./ScriptParamDeclaration";
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) || !ScriptParamDeclaration.isEqual(previous, declaration);
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 = ScriptParamDeclaration.parseParams(userCode);
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 = ScriptParamDeclaration.parseParams(userCode);
169
- const samples = ScriptParamDeclaration.parseSamples(userCode);
170
- const order = ScriptParamDeclaration.parseDeclarationOrder(userCode);
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 declare namespace ScriptParamDeclaration {
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=ScriptParamDeclaration.d.ts.map
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 ScriptParamDeclaration;
81
- (function (ScriptParamDeclaration) {
82
- ScriptParamDeclaration.isEqual = declarationFullEquals;
83
- ScriptParamDeclaration.parseParams = (code) => {
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
- ScriptParamDeclaration.parseSamples = (code) => {
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
- ScriptParamDeclaration.parseDeclarationOrder = (code) => {
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
- ScriptParamDeclaration.resolveValueMapping = (declaration) => {
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
- ScriptParamDeclaration.resolveStringMapping = (declaration) => {
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
- ScriptParamDeclaration.resolveParamMappings = (declaration) => ({
150
- valueMapping: ScriptParamDeclaration.resolveValueMapping(declaration),
151
- stringMapping: ScriptParamDeclaration.resolveStringMapping(declaration)
196
+ ScriptDeclaration.resolveParamMappings = (declaration) => ({
197
+ valueMapping: ScriptDeclaration.resolveValueMapping(declaration),
198
+ stringMapping: ScriptDeclaration.resolveStringMapping(declaration)
152
199
  });
153
- ScriptParamDeclaration.subscribeScriptParams = (parametric, codeField, parametersField) => {
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 = ScriptParamDeclaration.parseParams(codeField.getValue());
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
- ? ScriptParamDeclaration.resolveParamMappings(declaration)
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 = ScriptParamDeclaration.parseParams(codeField.getValue());
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 } = ScriptParamDeclaration.resolveParamMappings(newDeclaration);
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
- })(ScriptParamDeclaration || (ScriptParamDeclaration = {}));
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 { ScriptParamDeclaration } from "../../ScriptParamDeclaration";
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 } = ScriptParamDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _WerkstattDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
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 { ScriptParamDeclaration } from "../../ScriptParamDeclaration";
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 } = ScriptParamDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _ApparatDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
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 { ScriptParamDeclaration } from "../../ScriptParamDeclaration";
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 } = ScriptParamDeclaration.subscribeScriptParams(__classPrivateFieldGet(this, _SpielwerkDeviceBoxAdapter_parametric, "f"), box.code, box.parameters);
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 "./ScriptParamDeclaration";
34
+ export * from "./ScriptDeclaration";
35
35
  export * from "./TempoRange";
36
36
  export * from "./UnionAdapterTypes";
37
37
  export * from "./Validator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -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 "./ScriptParamDeclaration";
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
- createOutputCompressor: false
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({ createOutputCompressor: false, createDefaultUser: false });
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
- createOutputCompressor: boolean;
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,sBAAsB,EAAE,OAAO,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAuDH,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
+ {"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, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox, ValueEventCollectionBox } from "@opendaw/studio-boxes";
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.createOutputCompressor) {
34
- CompressorDeviceBox.create(boxGraph, UUID.generate(), box => {
35
- box.label.setValue("Master Compressor");
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.threshold.setValue(0);
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.100",
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.79",
27
- "@opendaw/lib-dsp": "^0.0.78",
28
- "@opendaw/lib-fusion": "^0.0.86",
29
- "@opendaw/lib-runtime": "^0.0.74",
30
- "@opendaw/lib-std": "^0.0.73",
31
- "@opendaw/studio-boxes": "^0.0.84",
32
- "@opendaw/studio-enums": "^0.0.69",
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": "0de255fcdacefee9ab663ceeb0d4424a278c5dc4"
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"}