@opendaw/studio-adapters 0.0.80 → 0.0.82

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.
@@ -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,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,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,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;IACjB,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,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,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,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;IAIjB,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"}
@@ -135,7 +135,10 @@ export class AutomatableParameterFieldAdapter {
135
135
  return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_controlSource, "f").subscribe(observer);
136
136
  }
137
137
  getValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").getValue(); }
138
- setValue(value) { __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").setValue(value); }
138
+ setValue(value) {
139
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_field, "f").setValue(value);
140
+ __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_context, "f").parameterFieldAdapters.notifyWrite(this);
141
+ }
139
142
  setUnitValue(value) { this.setValue(__classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").y(value)); }
140
143
  getUnitValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").x(this.getValue()); }
141
144
  getControlledValue() { return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueMapping, "f").y(this.getControlledUnitValue()); }
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAEL,MAAM,EAIN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAqG5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAuBvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAkBnG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;CAiE3C"}
1
+ {"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAEL,MAAM,EAIN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAsG5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAwBvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAkBnG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;CAkE3C"}
@@ -65,6 +65,7 @@ import { VelocityDeviceBoxAdapter } from "./devices/midi-effects/VelocityDeviceB
65
65
  import { TidalDeviceBoxAdapter } from "./devices/audio-effects/TidalDeviceBoxAdapter";
66
66
  import { DattorroReverbDeviceBoxAdapter } from "./devices/audio-effects/DattorroReverbDeviceBoxAdapter";
67
67
  import { NeuralAmpDeviceBoxAdapter } from "./devices/audio-effects/NeuralAmpDeviceBoxAdapter";
68
+ import { NeuralAmpModelBoxAdapter } from "./nam/NeuralAmpModelBoxAdapter";
68
69
  import { AudioPitchStretchBoxAdapter } from "./audio/AudioPitchStretchBoxAdapter";
69
70
  import { TransientMarkerBoxAdapter } from "./audio/TransientMarkerBoxAdapter";
70
71
  import { WarpMarkerBoxAdapter } from "./audio/WarpMarkerBoxAdapter";
@@ -152,6 +153,7 @@ _BoxAdapters_context = new WeakMap(), _BoxAdapters_adapters = new WeakMap(), _Bo
152
153
  visitModuleMultiplierBox: (box) => new ModuleMultiplierAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
153
154
  visitNanoDeviceBox: (box) => new NanoDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
154
155
  visitNeuralAmpDeviceBox: (box) => new NeuralAmpDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
156
+ visitNeuralAmpModelBox: (box) => new NeuralAmpModelBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
155
157
  visitNoteClipBox: (box) => new NoteClipBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
156
158
  visitNoteEventBox: (box) => new NoteEventBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
157
159
  visitNoteEventCollectionBox: (box) => new NoteEventCollectionBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
@@ -11,6 +11,7 @@ export type EngineProcessorAttachment = {
11
11
  export type ExportStemConfiguration = {
12
12
  includeAudioEffects: boolean;
13
13
  includeSends: boolean;
14
+ useInstrumentOutput: boolean;
14
15
  fileName: string;
15
16
  };
16
17
  export type ExportStemsConfiguration = Record<string, ExportStemConfiguration>;
@@ -1 +1 @@
1
- {"version":3,"file":"EngineProcessorAttachment.d.ts","sourceRoot":"","sources":["../src/EngineProcessorAttachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAGjC,MAAM,MAAM,yBAAyB,GAAG;IACpC,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,aAAa,EAAE,iBAAiB,CAAA;IAChC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,wBAAwB,CAAA;IAC9C,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;AAE9E,yBAAiB,wBAAwB,CAAC;IAC/B,MAAM,UAAU,GAAI,QAAQ,MAAM,CAAC,wBAAwB,CAAC,KAAG,GAIhE,CAAA;IAEC,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MAA4D,CAAA;IAErG,MAAM,0BAA0B,GAAI,eAAe,wBAAwB,KAAG,IAiBpF,CAAA;CACJ"}
1
+ {"version":3,"file":"EngineProcessorAttachment.d.ts","sourceRoot":"","sources":["../src/EngineProcessorAttachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAGjC,MAAM,MAAM,yBAAyB,GAAG;IACpC,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,iBAAiB,CAAA;IACrC,aAAa,EAAE,iBAAiB,CAAA;IAChC,OAAO,EAAE,eAAe,CAAA;IACxB,mBAAmB,CAAC,EAAE,wBAAwB,CAAA;IAC9C,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;AAE9E,yBAAiB,wBAAwB,CAAC;IAC/B,MAAM,UAAU,GAAI,QAAQ,MAAM,CAAC,wBAAwB,CAAC,KAAG,GAIhE,CAAA;IAEC,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MAA4D,CAAA;IAErG,MAAM,0BAA0B,GAAI,eAAe,wBAAwB,KAAG,IAiBpF,CAAA;CACJ"}
@@ -1,4 +1,4 @@
1
- import { Option, Terminable } from "@opendaw/lib-std";
1
+ import { Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
2
2
  import { Address } from "@opendaw/lib-box";
3
3
  import { AutomatableParameterFieldAdapter } from "./AutomatableParameterFieldAdapter";
4
4
  export declare class ParameterFieldAdapters {
@@ -7,5 +7,7 @@ export declare class ParameterFieldAdapters {
7
7
  register(adapter: AutomatableParameterFieldAdapter): Terminable;
8
8
  get(address: Address): AutomatableParameterFieldAdapter;
9
9
  opt(address: Address): Option<AutomatableParameterFieldAdapter>;
10
+ subscribeWrites(observer: Observer<AutomatableParameterFieldAdapter>): Subscription;
11
+ notifyWrite(adapter: AutomatableParameterFieldAdapter): void;
10
12
  }
11
13
  //# sourceMappingURL=ParameterFieldAdapters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParameterFieldAdapters.d.ts","sourceRoot":"","sources":["../src/ParameterFieldAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAa,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AAEnF,qBAAa,sBAAsB;;;IAO/B,QAAQ,CAAC,OAAO,EAAE,gCAAgC,GAAG,UAAU;IAK/D,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IACvD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gCAAgC,CAAC;CAClE"}
1
+ {"version":3,"file":"ParameterFieldAdapters.d.ts","sourceRoot":"","sources":["../src/ParameterFieldAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,EAAa,YAAY,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AAEnF,qBAAa,sBAAsB;;;IAS/B,QAAQ,CAAC,OAAO,EAAE,gCAAgC,GAAG,UAAU;IAK/D,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,gCAAgC;IACvD,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,gCAAgC,CAAC;IAE/D,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,GAAG,YAAY;IAInF,WAAW,CAAC,OAAO,EAAE,gCAAgC,GAAG,IAAI;CAG/D"}
@@ -9,12 +9,15 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _ParameterFieldAdapters_set;
12
+ var _ParameterFieldAdapters_set, _ParameterFieldAdapters_writeNotifier;
13
+ import { Notifier } from "@opendaw/lib-std";
13
14
  import { Address } from "@opendaw/lib-box";
14
15
  export class ParameterFieldAdapters {
15
16
  constructor() {
16
17
  _ParameterFieldAdapters_set.set(this, void 0);
18
+ _ParameterFieldAdapters_writeNotifier.set(this, void 0);
17
19
  __classPrivateFieldSet(this, _ParameterFieldAdapters_set, Address.newSet(adapter => adapter.field.address), "f");
20
+ __classPrivateFieldSet(this, _ParameterFieldAdapters_writeNotifier, new Notifier(), "f");
18
21
  }
19
22
  register(adapter) {
20
23
  __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").add(adapter);
@@ -22,5 +25,11 @@ export class ParameterFieldAdapters {
22
25
  }
23
26
  get(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").get(address); }
24
27
  opt(address) { return __classPrivateFieldGet(this, _ParameterFieldAdapters_set, "f").opt(address); }
28
+ subscribeWrites(observer) {
29
+ return __classPrivateFieldGet(this, _ParameterFieldAdapters_writeNotifier, "f").subscribe(observer);
30
+ }
31
+ notifyWrite(adapter) {
32
+ __classPrivateFieldGet(this, _ParameterFieldAdapters_writeNotifier, "f").notify(adapter);
33
+ }
25
34
  }
26
- _ParameterFieldAdapters_set = new WeakMap();
35
+ _ParameterFieldAdapters_set = new WeakMap(), _ParameterFieldAdapters_writeNotifier = new WeakMap();
@@ -1,13 +1,14 @@
1
1
  import { bpm, ppqn, seconds, TempoMap } from "@opendaw/lib-dsp";
2
- import { Observer, Subscription } from "@opendaw/lib-std";
2
+ import { Observer, Subscription, Terminable } from "@opendaw/lib-std";
3
3
  import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
4
4
  /**
5
5
  * TempoMap implementation that handles varying tempo (tempo automation).
6
6
  * Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
7
7
  */
8
- export declare class VaryingTempoMap implements TempoMap {
8
+ export declare class VaryingTempoMap implements TempoMap, Terminable {
9
9
  #private;
10
10
  constructor(adapter: TimelineBoxAdapter);
11
+ terminate(): void;
11
12
  getTempoAt(position: ppqn): bpm;
12
13
  ppqnToSeconds(position: ppqn): seconds;
13
14
  secondsToPPQN(time: seconds): ppqn;
@@ -1 +1 @@
1
- {"version":3,"file":"VaryingTempoMap.d.ts","sourceRoot":"","sources":["../src/VaryingTempoMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAQ,OAAO,EAAmB,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAC,QAAQ,EAAgB,YAAY,EAAa,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAEhE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;;gBAGhC,OAAO,EAAE,kBAAkB;IAIvC,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG;IAQ/B,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO;IAOtC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA+BlC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAwBxD,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAQ9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY;CAQxD"}
1
+ {"version":3,"file":"VaryingTempoMap.d.ts","sourceRoot":"","sources":["../src/VaryingTempoMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAQ,OAAO,EAAmB,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAGH,QAAQ,EAER,YAAY,EACZ,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAIhE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ,EAAE,UAAU;;gBAM5C,OAAO,EAAE,kBAAkB;IAQvC,SAAS,IAAI,IAAI;IAkCjB,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG;IAQ/B,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO;IAwCtC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA6ClC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAKxD,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAO9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY;CAQxD"}
@@ -9,9 +9,9 @@ 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 _VaryingTempoMap_instances, _VaryingTempoMap_adapter, _VaryingTempoMap_absoluteSecondsToPPQN;
12
+ var _VaryingTempoMap_instances, _VaryingTempoMap_terminator, _VaryingTempoMap_adapter, _VaryingTempoMap_ppqnCache, _VaryingTempoMap_secondsCache, _VaryingTempoMap_rebuildCache, _VaryingTempoMap_ppqnToSecondsPositive, _VaryingTempoMap_absoluteSecondsToPPQN;
13
13
  import { PPQN, TempoChangeGrid } from "@opendaw/lib-dsp";
14
- import { quantizeCeil, Terminator } from "@opendaw/lib-std";
14
+ import { BinarySearch, NumberComparator, quantizeCeil, Terminator } from "@opendaw/lib-std";
15
15
  /**
16
16
  * TempoMap implementation that handles varying tempo (tempo automation).
17
17
  * Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
@@ -19,8 +19,15 @@ import { quantizeCeil, Terminator } from "@opendaw/lib-std";
19
19
  export class VaryingTempoMap {
20
20
  constructor(adapter) {
21
21
  _VaryingTempoMap_instances.add(this);
22
+ _VaryingTempoMap_terminator.set(this, new Terminator());
22
23
  _VaryingTempoMap_adapter.set(this, void 0);
24
+ _VaryingTempoMap_ppqnCache.set(this, []);
25
+ _VaryingTempoMap_secondsCache.set(this, []);
23
26
  __classPrivateFieldSet(this, _VaryingTempoMap_adapter, adapter, "f");
27
+ __classPrivateFieldGet(this, _VaryingTempoMap_terminator, "f").ownAll(adapter.box.bpm.subscribe(() => __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_rebuildCache).call(this)), adapter.catchupAndSubscribeTempoAutomation(() => __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_rebuildCache).call(this)));
28
+ }
29
+ terminate() {
30
+ __classPrivateFieldGet(this, _VaryingTempoMap_terminator, "f").terminate();
24
31
  }
25
32
  getTempoAt(position) {
26
33
  const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
@@ -28,9 +35,9 @@ export class VaryingTempoMap {
28
35
  }
29
36
  ppqnToSeconds(position) {
30
37
  if (position < 0) {
31
- return -this.intervalToSeconds(position, 0);
38
+ return -__classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_ppqnToSecondsPositive).call(this, -position);
32
39
  }
33
- return this.intervalToSeconds(0, position);
40
+ return __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_ppqnToSecondsPositive).call(this, position);
34
41
  }
35
42
  secondsToPPQN(time) {
36
43
  return __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, time);
@@ -39,32 +46,12 @@ export class VaryingTempoMap {
39
46
  if (fromPPQN >= toPPQN) {
40
47
  return 0.0;
41
48
  }
42
- const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
43
- const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
44
- if (tempoEvents.isEmpty()) {
45
- return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
46
- }
47
- const collection = tempoEvents.unwrap();
48
- if (collection.events.isEmpty()) {
49
- return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
50
- }
51
- let totalSeconds = 0.0;
52
- let currentPPQN = fromPPQN;
53
- while (currentPPQN < toPPQN) {
54
- const currentBpm = collection.valueAt(currentPPQN, storageBpm);
55
- const nextGrid = quantizeCeil(currentPPQN, TempoChangeGrid);
56
- const segmentEnd = nextGrid <= currentPPQN ? nextGrid + TempoChangeGrid : nextGrid;
57
- const actualEnd = Math.min(segmentEnd, toPPQN);
58
- totalSeconds += PPQN.pulsesToSeconds(actualEnd - currentPPQN, currentBpm);
59
- currentPPQN = actualEnd;
60
- }
61
- return totalSeconds;
49
+ return __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_ppqnToSecondsPositive).call(this, toPPQN) - __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_ppqnToSecondsPositive).call(this, fromPPQN);
62
50
  }
63
51
  intervalToPPQN(fromSeconds, toSeconds) {
64
52
  if (fromSeconds >= toSeconds) {
65
53
  return 0.0;
66
54
  }
67
- // Find PPQN positions for both absolute times, return the difference
68
55
  const fromPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, fromSeconds);
69
56
  const toPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, toSeconds);
70
57
  return toPPQN - fromPPQN;
@@ -75,7 +62,78 @@ export class VaryingTempoMap {
75
62
  return terminator;
76
63
  }
77
64
  }
78
- _VaryingTempoMap_adapter = new WeakMap(), _VaryingTempoMap_instances = new WeakSet(), _VaryingTempoMap_absoluteSecondsToPPQN = function _VaryingTempoMap_absoluteSecondsToPPQN(targetSeconds) {
65
+ _VaryingTempoMap_terminator = new WeakMap(), _VaryingTempoMap_adapter = new WeakMap(), _VaryingTempoMap_ppqnCache = new WeakMap(), _VaryingTempoMap_secondsCache = new WeakMap(), _VaryingTempoMap_instances = new WeakSet(), _VaryingTempoMap_rebuildCache = function _VaryingTempoMap_rebuildCache() {
66
+ __classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f").length = 0;
67
+ __classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f").length = 0;
68
+ const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
69
+ if (tempoEvents.isEmpty()) {
70
+ return;
71
+ }
72
+ const collection = tempoEvents.unwrap();
73
+ if (collection.events.isEmpty()) {
74
+ return;
75
+ }
76
+ const events = collection.events.asArray();
77
+ const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
78
+ const entries = [{ ppqn: 0, seconds: 0, bpm: collection.valueAt(0, storageBpm) }];
79
+ let accumulatedSeconds = 0.0;
80
+ let currentPPQN = 0.0;
81
+ for (const event of events) {
82
+ const eventPosition = event.position;
83
+ if (eventPosition <= currentPPQN) {
84
+ continue;
85
+ }
86
+ while (currentPPQN < eventPosition) {
87
+ const currentBpm = collection.valueAt(currentPPQN, storageBpm);
88
+ const nextGrid = quantizeCeil(currentPPQN, TempoChangeGrid);
89
+ const segmentEnd = nextGrid <= currentPPQN ? nextGrid + TempoChangeGrid : nextGrid;
90
+ const actualEnd = Math.min(segmentEnd, eventPosition);
91
+ accumulatedSeconds += PPQN.pulsesToSeconds(actualEnd - currentPPQN, currentBpm);
92
+ currentPPQN = actualEnd;
93
+ }
94
+ entries.push({ ppqn: eventPosition, seconds: accumulatedSeconds, bpm: collection.valueAt(eventPosition, storageBpm) });
95
+ }
96
+ __classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f").push(...entries);
97
+ const sortedBySeconds = entries.slice().sort((a, b) => a.seconds - b.seconds);
98
+ __classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f").push(...sortedBySeconds);
99
+ }, _VaryingTempoMap_ppqnToSecondsPositive = function _VaryingTempoMap_ppqnToSecondsPositive(position) {
100
+ if (position <= 0) {
101
+ return 0.0;
102
+ }
103
+ const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
104
+ const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
105
+ if (tempoEvents.isEmpty()) {
106
+ return PPQN.pulsesToSeconds(position, storageBpm);
107
+ }
108
+ const collection = tempoEvents.unwrap();
109
+ if (collection.events.isEmpty()) {
110
+ return PPQN.pulsesToSeconds(position, storageBpm);
111
+ }
112
+ let startPPQN = 0.0;
113
+ let startSeconds = 0.0;
114
+ if (__classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f").length > 0) {
115
+ const index = BinarySearch.rightMostMapped(__classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f"), position, NumberComparator, (entry) => entry.ppqn);
116
+ if (index >= 0) {
117
+ const entry = __classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f")[index];
118
+ startPPQN = entry.ppqn;
119
+ startSeconds = entry.seconds;
120
+ if (index === __classPrivateFieldGet(this, _VaryingTempoMap_ppqnCache, "f").length - 1) {
121
+ return startSeconds + PPQN.pulsesToSeconds(position - startPPQN, entry.bpm);
122
+ }
123
+ }
124
+ }
125
+ let accumulatedSeconds = startSeconds;
126
+ let currentPPQN = startPPQN;
127
+ while (currentPPQN < position) {
128
+ const currentBpm = collection.valueAt(currentPPQN, storageBpm);
129
+ const nextGrid = quantizeCeil(currentPPQN, TempoChangeGrid);
130
+ const segmentEnd = nextGrid <= currentPPQN ? nextGrid + TempoChangeGrid : nextGrid;
131
+ const actualEnd = Math.min(segmentEnd, position);
132
+ accumulatedSeconds += PPQN.pulsesToSeconds(actualEnd - currentPPQN, currentBpm);
133
+ currentPPQN = actualEnd;
134
+ }
135
+ return accumulatedSeconds;
136
+ }, _VaryingTempoMap_absoluteSecondsToPPQN = function _VaryingTempoMap_absoluteSecondsToPPQN(targetSeconds) {
79
137
  if (targetSeconds <= 0) {
80
138
  return 0.0;
81
139
  }
@@ -88,8 +146,21 @@ _VaryingTempoMap_adapter = new WeakMap(), _VaryingTempoMap_instances = new WeakS
88
146
  if (collection.events.isEmpty()) {
89
147
  return PPQN.secondsToPulses(targetSeconds, storageBpm);
90
148
  }
91
- let accumulatedSeconds = 0.0;
92
- let accumulatedPPQN = 0.0;
149
+ let startPPQN = 0.0;
150
+ let startSeconds = 0.0;
151
+ if (__classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f").length > 0) {
152
+ const index = BinarySearch.rightMostMapped(__classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f"), targetSeconds, NumberComparator, (entry) => entry.seconds);
153
+ if (index >= 0) {
154
+ const entry = __classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f")[index];
155
+ startPPQN = entry.ppqn;
156
+ startSeconds = entry.seconds;
157
+ if (index === __classPrivateFieldGet(this, _VaryingTempoMap_secondsCache, "f").length - 1) {
158
+ return startPPQN + PPQN.secondsToPulses(targetSeconds - startSeconds, entry.bpm);
159
+ }
160
+ }
161
+ }
162
+ let accumulatedSeconds = startSeconds;
163
+ let accumulatedPPQN = startPPQN;
93
164
  while (accumulatedSeconds < targetSeconds) {
94
165
  const currentBpm = collection.valueAt(accumulatedPPQN, storageBpm);
95
166
  const nextGrid = quantizeCeil(accumulatedPPQN, TempoChangeGrid);
@@ -1,11 +1,12 @@
1
1
  import { NeuralAmpDeviceBox } from "@opendaw/studio-boxes";
2
- import { UUID } from "@opendaw/lib-std";
2
+ import { Option, UUID } from "@opendaw/lib-std";
3
3
  import { Address, BooleanField, Int32Field, PointerField, StringField } from "@opendaw/lib-box";
4
4
  import { Pointers } from "@opendaw/studio-enums";
5
5
  import { AudioEffectDeviceAdapter, DeviceHost } from "../../DeviceAdapter";
6
6
  import { LabeledAudioOutput } from "../../LabeledAudioOutputsOwner";
7
7
  import { BoxAdaptersContext } from "../../BoxAdaptersContext";
8
8
  import { AudioUnitBoxAdapter } from "../../audio-unit/AudioUnitBoxAdapter";
9
+ import { NeuralAmpModelBoxAdapter } from "../../nam/NeuralAmpModelBoxAdapter";
9
10
  export declare class NeuralAmpDeviceBoxAdapter implements AudioEffectDeviceAdapter {
10
11
  #private;
11
12
  readonly type = "audio-effect";
@@ -25,9 +26,11 @@ export declare class NeuralAmpDeviceBoxAdapter implements AudioEffectDeviceAdapt
25
26
  get enabledField(): BooleanField;
26
27
  get minimizedField(): BooleanField;
27
28
  get host(): PointerField<Pointers.AudioEffectHost>;
28
- get modelJsonField(): StringField;
29
+ get modelField(): PointerField<Pointers.NeuralAmpModel>;
29
30
  get monoField(): BooleanField;
30
31
  get spectrum(): Address;
32
+ getModelAdapter(): Option<NeuralAmpModelBoxAdapter>;
33
+ getModelJson(): string;
31
34
  deviceHost(): DeviceHost;
32
35
  audioUnitBoxAdapter(): AudioUnitBoxAdapter;
33
36
  labeledAudioOutputs(): Iterable<LabeledAudioOutput>;
@@ -1 +1 @@
1
- {"version":3,"file":"NeuralAmpDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/audio-effects/NeuralAmpDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAwB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAU,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAG3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAExE,qBAAa,yBAA0B,YAAW,wBAAwB;;IACtE,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,OAAO,WAAU;IAC1B,QAAQ,CAAC,SAAS,sCAA6B;IAM/C,QAAQ,CAAC,cAAc;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAOhE,IAAI,GAAG,IAAI,kBAAkB,CAAmB;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAwB;IAC1E,IAAI,cAAc,IAAI,WAAW,CAA6B;IAC9D,IAAI,SAAS,IAAI,YAAY,CAAwB;IACrD,IAAI,QAAQ,IAAI,OAAO,CAAyC;IAEhE,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAExC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAIrD,SAAS,IAAI,IAAI;CAmBpB"}
1
+ {"version":3,"file":"NeuralAmpDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/audio-effects/NeuralAmpDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAoB,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAC,MAAM,EAAiB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,wBAAwB,EAAE,UAAU,EAAU,MAAM,qBAAqB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAG3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AACxE,OAAO,EAAC,wBAAwB,EAAC,MAAM,oCAAoC,CAAA;AAE3E,qBAAa,yBAA0B,YAAW,wBAAwB;;IACtE,QAAQ,CAAC,IAAI,kBAAiB;IAC9B,QAAQ,CAAC,OAAO,WAAU;IAC1B,QAAQ,CAAC,SAAS,sCAA6B;IAM/C,QAAQ,CAAC,cAAc;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB;IAOhE,IAAI,GAAG,IAAI,kBAAkB,CAAmB;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAwB;IAC1E,IAAI,UAAU,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;IAChF,IAAI,SAAS,IAAI,YAAY,CAAwB;IACrD,IAAI,QAAQ,IAAI,OAAO,CAAyC;IAEhE,eAAe,IAAI,MAAM,CAAC,wBAAwB,CAAC;IAMnD,YAAY,IAAI,MAAM;IAQtB,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAExC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAIrD,SAAS,IAAI,IAAI;CAmBpB"}
@@ -14,6 +14,7 @@ import { Option, StringMapping, ValueMapping } from "@opendaw/lib-std";
14
14
  import { Devices } from "../../DeviceAdapter";
15
15
  import { DeviceManualUrls } from "../../DeviceManualUrls";
16
16
  import { ParameterAdapterSet } from "../../ParameterAdapterSet";
17
+ import { NeuralAmpModelBoxAdapter } from "../../nam/NeuralAmpModelBoxAdapter";
17
18
  export class NeuralAmpDeviceBoxAdapter {
18
19
  constructor(context, box) {
19
20
  _NeuralAmpDeviceBoxAdapter_instances.add(this);
@@ -36,9 +37,23 @@ export class NeuralAmpDeviceBoxAdapter {
36
37
  get enabledField() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").enabled; }
37
38
  get minimizedField() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").minimized; }
38
39
  get host() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").host; }
39
- get modelJsonField() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").modelJson; }
40
+ get modelField() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").model; }
40
41
  get monoField() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").mono; }
41
42
  get spectrum() { return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").address.append(0xFFF); }
43
+ getModelAdapter() {
44
+ const target = __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").model.targetVertex;
45
+ if (target.isEmpty()) {
46
+ return Option.None;
47
+ }
48
+ return Option.wrap(__classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_context, "f").boxAdapters.adapterFor(target.unwrap().box, NeuralAmpModelBoxAdapter));
49
+ }
50
+ getModelJson() {
51
+ const modelAdapter = this.getModelAdapter();
52
+ if (modelAdapter.nonEmpty()) {
53
+ return modelAdapter.unwrap().getModelJson();
54
+ }
55
+ return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").modelJson.getValue();
56
+ }
42
57
  deviceHost() {
43
58
  return __classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_context, "f").boxAdapters
44
59
  .adapterFor(__classPrivateFieldGet(this, _NeuralAmpDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
package/dist/index.d.ts CHANGED
@@ -102,6 +102,7 @@ export * from "./modular/modules/delay";
102
102
  export * from "./modular/modules/gain";
103
103
  export * from "./modular/modules/multiplier";
104
104
  export * from "./modular/user-interface";
105
+ export * from "./nam/NeuralAmpModelBoxAdapter";
105
106
  export * from "./offline-renderer";
106
107
  export * from "./preset/PresetDecoder";
107
108
  export * from "./preset/PresetEncoder";
@@ -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":"AAGA,cAAc,oCAAoC,CAAA;AAClD,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,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oCAAoC,CAAA;AAClD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,uBAAuB,CAAA;AACrC,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oDAAoD,CAAA;AAClE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,wDAAwD,CAAA;AACtE,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,mDAAmD,CAAA;AACjE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,mDAAmD,CAAA;AACjE,cAAc,gDAAgD,CAAA;AAC9D,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oDAAoD,CAAA;AAClE,cAAc,+CAA+C,CAAA;AAC7D,cAAc,4DAA4D,CAAA;AAC1E,cAAc,kDAAkD,CAAA;AAChE,cAAc,4CAA4C,CAAA;AAC1D,cAAc,sCAAsC,CAAA;AACpD,cAAc,2DAA2D,CAAA;AACzE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,4CAA4C,CAAA;AAC1D,cAAc,oDAAoD,CAAA;AAClE,cAAc,4CAA4C,CAAA;AAC1D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,0DAA0D,CAAA;AACxE,cAAc,iDAAiD,CAAA;AAC/D,cAAc,kDAAkD,CAAA;AAChE,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA;AACxC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qCAAqC,CAAA;AACnD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qCAAqC,CAAA;AACnD,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qCAAqC,CAAA;AACnD,cAAc,oCAAoC,CAAA;AAClD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qDAAqD,CAAA;AACnE,cAAc,sDAAsD,CAAA;AACpE,cAAc,4CAA4C,CAAA;AAC1D,cAAc,sCAAsC,CAAA;AACpD,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AACvD,cAAc,UAAU,CAAA;AACxB,YAAY,EAAC,WAAW,EAAE,mBAAmB,EAAC,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAC,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAC,MAAM,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -104,6 +104,7 @@ export * from "./modular/modules/delay";
104
104
  export * from "./modular/modules/gain";
105
105
  export * from "./modular/modules/multiplier";
106
106
  export * from "./modular/user-interface";
107
+ export * from "./nam/NeuralAmpModelBoxAdapter";
107
108
  export * from "./offline-renderer";
108
109
  export * from "./preset/PresetDecoder";
109
110
  export * from "./preset/PresetEncoder";
@@ -0,0 +1,17 @@
1
+ import { NeuralAmpModelBox } from "@opendaw/studio-boxes";
2
+ import { UUID } from "@opendaw/lib-std";
3
+ import { Address, StringField } from "@opendaw/lib-box";
4
+ import { BoxAdaptersContext } from "../BoxAdaptersContext";
5
+ import { BoxAdapter } from "../BoxAdapter";
6
+ export declare class NeuralAmpModelBoxAdapter implements BoxAdapter {
7
+ #private;
8
+ constructor(context: BoxAdaptersContext, box: NeuralAmpModelBox);
9
+ get box(): NeuralAmpModelBox;
10
+ get uuid(): UUID.Bytes;
11
+ get address(): Address;
12
+ get labelField(): StringField;
13
+ get modelField(): StringField;
14
+ getModelJson(): string;
15
+ terminate(): void;
16
+ }
17
+ //# sourceMappingURL=NeuralAmpModelBoxAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeuralAmpModelBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/nam/NeuralAmpModelBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAExC,qBAAa,wBAAyB,YAAW,UAAU;;gBAI3C,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAK/D,IAAI,GAAG,IAAI,iBAAiB,CAAmB;IAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,UAAU,IAAI,WAAW,CAAyB;IAEtD,YAAY,IAAI,MAAM;IAItB,SAAS,IAAI,IAAI;CACpB"}
@@ -0,0 +1,30 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _NeuralAmpModelBoxAdapter_context, _NeuralAmpModelBoxAdapter_box;
13
+ export class NeuralAmpModelBoxAdapter {
14
+ constructor(context, box) {
15
+ _NeuralAmpModelBoxAdapter_context.set(this, void 0);
16
+ _NeuralAmpModelBoxAdapter_box.set(this, void 0);
17
+ __classPrivateFieldSet(this, _NeuralAmpModelBoxAdapter_context, context, "f");
18
+ __classPrivateFieldSet(this, _NeuralAmpModelBoxAdapter_box, box, "f");
19
+ }
20
+ get box() { return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f"); }
21
+ get uuid() { return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f").address.uuid; }
22
+ get address() { return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f").address; }
23
+ get labelField() { return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f").label; }
24
+ get modelField() { return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f").model; }
25
+ getModelJson() {
26
+ return __classPrivateFieldGet(this, _NeuralAmpModelBoxAdapter_box, "f").model.getValue();
27
+ }
28
+ terminate() { }
29
+ }
30
+ _NeuralAmpModelBoxAdapter_context = new WeakMap(), _NeuralAmpModelBoxAdapter_box = new WeakMap();
@@ -103,7 +103,7 @@ export var ProjectUtils;
103
103
  ...dependencies
104
104
  .map(box => ({
105
105
  source: box.address.uuid,
106
- target: box.resource === "external" ? box.address.uuid : UUID.generate()
106
+ target: box.resource === "preserved" ? box.address.uuid : UUID.generate()
107
107
  }))
108
108
  ]);
109
109
  return uuidMap;
@@ -111,7 +111,7 @@ export var ProjectUtils;
111
111
  const copy = (uuidMap, boxGraph, audioUnitBoxes, dependencies) => {
112
112
  const existingExternalResourceUUIDs = UUID.newSet(uuid => uuid);
113
113
  dependencies.forEach((source) => {
114
- if (source.resource === "external" && boxGraph.findBox(source.address.uuid).nonEmpty()) {
114
+ if (source.resource === "preserved" && boxGraph.findBox(source.address.uuid).nonEmpty()) {
115
115
  existingExternalResourceUUIDs.add(source.address.uuid);
116
116
  }
117
117
  });
@@ -3,6 +3,10 @@ import { AudioData, ppqn } from "@opendaw/lib-dsp";
3
3
  import { ClipSequencingUpdates } from "./ClipNotifications";
4
4
  import { NoteSignal } from "./NoteSignal";
5
5
  import type { SoundFont2 } from "soundfont2";
6
+ export type MonitoringMapEntry = {
7
+ uuid: UUID.Bytes;
8
+ channels: ReadonlyArray<int>;
9
+ };
6
10
  export interface EngineCommands extends Terminable {
7
11
  play(): void;
8
12
  stop(reset: boolean): void;
@@ -17,6 +21,7 @@ export interface EngineCommands extends Terminable {
17
21
  scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
18
22
  setupMIDI(port: MessagePort, buffer: SharedArrayBuffer): void;
19
23
  loadClickSound(index: 0 | 1, data: AudioData): void;
24
+ updateMonitoringMap(map: ReadonlyArray<MonitoringMapEntry>): void;
20
25
  }
21
26
  export interface EngineToClient {
22
27
  log(message: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IAEb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAExC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAE7D,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;CACtD;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrD,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACpC,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,IAAI,IAAI,CAAA;CAChB"}
1
+ {"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAAE,CAAA;AAEnF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IAEb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAExC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAE7D,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAEnD,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrD,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACpC,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,IAAI,IAAI,CAAA;CAChB"}
@@ -137,10 +137,10 @@ export class ValueEventCollectionBoxAdapter {
137
137
  }
138
138
  subscribeChange(observer) { return __classPrivateFieldGet(this, _ValueEventCollectionBoxAdapter_changeNotifier, "f").subscribe(observer); }
139
139
  createEvent({ position, index, value, interpolation }) {
140
- // Position is stored as integer in box, so truncate for comparison to prevent duplicates
141
140
  const intPosition = Math.trunc(position);
142
141
  const existing = __classPrivateFieldGet(this, _ValueEventCollectionBoxAdapter_adapters, "f").values().find(event => event.position === intPosition && event.index === index);
143
- if (isDefined(existing)) {
142
+ // the adapters might be out of sync until the current transaction ends. Therefore, we check with isAttached.
143
+ if (isDefined(existing) && existing.box.isAttached()) {
144
144
  // Return an existing event instead of creating a duplicate-update its value
145
145
  existing.box.value.setValue(value);
146
146
  InterpolationFieldAdapter.write(existing.box.interpolation, interpolation);
@@ -70,7 +70,7 @@ export declare class AudioRegionBoxAdapter implements AudioContentBoxAdapter, Lo
70
70
  moveContentStart(delta: ppqn): void;
71
71
  copyTo(params?: CopyToParams): AudioRegionBoxAdapter;
72
72
  consolidate(): void;
73
- canFlatten(_regions: ReadonlyArray<RegionBoxAdapter<unknown>>): boolean;
73
+ canFlatten(regions: ReadonlyArray<RegionBoxAdapter<unknown>>): boolean;
74
74
  flatten(_regions: ReadonlyArray<RegionBoxAdapter<unknown>>): Option<AudioRegionBox>;
75
75
  terminate(): void;
76
76
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/AudioRegionBoxAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/AudioRegionBoxAdapter.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _AudioRegionBoxAdapter_instances, _AudioRegionBoxAdapter_terminator, _AudioRegionBoxAdapter_context, _AudioRegionBoxAdapter_box, _AudioRegionBoxAdapter_durationConverter, _AudioRegionBoxAdapter_loopDurationConverter, _AudioRegionBoxAdapter_playMode, _AudioRegionBoxAdapter_changeNotifier, _AudioRegionBoxAdapter_fadingAdapter, _AudioRegionBoxAdapter_constructing, _AudioRegionBoxAdapter_fileAdapter, _AudioRegionBoxAdapter_fileSubscription, _AudioRegionBoxAdapter_playModeSubscription, _AudioRegionBoxAdapter_tempoSubscription, _AudioRegionBoxAdapter_eventCollectionSubscription, _AudioRegionBoxAdapter_isSelected, _AudioRegionBoxAdapter_dispatchChange;
13
- import { asEnumValue, isInstanceOf, mod, MutableObservableOption, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
13
+ import { Arrays, asEnumValue, isInstanceOf, mod, MutableObservableOption, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
14
14
  import { TimeBase, TimeBaseConverter } from "@opendaw/lib-dsp";
15
15
  import { Propagation } from "@opendaw/lib-box";
16
16
  import { AudioRegionBox } from "@opendaw/studio-boxes";
@@ -221,10 +221,12 @@ export class AudioRegionBoxAdapter {
221
221
  adapter.duration = params?.duration ?? this.resolveDuration(adapter.position);
222
222
  return adapter;
223
223
  }
224
- consolidate() {
225
- // TODO This needs to done by creating a new audio file
224
+ consolidate() { }
225
+ canFlatten(regions) {
226
+ return regions.length > 0
227
+ && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap()))
228
+ && regions.every(region => region.isSelected && region instanceof AudioRegionBoxAdapter);
226
229
  }
227
- canFlatten(_regions) { return false; }
228
230
  flatten(_regions) {
229
231
  // TODO This needs to done by creating a new audio file
230
232
  return Option.None;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-adapters",
3
- "version": "0.0.80",
3
+ "version": "0.0.82",
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.70",
27
- "@opendaw/lib-dsp": "^0.0.69",
28
- "@opendaw/lib-fusion": "^0.0.75",
29
- "@opendaw/lib-runtime": "^0.0.67",
30
- "@opendaw/lib-std": "^0.0.66",
31
- "@opendaw/studio-boxes": "^0.0.72",
32
- "@opendaw/studio-enums": "^0.0.61",
26
+ "@opendaw/lib-box": "^0.0.72",
27
+ "@opendaw/lib-dsp": "^0.0.71",
28
+ "@opendaw/lib-fusion": "^0.0.77",
29
+ "@opendaw/lib-runtime": "^0.0.69",
30
+ "@opendaw/lib-std": "^0.0.68",
31
+ "@opendaw/studio-boxes": "^0.0.74",
32
+ "@opendaw/studio-enums": "^0.0.63",
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.28"
38
38
  },
39
- "gitHead": "a23a423a60a8b0cebfb973224ffb6eddd6fb6943"
39
+ "gitHead": "5e97da8bbe6085b04c34b9ff7e816b22225bf915"
40
40
  }