@opendaw/studio-adapters 0.0.51 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
  2. package/dist/AutomatableParameterFieldAdapter.js +1 -1
  3. package/dist/BoxAdapters.d.ts.map +1 -1
  4. package/dist/BoxAdapters.js +10 -0
  5. package/dist/EngineAddresses.d.ts +7 -0
  6. package/dist/EngineAddresses.d.ts.map +1 -0
  7. package/dist/EngineAddresses.js +8 -0
  8. package/dist/audio/AudioFileBoxAdapter.d.ts +7 -2
  9. package/dist/audio/AudioFileBoxAdapter.d.ts.map +1 -1
  10. package/dist/audio/AudioFileBoxAdapter.js +54 -6
  11. package/dist/audio/AudioPitchBoxAdapter.d.ts +19 -0
  12. package/dist/audio/AudioPitchBoxAdapter.d.ts.map +1 -0
  13. package/dist/audio/AudioPitchBoxAdapter.js +52 -0
  14. package/dist/audio/AudioPlayMode.d.ts +7 -0
  15. package/dist/audio/AudioPlayMode.d.ts.map +1 -0
  16. package/dist/audio/AudioPlayMode.js +6 -0
  17. package/dist/audio/AudioTimeStretchBoxAdapter.d.ts +22 -0
  18. package/dist/audio/AudioTimeStretchBoxAdapter.d.ts.map +1 -0
  19. package/dist/audio/AudioTimeStretchBoxAdapter.js +57 -0
  20. package/dist/audio/MarkerComparator.d.ts +6 -0
  21. package/dist/audio/MarkerComparator.d.ts.map +1 -0
  22. package/dist/audio/MarkerComparator.js +9 -0
  23. package/dist/audio/TransientMarker.d.ts +5 -0
  24. package/dist/audio/TransientMarker.d.ts.map +1 -0
  25. package/dist/audio/TransientMarkerBoxAdapter.d.ts +17 -0
  26. package/dist/audio/TransientMarkerBoxAdapter.d.ts.map +1 -0
  27. package/dist/audio/TransientMarkerBoxAdapter.js +30 -0
  28. package/dist/audio/WarpMarker.d.ts +6 -0
  29. package/dist/audio/WarpMarker.d.ts.map +1 -0
  30. package/dist/audio/WarpMarker.js +1 -0
  31. package/dist/audio/WarpMarkerBoxAdapter.d.ts +26 -0
  32. package/dist/audio/WarpMarkerBoxAdapter.d.ts.map +1 -0
  33. package/dist/audio/WarpMarkerBoxAdapter.js +58 -0
  34. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts +39 -0
  35. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts.map +1 -0
  36. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.js +59 -0
  37. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +1 -1
  38. package/dist/factories/AudioBusFactory.d.ts +2 -1
  39. package/dist/factories/AudioBusFactory.d.ts.map +1 -1
  40. package/dist/factories/AudioBusFactory.js +1 -1
  41. package/dist/factories/ColorCodes.d.ts +2 -1
  42. package/dist/factories/ColorCodes.d.ts.map +1 -1
  43. package/dist/factories/ColorCodes.js +1 -2
  44. package/dist/factories/InstrumentBox.d.ts.map +1 -1
  45. package/dist/index.d.ts +11 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +11 -2
  48. package/dist/protocols.d.ts +2 -3
  49. package/dist/protocols.d.ts.map +1 -1
  50. package/dist/sample/SampleLoader.d.ts +1 -1
  51. package/dist/sample/SampleLoader.d.ts.map +1 -1
  52. package/dist/selection/VertexSelection.d.ts.map +1 -1
  53. package/dist/selection/VertexSelection.js +1 -0
  54. package/dist/timeline/AudioContentBoxAdapter.d.ts +20 -0
  55. package/dist/timeline/AudioContentBoxAdapter.d.ts.map +1 -0
  56. package/dist/timeline/AudioContentBoxAdapter.js +1 -0
  57. package/dist/timeline/RegionEditing.js +2 -2
  58. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +19 -5
  59. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
  60. package/dist/timeline/clip/AudioClipBoxAdapter.js +64 -15
  61. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -1
  62. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +9 -13
  63. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +20 -9
  64. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
  65. package/dist/timeline/region/AudioRegionBoxAdapter.js +75 -67
  66. package/package.json +8 -8
  67. package/dist/audio/AudioData.d.ts +0 -7
  68. package/dist/audio/AudioData.d.ts.map +0 -1
  69. package/dist/factories/Colors.d.ts +0 -15
  70. package/dist/factories/Colors.d.ts.map +0 -1
  71. package/dist/factories/Colors.js +0 -23
  72. /package/dist/audio/{AudioData.js → TransientMarker.js} +0 -0
@@ -9,13 +9,16 @@ 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 _AudioClipBoxAdapter_instances, _AudioClipBoxAdapter_terminator, _AudioClipBoxAdapter_context, _AudioClipBoxAdapter_box, _AudioClipBoxAdapter_selectedValue, _AudioClipBoxAdapter_changeNotifier, _AudioClipBoxAdapter_isConstructing, _AudioClipBoxAdapter_fileAdapter, _AudioClipBoxAdapter_fileSubscription, _AudioClipBoxAdapter_dispatchChange;
13
- import { PPQN } from "@opendaw/lib-dsp";
14
- import { DefaultObservableValue, Notifier, Option, safeExecute, Terminator, UUID } from "@opendaw/lib-std";
12
+ var _AudioClipBoxAdapter_instances, _AudioClipBoxAdapter_terminator, _AudioClipBoxAdapter_context, _AudioClipBoxAdapter_box, _AudioClipBoxAdapter_playMode, _AudioClipBoxAdapter_selectedValue, _AudioClipBoxAdapter_durationConverter, _AudioClipBoxAdapter_changeNotifier, _AudioClipBoxAdapter_isConstructing, _AudioClipBoxAdapter_fileAdapter, _AudioClipBoxAdapter_fileSubscription, _AudioClipBoxAdapter_playModeSubscription, _AudioClipBoxAdapter_dispatchChange;
13
+ import { PPQN, TimeBase, TimeBaseConverter } from "@opendaw/lib-dsp";
14
+ import { asEnumValue, DefaultObservableValue, isInstanceOf, MutableObservableOption, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
15
15
  import { AudioClipBox } from "@opendaw/studio-boxes";
16
16
  import { Propagation } from "@opendaw/lib-box";
17
17
  import { TrackBoxAdapter } from "../TrackBoxAdapter";
18
18
  import { AudioFileBoxAdapter } from "../../audio/AudioFileBoxAdapter";
19
+ import { AudioPlayMode } from "../../audio/AudioPlayMode";
20
+ import { AudioPitchBoxAdapter } from "../../audio/AudioPitchBoxAdapter";
21
+ import { AudioTimeStretchBoxAdapter } from "../../audio/AudioTimeStretchBoxAdapter";
19
22
  export class AudioClipBoxAdapter {
20
23
  constructor(context, box) {
21
24
  _AudioClipBoxAdapter_instances.add(this);
@@ -23,30 +26,40 @@ export class AudioClipBoxAdapter {
23
26
  _AudioClipBoxAdapter_terminator.set(this, new Terminator());
24
27
  _AudioClipBoxAdapter_context.set(this, void 0);
25
28
  _AudioClipBoxAdapter_box.set(this, void 0);
29
+ _AudioClipBoxAdapter_playMode.set(this, void 0);
26
30
  _AudioClipBoxAdapter_selectedValue.set(this, void 0);
31
+ _AudioClipBoxAdapter_durationConverter.set(this, void 0);
27
32
  _AudioClipBoxAdapter_changeNotifier.set(this, void 0);
28
33
  _AudioClipBoxAdapter_isConstructing.set(this, void 0); // Prevents stack overflow due to infinite adapter queries
29
34
  _AudioClipBoxAdapter_fileAdapter.set(this, Option.None);
30
35
  _AudioClipBoxAdapter_fileSubscription.set(this, Option.None);
36
+ _AudioClipBoxAdapter_playModeSubscription.set(this, Terminable.Empty);
31
37
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_context, context, "f");
32
38
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_box, box, "f");
33
39
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_isConstructing, true, "f");
40
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_playMode, new MutableObservableOption(), "f");
34
41
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_selectedValue, __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").own(new DefaultObservableValue(false)), "f");
42
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_durationConverter, TimeBaseConverter.aware(context.tempoMap, box.timeBase, AudioClipBoxAdapter.STATIC_POSITION, box.duration), "f");
35
43
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_changeNotifier, __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").own(new Notifier()), "f");
36
44
  __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").pointerHub.subscribe({
37
45
  onAdded: () => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this),
38
46
  onRemoved: () => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this)
47
+ }), __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").playMode.catchupAndSubscribe(({ targetVertex }) => {
48
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_playModeSubscription, "f").terminate();
49
+ targetVertex.match({
50
+ none: () => __classPrivateFieldGet(this, _AudioClipBoxAdapter_playMode, "f").clear(),
51
+ some: ({ box }) => {
52
+ const playMode = __classPrivateFieldGet(this, _AudioClipBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioPlayMode.isAudioPlayMode);
53
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_playModeSubscription, playMode.subscribe(() => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this)), "f");
54
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_playMode, "f").wrap(playMode);
55
+ }
56
+ });
39
57
  }), __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").file.catchupAndSubscribe((pointerField) => {
40
58
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_fileAdapter, pointerField.targetVertex
41
59
  .map(vertex => __classPrivateFieldGet(this, _AudioClipBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, AudioFileBoxAdapter)), "f");
42
60
  __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileSubscription, "f").ifSome(subscription => subscription.terminate());
43
61
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_fileSubscription, __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f").map(adapter => adapter.getOrCreateLoader().subscribe(() => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this))), "f");
44
- }), __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").subscribe(Propagation.Children, (_update) => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this)), {
45
- terminate: () => {
46
- __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileSubscription, "f").ifSome(subscription => subscription.terminate());
47
- __classPrivateFieldSet(this, _AudioClipBoxAdapter_fileSubscription, Option.None, "f");
48
- }
49
- });
62
+ }), __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").subscribe(Propagation.Children, (_update) => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this)));
50
63
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_isConstructing, false, "f");
51
64
  }
52
65
  catchupAndSubscribeSelected(observer) {
@@ -58,31 +71,59 @@ export class AudioClipBoxAdapter {
58
71
  clone(_mirrored) {
59
72
  AudioClipBox.create(__classPrivateFieldGet(this, _AudioClipBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
60
73
  box.index.setValue(this.indexField.getValue());
61
- box.gain.setValue(this.gain);
74
+ box.gain.setValue(this.gain.getValue());
75
+ box.timeBase.setValue(this.timeBase);
62
76
  box.label.setValue(this.label);
63
77
  box.hue.setValue(this.hue);
64
78
  box.duration.setValue(this.duration);
65
79
  box.mute.setValue(this.mute);
66
80
  box.clips.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").clips.targetVertex.unwrap());
67
81
  box.file.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").file.targetVertex.unwrap());
82
+ box.events.refer(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").events.targetVertex.unwrap());
83
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").playMode.ifVertex(vertex => box.playMode.refer(vertex.box));
68
84
  });
69
85
  }
70
86
  onSelected() { __classPrivateFieldGet(this, _AudioClipBoxAdapter_selectedValue, "f").setValue(true); }
71
87
  onDeselected() { __classPrivateFieldGet(this, _AudioClipBoxAdapter_selectedValue, "f").setValue(false); }
72
88
  get isSelected() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_selectedValue, "f").getValue(); }
73
- terminate() { __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").terminate(); }
74
89
  get box() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f"); }
75
90
  get uuid() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").address.uuid; }
76
91
  get address() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").address; }
77
92
  get indexField() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").index; }
78
- get duration() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").duration.getValue(); }
93
+ get duration() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").toPPQN(); }
94
+ set duration(value) { __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").fromPPQN(value); }
79
95
  get mute() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").mute.getValue(); }
80
96
  get hue() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").hue.getValue(); }
81
- get gain() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").gain.getValue(); }
97
+ get gain() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").gain; }
82
98
  get file() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f").unwrap("Cannot access file."); }
99
+ get observableOptPlayMode() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_playMode, "f"); }
83
100
  get hasCollection() { return !this.optCollection.isEmpty(); }
84
101
  get optCollection() { return Option.None; }
85
- get label() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").label.getValue(); }
102
+ get timeBase() { return asEnumValue(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").timeBase.getValue(), TimeBase); }
103
+ get waveformOffset() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").waveformOffset; }
104
+ get isPlayModeNoWarp() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").playMode.isEmpty(); }
105
+ get asPlayModePitch() {
106
+ return this.observableOptPlayMode.map(mode => isInstanceOf(mode, AudioPitchBoxAdapter) ? mode : null);
107
+ }
108
+ get asPlayModeTimeStretch() {
109
+ return this.observableOptPlayMode.map(mode => isInstanceOf(mode, AudioTimeStretchBoxAdapter) ? mode : null);
110
+ }
111
+ get optWarpMarkers() {
112
+ return this.observableOptPlayMode.map(mode => AudioPlayMode.isAudioPlayMode(mode) ? mode.warpMarkers : null);
113
+ }
114
+ get label() {
115
+ if (__classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f").isEmpty()) {
116
+ return "No Audio File";
117
+ }
118
+ const state = __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileAdapter, "f").unwrap().getOrCreateLoader().state;
119
+ if (state.type === "progress") {
120
+ return `${Math.round(state.progress * 100)}%`;
121
+ }
122
+ if (state.type === "error") {
123
+ return String(state.reason);
124
+ }
125
+ return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").label.getValue();
126
+ }
86
127
  get trackBoxAdapter() {
87
128
  if (__classPrivateFieldGet(this, _AudioClipBoxAdapter_isConstructing, "f")) {
88
129
  return Option.None;
@@ -92,9 +133,17 @@ export class AudioClipBoxAdapter {
92
133
  }
93
134
  get isMirrowed() { return false; }
94
135
  get canMirror() { return false; }
136
+ terminate() {
137
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_fileSubscription, "f").ifSome(subscription => subscription.terminate());
138
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_fileSubscription, Option.None, "f");
139
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_playModeSubscription, "f").terminate();
140
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_playModeSubscription, Terminable.Empty, "f");
141
+ __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").terminate();
142
+ }
95
143
  toString() { return `{AudioClipBoxAdapter ${UUID.toString(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").address.uuid)} d: ${PPQN.toString(this.duration)}}`; }
96
144
  }
97
- _AudioClipBoxAdapter_terminator = new WeakMap(), _AudioClipBoxAdapter_context = new WeakMap(), _AudioClipBoxAdapter_box = new WeakMap(), _AudioClipBoxAdapter_selectedValue = new WeakMap(), _AudioClipBoxAdapter_changeNotifier = new WeakMap(), _AudioClipBoxAdapter_isConstructing = new WeakMap(), _AudioClipBoxAdapter_fileAdapter = new WeakMap(), _AudioClipBoxAdapter_fileSubscription = new WeakMap(), _AudioClipBoxAdapter_instances = new WeakSet(), _AudioClipBoxAdapter_dispatchChange = function _AudioClipBoxAdapter_dispatchChange() {
145
+ _AudioClipBoxAdapter_terminator = new WeakMap(), _AudioClipBoxAdapter_context = new WeakMap(), _AudioClipBoxAdapter_box = new WeakMap(), _AudioClipBoxAdapter_playMode = new WeakMap(), _AudioClipBoxAdapter_selectedValue = new WeakMap(), _AudioClipBoxAdapter_durationConverter = new WeakMap(), _AudioClipBoxAdapter_changeNotifier = new WeakMap(), _AudioClipBoxAdapter_isConstructing = new WeakMap(), _AudioClipBoxAdapter_fileAdapter = new WeakMap(), _AudioClipBoxAdapter_fileSubscription = new WeakMap(), _AudioClipBoxAdapter_playModeSubscription = new WeakMap(), _AudioClipBoxAdapter_instances = new WeakSet(), _AudioClipBoxAdapter_dispatchChange = function _AudioClipBoxAdapter_dispatchChange() {
98
146
  __classPrivateFieldGet(this, _AudioClipBoxAdapter_changeNotifier, "f").notify();
99
147
  this.trackBoxAdapter.unwrapOrNull()?.clips?.dispatchChange();
100
148
  };
149
+ AudioClipBoxAdapter.STATIC_POSITION = { getValue: () => 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"NoteEventCollectionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/collection/NoteEventCollectionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,sBAAsB,EAAC,MAAM,uBAAuB,CAAA;AACtF,OAAO,EAEH,WAAW,EACX,KAAK,EACL,GAAG,EAIH,QAAQ,EACR,iBAAiB,EAEjB,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAM,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,eAAe,EAAa,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAEjE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,IAAI,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,EAAE,GAAG,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,EAAE,GAAG,CAAA;IACX,SAAS,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,qBAAa,6BAA8B,YAAW,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,CAAC;;gBAenG,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,sBAAsB;IA+BpE,IAAI,IAAI,6BAA6B;IAOrC,WAAW,CACP,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAC,EAAE,iBAAiB,GAAG,mBAAmB;IAa3G,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEvD,UAAU,IAAI,QAAQ,CAAC,mBAAmB,CAAC;IAE3C,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAShF,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAW7G,cAAc,IAAI,IAAI;IAKtB,sBAAsB,IAAI,IAAI;IAE9B,SAAS;IAET,IAAI,GAAG,IAAI,sBAAsB,CAAmB;IACpD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAiF;IACrG,IAAI,MAAM,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAKjD;IAED,IAAI,QAAQ,IAAI,GAAG,CAGlB;IACD,IAAI,QAAQ,IAAI,GAAG,CAGlB;IACD,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,QAAQ,IAAI,MAAM;CAqBrB"}
1
+ {"version":3,"file":"NoteEventCollectionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/collection/NoteEventCollectionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,sBAAsB,EAAC,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EACH,WAAW,EACX,KAAK,EACL,GAAG,EAIH,QAAQ,EACR,iBAAiB,EAEjB,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,eAAe,EAAa,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAEjE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,IAAI,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,KAAK,EAAE,GAAG,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,EAAE,GAAG,CAAA;IACX,SAAS,EAAE,GAAG,CAAA;CACjB,CAAA;AAED,qBAAa,6BAA8B,YAAW,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,CAAC;;gBAenG,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,sBAAsB;IA2BpE,IAAI,IAAI,6BAA6B;IAOrC,WAAW,CACP,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAC,EAAE,iBAAiB,GAAG,mBAAmB;IAa3G,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEvD,UAAU,IAAI,QAAQ,CAAC,mBAAmB,CAAC;IAE3C,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAShF,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC;IAW7G,cAAc,IAAI,IAAI;IAKtB,sBAAsB,IAAI,IAAI;IAE9B,SAAS;IAET,IAAI,GAAG,IAAI,sBAAsB,CAAmB;IACpD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAiF;IACrG,IAAI,MAAM,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAKjD;IAED,IAAI,QAAQ,IAAI,GAAG,CAGlB;IACD,IAAI,QAAQ,IAAI,GAAG,CAGlB;IACD,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,QAAQ,IAAI,MAAM;CAqBrB"}
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
11
  };
12
12
  var _NoteEventCollectionBoxAdapter_instances, _NoteEventCollectionBoxAdapter_terminator, _NoteEventCollectionBoxAdapter_context, _NoteEventCollectionBoxAdapter_box, _NoteEventCollectionBoxAdapter_changeNotifier, _NoteEventCollectionBoxAdapter_adapters, _NoteEventCollectionBoxAdapter_events, _NoteEventCollectionBoxAdapter_minPitch, _NoteEventCollectionBoxAdapter_maxPitch, _NoteEventCollectionBoxAdapter_maxDuration, _NoteEventCollectionBoxAdapter_computedExtremas, _NoteEventCollectionBoxAdapter_onEventsChanged, _NoteEventCollectionBoxAdapter_computeExtremas;
13
13
  import { NoteEventBox, NoteEventCollectionBox } from "@opendaw/studio-boxes";
14
- import { asDefined, Intervals, Iterables, Notifier, Terminator, UUID } from "@opendaw/lib-std";
14
+ import { Intervals, Iterables, Notifier, Terminator, UUID } from "@opendaw/lib-std";
15
15
  import { EventCollection, NoteEvent } from "@opendaw/lib-dsp";
16
16
  import { Pointers } from "@opendaw/studio-enums";
17
17
  import { NoteEventBoxAdapter } from "../event/NoteEventBoxAdapter";
@@ -33,18 +33,14 @@ export class NoteEventCollectionBoxAdapter {
33
33
  __classPrivateFieldSet(this, _NoteEventCollectionBoxAdapter_changeNotifier, new Notifier(), "f");
34
34
  __classPrivateFieldSet(this, _NoteEventCollectionBoxAdapter_adapters, UUID.newSet(adapter => adapter.uuid), "f");
35
35
  __classPrivateFieldSet(this, _NoteEventCollectionBoxAdapter_events, EventCollection.create(NoteEvent.Comparator), "f");
36
- const addNoteProcedure = (box) => {
37
- const adapter = asDefined(box.accept({
38
- visitNoteEventBox: (box) => __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_context, "f").boxAdapters.adapterFor(box, NoteEventBoxAdapter)
39
- }), `Could not find adapter for ${box}`);
40
- if (__classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_adapters, "f").add(adapter)) {
41
- __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").add(adapter);
42
- __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_instances, "m", _NoteEventCollectionBoxAdapter_onEventsChanged).call(this);
43
- }
44
- };
45
- __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_box, "f").events.pointerHub.incoming().forEach(({ box }) => addNoteProcedure(box));
46
- __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_terminator, "f").own(__classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_box, "f").events.pointerHub.subscribe({
47
- onAdded: ({ box }) => addNoteProcedure(box),
36
+ __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_terminator, "f").own(__classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_box, "f").events.pointerHub.catchupAndSubscribe({
37
+ onAdded: ({ box }) => {
38
+ const adapter = __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_context, "f").boxAdapters.adapterFor(box, NoteEventBoxAdapter);
39
+ if (__classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_adapters, "f").add(adapter)) {
40
+ __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").add(adapter);
41
+ __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_instances, "m", _NoteEventCollectionBoxAdapter_onEventsChanged).call(this);
42
+ }
43
+ },
48
44
  onRemoved: ({ box: { address: { uuid } } }) => {
49
45
  __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").remove(__classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_adapters, "f").removeByKey(uuid));
50
46
  __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_instances, "m", _NoteEventCollectionBoxAdapter_onEventsChanged).call(this);
@@ -1,21 +1,28 @@
1
- import { int, Maybe, Observer, Option, Subscription, UUID } from "@opendaw/lib-std";
2
- import { ppqn, TimeBase } from "@opendaw/lib-dsp";
1
+ import { int, Maybe, MutableObservableValue, ObservableOption, Observer, Option, Subscription, UUID } from "@opendaw/lib-std";
2
+ import { EventCollection, ppqn, TimeBase } from "@opendaw/lib-dsp";
3
3
  import { Address, Field } from "@opendaw/lib-box";
4
- import { AudioPlayback, Pointers } from "@opendaw/studio-enums";
4
+ import { Pointers } from "@opendaw/studio-enums";
5
5
  import { AudioRegionBox } from "@opendaw/studio-boxes";
6
6
  import { LoopableRegionBoxAdapter, RegionBoxAdapter, RegionBoxAdapterVisitor } from "../RegionBoxAdapter";
7
7
  import { TrackBoxAdapter } from "../TrackBoxAdapter";
8
8
  import { BoxAdaptersContext } from "../../BoxAdaptersContext";
9
9
  import { AudioFileBoxAdapter } from "../../audio/AudioFileBoxAdapter";
10
10
  import { MutableRegion } from "./MutableRegion";
11
+ import { ValueEventCollectionBoxAdapter } from "../collection/ValueEventCollectionBoxAdapter";
12
+ import { AudioContentBoxAdapter } from "../AudioContentBoxAdapter";
13
+ import { AudioPlayMode } from "../../audio/AudioPlayMode";
14
+ import { AudioPitchBoxAdapter } from "../../audio/AudioPitchBoxAdapter";
15
+ import { AudioTimeStretchBoxAdapter } from "../../audio/AudioTimeStretchBoxAdapter";
16
+ import { WarpMarkerBoxAdapter } from "../../audio/WarpMarkerBoxAdapter";
11
17
  type CopyToParams = {
12
18
  track?: Field<Pointers.RegionCollection>;
13
19
  position?: ppqn;
14
20
  duration?: ppqn;
15
21
  loopOffset?: ppqn;
16
22
  loopDuration?: ppqn;
23
+ consolidate?: boolean;
17
24
  };
18
- export declare class AudioRegionBoxAdapter implements LoopableRegionBoxAdapter<never>, MutableRegion {
25
+ export declare class AudioRegionBoxAdapter implements AudioContentBoxAdapter, LoopableRegionBoxAdapter<ValueEventCollectionBoxAdapter>, MutableRegion {
19
26
  #private;
20
27
  readonly type = "audio-region";
21
28
  constructor(context: BoxAdaptersContext, box: AudioRegionBox);
@@ -35,21 +42,25 @@ export declare class AudioRegionBoxAdapter implements LoopableRegionBoxAdapter<n
35
42
  get offset(): ppqn;
36
43
  get mute(): boolean;
37
44
  get hue(): int;
38
- get gain(): number;
45
+ get gain(): MutableObservableValue<number>;
39
46
  get file(): AudioFileBoxAdapter;
47
+ get observableOptPlayMode(): ObservableOption<AudioPlayMode>;
40
48
  get timeBase(): TimeBase;
41
- get hasCollection(): boolean;
42
- get optCollection(): Option<never>;
49
+ get waveformOffset(): MutableObservableValue<number>;
50
+ get isPlayModeNoWarp(): boolean;
51
+ get asPlayModePitch(): Option<AudioPitchBoxAdapter>;
52
+ get asPlayModeTimeStretch(): Option<AudioTimeStretchBoxAdapter>;
53
+ get optWarpMarkers(): Option<EventCollection<WarpMarkerBoxAdapter>>;
43
54
  get label(): string;
44
55
  get isMirrowed(): boolean;
45
56
  get canMirror(): boolean;
46
57
  get trackBoxAdapter(): Option<TrackBoxAdapter>;
58
+ get hasCollection(): boolean;
59
+ get optCollection(): Option<ValueEventCollectionBoxAdapter>;
47
60
  set position(value: ppqn);
48
61
  set duration(value: ppqn);
49
62
  set loopOffset(value: ppqn);
50
63
  set loopDuration(value: ppqn);
51
- get playback(): AudioPlayback;
52
- setPlayback(value: AudioPlayback, keepCurrentStretch?: boolean): void;
53
64
  copyTo(params?: CopyToParams): AudioRegionBoxAdapter;
54
65
  consolidate(): void;
55
66
  canFlatten(_regions: ReadonlyArray<RegionBoxAdapter<unknown>>): boolean;
@@ -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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"}
@@ -9,14 +9,17 @@ 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 _AudioRegionBoxAdapter_instances, _AudioRegionBoxAdapter_terminator, _AudioRegionBoxAdapter_context, _AudioRegionBoxAdapter_box, _AudioRegionBoxAdapter_durationConverter, _AudioRegionBoxAdapter_loopOffsetConverter, _AudioRegionBoxAdapter_loopDurationConverter, _AudioRegionBoxAdapter_changeNotifier, _AudioRegionBoxAdapter_fileAdapter, _AudioRegionBoxAdapter_fileSubscription, _AudioRegionBoxAdapter_tempoSubscription, _AudioRegionBoxAdapter_isSelected, _AudioRegionBoxAdapter_constructing, _AudioRegionBoxAdapter_dispatchChange;
13
- import { asEnumValue, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
12
+ var _AudioRegionBoxAdapter_instances, _AudioRegionBoxAdapter_terminator, _AudioRegionBoxAdapter_context, _AudioRegionBoxAdapter_box, _AudioRegionBoxAdapter_durationConverter, _AudioRegionBoxAdapter_loopOffsetConverter, _AudioRegionBoxAdapter_loopDurationConverter, _AudioRegionBoxAdapter_playMode, _AudioRegionBoxAdapter_changeNotifier, _AudioRegionBoxAdapter_constructing, _AudioRegionBoxAdapter_fileAdapter, _AudioRegionBoxAdapter_fileSubscription, _AudioRegionBoxAdapter_playModeSubscription, _AudioRegionBoxAdapter_tempoSubscription, _AudioRegionBoxAdapter_eventCollectionSubscription, _AudioRegionBoxAdapter_isSelected, _AudioRegionBoxAdapter_dispatchChange;
13
+ import { asEnumValue, isInstanceOf, 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
- import { AudioPlayback } from "@opendaw/studio-enums";
17
16
  import { AudioRegionBox } from "@opendaw/studio-boxes";
18
17
  import { TrackBoxAdapter } from "../TrackBoxAdapter";
19
18
  import { AudioFileBoxAdapter } from "../../audio/AudioFileBoxAdapter";
19
+ import { ValueEventCollectionBoxAdapter } from "../collection/ValueEventCollectionBoxAdapter";
20
+ import { AudioPlayMode } from "../../audio/AudioPlayMode";
21
+ import { AudioPitchBoxAdapter } from "../../audio/AudioPitchBoxAdapter";
22
+ import { AudioTimeStretchBoxAdapter } from "../../audio/AudioTimeStretchBoxAdapter";
20
23
  export class AudioRegionBoxAdapter {
21
24
  constructor(context, box) {
22
25
  _AudioRegionBoxAdapter_instances.add(this);
@@ -27,12 +30,15 @@ export class AudioRegionBoxAdapter {
27
30
  _AudioRegionBoxAdapter_durationConverter.set(this, void 0);
28
31
  _AudioRegionBoxAdapter_loopOffsetConverter.set(this, void 0);
29
32
  _AudioRegionBoxAdapter_loopDurationConverter.set(this, void 0);
33
+ _AudioRegionBoxAdapter_playMode.set(this, void 0);
30
34
  _AudioRegionBoxAdapter_changeNotifier.set(this, void 0);
35
+ _AudioRegionBoxAdapter_constructing.set(this, void 0);
31
36
  _AudioRegionBoxAdapter_fileAdapter.set(this, Option.None);
32
37
  _AudioRegionBoxAdapter_fileSubscription.set(this, Terminable.Empty);
38
+ _AudioRegionBoxAdapter_playModeSubscription.set(this, Terminable.Empty);
33
39
  _AudioRegionBoxAdapter_tempoSubscription.set(this, Terminable.Empty);
40
+ _AudioRegionBoxAdapter_eventCollectionSubscription.set(this, Terminable.Empty);
34
41
  _AudioRegionBoxAdapter_isSelected.set(this, void 0);
35
- _AudioRegionBoxAdapter_constructing.set(this, void 0);
36
42
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_context, context, "f");
37
43
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_box, box, "f");
38
44
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_terminator, new Terminator(), "f");
@@ -40,6 +46,7 @@ export class AudioRegionBoxAdapter {
40
46
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_durationConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, duration), "f");
41
47
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_loopOffsetConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, loopOffset), "f");
42
48
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_loopDurationConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, loopDuration), "f");
49
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_playMode, new MutableObservableOption(), "f");
43
50
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_changeNotifier, new Notifier(), "f");
44
51
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_isSelected, false, "f");
45
52
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_constructing, true, "f");
@@ -50,6 +57,16 @@ export class AudioRegionBoxAdapter {
50
57
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileAdapter, pointerField.targetVertex.map(vertex => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, AudioFileBoxAdapter)), "f");
51
58
  __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileSubscription, "f").terminate();
52
59
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileSubscription, __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").mapOr(adapter => adapter.getOrCreateLoader().subscribe(() => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this)), Terminable.Empty), "f");
60
+ }), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playMode.catchupAndSubscribe(({ targetVertex }) => {
61
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_playModeSubscription, "f").terminate();
62
+ targetVertex.match({
63
+ none: () => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_playMode, "f").clear(),
64
+ some: ({ box }) => {
65
+ const playMode = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(box, AudioPlayMode.isAudioPlayMode);
66
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_playModeSubscription, playMode.subscribe(() => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this)), "f");
67
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_playMode, "f").wrap(playMode);
68
+ }
69
+ });
53
70
  }), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.catchupAndSubscribe(owner => {
54
71
  __classPrivateFieldGet(this, _AudioRegionBoxAdapter_tempoSubscription, "f").terminate();
55
72
  if (asEnumValue(owner.getValue(), TimeBase) === TimeBase.Seconds) {
@@ -69,14 +86,16 @@ export class AudioRegionBoxAdapter {
69
86
  __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
70
87
  }
71
88
  }
72
- }), {
73
- terminate: () => {
74
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileSubscription, "f").terminate();
75
- __classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileSubscription, Terminable.Empty, "f");
76
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_tempoSubscription, "f").terminate();
77
- __classPrivateFieldSet(this, _AudioRegionBoxAdapter_tempoSubscription, Terminable.Empty, "f");
78
- }
79
- });
89
+ }), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").events.catchupAndSubscribe(({ targetVertex }) => {
90
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_eventCollectionSubscription, "f").terminate();
91
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_eventCollectionSubscription, targetVertex.match({
92
+ none: () => Terminable.Empty,
93
+ some: ({ box }) => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters
94
+ .adapterFor(box, ValueEventCollectionBoxAdapter)
95
+ .subscribeChange(() => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this))
96
+ }), "f");
97
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
98
+ }));
80
99
  __classPrivateFieldSet(this, _AudioRegionBoxAdapter_constructing, false, "f");
81
100
  }
82
101
  subscribeChange(observer) { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_changeNotifier, "f").subscribe(observer); }
@@ -103,11 +122,21 @@ export class AudioRegionBoxAdapter {
103
122
  get offset() { return this.position - this.loopOffset; }
104
123
  get mute() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").mute.getValue(); }
105
124
  get hue() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").hue.getValue(); }
106
- get gain() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").gain.getValue(); }
125
+ get gain() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").gain; }
107
126
  get file() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").unwrap("Cannot access file."); }
127
+ get observableOptPlayMode() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_playMode, "f"); }
108
128
  get timeBase() { return asEnumValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.getValue(), TimeBase); }
109
- get hasCollection() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").nonEmpty(); }
110
- get optCollection() { return Option.None; }
129
+ get waveformOffset() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").waveformOffset; }
130
+ get isPlayModeNoWarp() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playMode.isEmpty(); }
131
+ get asPlayModePitch() {
132
+ return this.observableOptPlayMode.map(mode => isInstanceOf(mode, AudioPitchBoxAdapter) ? mode : null);
133
+ }
134
+ get asPlayModeTimeStretch() {
135
+ return this.observableOptPlayMode.map(mode => isInstanceOf(mode, AudioTimeStretchBoxAdapter) ? mode : null);
136
+ }
137
+ get optWarpMarkers() {
138
+ return this.observableOptPlayMode.map(mode => AudioPlayMode.isAudioPlayMode(mode) ? mode.warpMarkers : null);
139
+ }
111
140
  get label() {
112
141
  if (__classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").isEmpty()) {
113
142
  return "No Audio File";
@@ -121,73 +150,42 @@ export class AudioRegionBoxAdapter {
121
150
  }
122
151
  return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").label.getValue();
123
152
  }
124
- get isMirrowed() { return false; }
125
- get canMirror() { return false; }
153
+ get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }
154
+ get canMirror() { return true; }
126
155
  get trackBoxAdapter() {
127
156
  return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex
128
157
  .map(vertex => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));
129
158
  }
159
+ get hasCollection() { return this.optCollection.nonEmpty(); }
160
+ get optCollection() {
161
+ return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").events.targetVertex
162
+ .map(vertex => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, ValueEventCollectionBoxAdapter));
163
+ }
130
164
  set position(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.setValue(value); }
131
165
  set duration(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").fromPPQN(value); }
132
166
  set loopOffset(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").fromPPQN(value); }
133
167
  set loopDuration(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").fromPPQN(value); }
134
- get playback() { return asEnumValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playback.getValue(), AudioPlayback); }
135
- setPlayback(value, keepCurrentStretch = false) {
136
- const wasMusical = this.timeBase === TimeBase.Musical;
137
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playback.setValue(value);
138
- if (value === AudioPlayback.NoSync) {
139
- if (wasMusical) {
140
- if (keepCurrentStretch) {
141
- const duration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toSeconds();
142
- const loopDuration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toSeconds();
143
- const loopOffset = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toSeconds();
144
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Seconds);
145
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(duration);
146
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(loopDuration);
147
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(loopOffset);
148
- }
149
- else {
150
- // Reset to 100% playback speed (original file speed)
151
- const fileDuration = this.file.endInSeconds - this.file.startInSeconds;
152
- const currentLoopDurationSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toSeconds();
153
- const scale = fileDuration / currentLoopDurationSeconds;
154
- const currentDurationSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toSeconds();
155
- const currentLoopOffsetSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toSeconds();
156
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Seconds);
157
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(currentDurationSeconds * scale);
158
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(fileDuration);
159
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(currentLoopOffsetSeconds * scale);
160
- }
161
- }
162
- }
163
- else {
164
- // Switching TO musical (Pitch/Timestretch/AudioFit)
165
- if (!wasMusical) {
166
- const duration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toPPQN();
167
- const loopDuration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toPPQN();
168
- const loopOffset = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toPPQN();
169
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Musical);
170
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(duration);
171
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(loopOffset);
172
- __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(loopDuration);
173
- }
174
- }
175
- }
176
168
  copyTo(params) {
177
- return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(AudioRegionBox.create(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
169
+ const eventCollection = this.optCollection.unwrap("Cannot make copy without event-collection");
170
+ const eventTarget = params?.consolidate === true
171
+ ? eventCollection.copy().box.owners
172
+ : eventCollection.box.owners;
173
+ const adapter = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(AudioRegionBox.create(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
178
174
  box.timeBase.setValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.getValue());
179
175
  box.position.setValue(params?.position ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.getValue());
180
- // TODO Respect time-base.
181
- box.duration.setValue(params?.duration ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.getValue());
182
- box.loopOffset.setValue(params?.loopOffset ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.getValue());
183
- box.loopDuration.setValue(params?.loopDuration ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.getValue());
184
176
  box.regions.refer(params?.track ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
185
177
  box.file.refer(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").file.targetVertex.unwrap());
178
+ box.events.refer(eventTarget);
186
179
  box.mute.setValue(this.mute);
187
180
  box.hue.setValue(this.hue);
188
181
  box.label.setValue(this.label);
189
- box.gain.setValue(this.gain);
182
+ box.gain.setValue(this.gain.getValue());
183
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playMode.ifVertex(vertex => box.playMode.refer(vertex.box));
190
184
  }), AudioRegionBoxAdapter);
185
+ adapter.duration = params?.duration ?? this.duration;
186
+ adapter.loopOffset = params?.loopOffset ?? this.loopOffset;
187
+ adapter.loopDuration = params?.loopDuration ?? this.loopDuration;
188
+ return adapter;
191
189
  }
192
190
  consolidate() {
193
191
  // TODO This needs to done by creating a new audio file
@@ -197,10 +195,20 @@ export class AudioRegionBoxAdapter {
197
195
  // TODO This needs to done by creating a new audio file
198
196
  return Option.None;
199
197
  }
200
- terminate() { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_terminator, "f").terminate(); }
198
+ terminate() {
199
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileSubscription, "f").terminate();
200
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileSubscription, Terminable.Empty, "f");
201
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_tempoSubscription, "f").terminate();
202
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_tempoSubscription, Terminable.Empty, "f");
203
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_playModeSubscription, "f").terminate();
204
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_playModeSubscription, Terminable.Empty, "f");
205
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_eventCollectionSubscription, "f").terminate();
206
+ __classPrivateFieldSet(this, _AudioRegionBoxAdapter_eventCollectionSubscription, Terminable.Empty, "f");
207
+ __classPrivateFieldGet(this, _AudioRegionBoxAdapter_terminator, "f").terminate();
208
+ }
201
209
  toString() { return `{AudioRegionBoxAdapter ${UUID.toString(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").address.uuid)}}`; }
202
210
  }
203
- _AudioRegionBoxAdapter_terminator = new WeakMap(), _AudioRegionBoxAdapter_context = new WeakMap(), _AudioRegionBoxAdapter_box = new WeakMap(), _AudioRegionBoxAdapter_durationConverter = new WeakMap(), _AudioRegionBoxAdapter_loopOffsetConverter = new WeakMap(), _AudioRegionBoxAdapter_loopDurationConverter = new WeakMap(), _AudioRegionBoxAdapter_changeNotifier = new WeakMap(), _AudioRegionBoxAdapter_fileAdapter = new WeakMap(), _AudioRegionBoxAdapter_fileSubscription = new WeakMap(), _AudioRegionBoxAdapter_tempoSubscription = new WeakMap(), _AudioRegionBoxAdapter_isSelected = new WeakMap(), _AudioRegionBoxAdapter_constructing = new WeakMap(), _AudioRegionBoxAdapter_instances = new WeakSet(), _AudioRegionBoxAdapter_dispatchChange = function _AudioRegionBoxAdapter_dispatchChange() {
211
+ _AudioRegionBoxAdapter_terminator = new WeakMap(), _AudioRegionBoxAdapter_context = new WeakMap(), _AudioRegionBoxAdapter_box = new WeakMap(), _AudioRegionBoxAdapter_durationConverter = new WeakMap(), _AudioRegionBoxAdapter_loopOffsetConverter = new WeakMap(), _AudioRegionBoxAdapter_loopDurationConverter = new WeakMap(), _AudioRegionBoxAdapter_playMode = new WeakMap(), _AudioRegionBoxAdapter_changeNotifier = new WeakMap(), _AudioRegionBoxAdapter_constructing = new WeakMap(), _AudioRegionBoxAdapter_fileAdapter = new WeakMap(), _AudioRegionBoxAdapter_fileSubscription = new WeakMap(), _AudioRegionBoxAdapter_playModeSubscription = new WeakMap(), _AudioRegionBoxAdapter_tempoSubscription = new WeakMap(), _AudioRegionBoxAdapter_eventCollectionSubscription = new WeakMap(), _AudioRegionBoxAdapter_isSelected = new WeakMap(), _AudioRegionBoxAdapter_instances = new WeakSet(), _AudioRegionBoxAdapter_dispatchChange = function _AudioRegionBoxAdapter_dispatchChange() {
204
212
  if (__classPrivateFieldGet(this, _AudioRegionBoxAdapter_constructing, "f")) {
205
213
  return;
206
214
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendaw/studio-adapters",
3
- "version": "0.0.51",
3
+ "version": "0.0.52",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,17 +23,17 @@
23
23
  "test": "echo \"No tests to run\""
24
24
  },
25
25
  "dependencies": {
26
- "@opendaw/lib-box": "^0.0.50",
27
- "@opendaw/lib-dsp": "^0.0.50",
28
- "@opendaw/lib-runtime": "^0.0.50",
29
- "@opendaw/lib-std": "^0.0.50",
30
- "@opendaw/studio-boxes": "^0.0.50",
31
- "@opendaw/studio-enums": "^0.0.41",
26
+ "@opendaw/lib-box": "^0.0.51",
27
+ "@opendaw/lib-dsp": "^0.0.51",
28
+ "@opendaw/lib-runtime": "^0.0.51",
29
+ "@opendaw/lib-std": "^0.0.51",
30
+ "@opendaw/studio-boxes": "^0.0.51",
31
+ "@opendaw/studio-enums": "^0.0.42",
32
32
  "soundfont2": "^0.5.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@opendaw/eslint-config": "^0.0.20",
36
36
  "@opendaw/typescript-config": "^0.0.20"
37
37
  },
38
- "gitHead": "b000505c56dbc68bce90bac93f722198deab0ecf"
38
+ "gitHead": "1b6de986a1edbf3e26b8044f9c9e6a887f4b3b87"
39
39
  }
@@ -1,7 +0,0 @@
1
- export type AudioData = {
2
- sampleRate: number;
3
- numberOfFrames: number;
4
- numberOfChannels: number;
5
- frames: ReadonlyArray<Float32Array>;
6
- };
7
- //# sourceMappingURL=AudioData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AudioData.d.ts","sourceRoot":"","sources":["../../src/audio/AudioData.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CACtC,CAAA"}
@@ -1,15 +0,0 @@
1
- export declare const Colors: {
2
- blue: string;
3
- green: string;
4
- yellow: string;
5
- cream: string;
6
- orange: string;
7
- red: string;
8
- purple: string;
9
- bright: string;
10
- gray: string;
11
- dark: string;
12
- shadow: string;
13
- black: string;
14
- };
15
- //# sourceMappingURL=Colors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Colors.d.ts","sourceRoot":"","sources":["../../src/factories/Colors.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAalB,CAAA"}
@@ -1,23 +0,0 @@
1
- import { InaccessibleProperty } from "@opendaw/lib-std";
2
- const getPropertyValue = (() => {
3
- if (typeof document === "undefined") {
4
- // This will compile in React but fails at runtime when no document is available
5
- return (_property) => InaccessibleProperty;
6
- }
7
- const computedStyle = getComputedStyle(document.documentElement);
8
- return (property) => computedStyle.getPropertyValue(property);
9
- })();
10
- export const Colors = {
11
- blue: getPropertyValue("--color-blue"),
12
- green: getPropertyValue("--color-green"),
13
- yellow: getPropertyValue("--color-yellow"),
14
- cream: getPropertyValue("--color-cream"),
15
- orange: getPropertyValue("--color-orange"),
16
- red: getPropertyValue("--color-red"),
17
- purple: getPropertyValue("--color-purple"),
18
- bright: getPropertyValue("--color-bright"),
19
- gray: getPropertyValue("--color-gray"),
20
- dark: getPropertyValue("--color-dark"),
21
- shadow: getPropertyValue("--color-shadow"),
22
- black: getPropertyValue("--color-black")
23
- };
File without changes