@opendaw/studio-adapters 0.0.70 → 0.0.72

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 (175) hide show
  1. package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
  2. package/dist/AutomatableParameterFieldAdapter.js +3 -1
  3. package/dist/BoxAdapters.d.ts.map +1 -1
  4. package/dist/BoxAdapters.js +4 -0
  5. package/dist/BoxAdaptersContext.d.ts +1 -2
  6. package/dist/BoxAdaptersContext.d.ts.map +1 -1
  7. package/dist/ClipSequencing.d.ts +1 -1
  8. package/dist/ClipSequencing.d.ts.map +1 -1
  9. package/dist/DeviceAdapter.d.ts +2 -0
  10. package/dist/DeviceAdapter.d.ts.map +1 -1
  11. package/dist/DeviceManualUrls.d.ts +25 -0
  12. package/dist/DeviceManualUrls.d.ts.map +1 -0
  13. package/dist/DeviceManualUrls.js +29 -0
  14. package/dist/EngineProcessorAttachment.d.ts +1 -3
  15. package/dist/EngineProcessorAttachment.d.ts.map +1 -1
  16. package/dist/EngineStateSchema.d.ts +1 -0
  17. package/dist/EngineStateSchema.d.ts.map +1 -1
  18. package/dist/EngineStateSchema.js +1 -0
  19. package/dist/TempoRange.d.ts +5 -0
  20. package/dist/TempoRange.d.ts.map +1 -0
  21. package/dist/TempoRange.js +1 -0
  22. package/dist/Validator.d.ts +0 -2
  23. package/dist/Validator.d.ts.map +1 -1
  24. package/dist/Validator.js +4 -3
  25. package/dist/VaryingTempoMap.d.ts +18 -0
  26. package/dist/VaryingTempoMap.d.ts.map +1 -0
  27. package/dist/VaryingTempoMap.js +105 -0
  28. package/dist/audio/AudioFileBoxAdapter.js +2 -2
  29. package/dist/audio-unit/AudioBusBoxAdapter.d.ts +3 -2
  30. package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
  31. package/dist/audio-unit/AudioBusBoxAdapter.js +4 -2
  32. package/dist/audio-unit/AudioUnitBoxAdapter.d.ts +1 -0
  33. package/dist/audio-unit/AudioUnitBoxAdapter.d.ts.map +1 -1
  34. package/dist/audio-unit/AudioUnitBoxAdapter.js +1 -0
  35. package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts +1 -0
  36. package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts.map +1 -1
  37. package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +2 -0
  38. package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts +1 -0
  39. package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts.map +1 -1
  40. package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +2 -0
  41. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts +1 -0
  42. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts.map +1 -1
  43. package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.js +2 -0
  44. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts +14 -2
  45. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts.map +1 -1
  46. package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +22 -9
  47. package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts +1 -0
  48. package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts.map +1 -1
  49. package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +2 -0
  50. package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.d.ts +31 -0
  51. package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.d.ts.map +1 -0
  52. package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.js +53 -0
  53. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts +1 -0
  54. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts.map +1 -1
  55. package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +2 -0
  56. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts +1 -0
  57. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts.map +1 -1
  58. package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +2 -0
  59. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts +1 -0
  60. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts.map +1 -1
  61. package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +2 -0
  62. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts +1 -0
  63. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts.map +1 -1
  64. package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +2 -0
  65. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +1 -0
  66. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -1
  67. package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +2 -0
  68. package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts +1 -0
  69. package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts.map +1 -1
  70. package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +1 -0
  71. package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts +1 -0
  72. package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts.map +1 -1
  73. package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +2 -0
  74. package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts +1 -0
  75. package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts.map +1 -1
  76. package/dist/devices/instruments/NanoDeviceBoxAdapter.js +2 -0
  77. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts +1 -0
  78. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts.map +1 -1
  79. package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +1 -0
  80. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +1 -0
  81. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
  82. package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +2 -0
  83. package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts +1 -0
  84. package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts.map +1 -1
  85. package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +2 -0
  86. package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts +1 -0
  87. package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts.map +1 -1
  88. package/dist/devices/instruments/TapeDeviceBoxAdapter.js +2 -0
  89. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +1 -0
  90. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
  91. package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +2 -0
  92. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts +1 -0
  93. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts.map +1 -1
  94. package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +2 -0
  95. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts +1 -0
  96. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts.map +1 -1
  97. package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +2 -0
  98. package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.d.ts +1 -0
  99. package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.d.ts.map +1 -1
  100. package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.js +1 -0
  101. package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.d.ts +1 -0
  102. package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.d.ts.map +1 -1
  103. package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.js +2 -0
  104. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts +1 -0
  105. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts.map +1 -1
  106. package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +2 -0
  107. package/dist/engine/EnginePreferences.d.ts +4 -0
  108. package/dist/engine/EnginePreferences.d.ts.map +1 -0
  109. package/dist/engine/EnginePreferences.js +1 -0
  110. package/dist/engine/EnginePreferencesSchema.d.ts +22 -0
  111. package/dist/engine/EnginePreferencesSchema.d.ts.map +1 -0
  112. package/dist/engine/EnginePreferencesSchema.js +33 -0
  113. package/dist/factories/DeviceFactory.d.ts +8 -0
  114. package/dist/factories/DeviceFactory.d.ts.map +1 -0
  115. package/dist/factories/DeviceFactory.js +1 -0
  116. package/dist/factories/InstrumentFactories.d.ts.map +1 -1
  117. package/dist/factories/InstrumentFactories.js +7 -0
  118. package/dist/factories/InstrumentFactory.d.ts +2 -4
  119. package/dist/factories/InstrumentFactory.d.ts.map +1 -1
  120. package/dist/index.d.ts +11 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +10 -0
  123. package/dist/project/ProjectQueries.d.ts.map +1 -1
  124. package/dist/project/ProjectQueries.js +6 -2
  125. package/dist/project/ProjectSkeleton.d.ts.map +1 -1
  126. package/dist/project/ProjectSkeleton.js +4 -3
  127. package/dist/project/ProjectUtils.d.ts.map +1 -1
  128. package/dist/project/ProjectUtils.js +17 -16
  129. package/dist/protocols.d.ts +0 -3
  130. package/dist/protocols.d.ts.map +1 -1
  131. package/dist/sample/Sample.d.ts +2 -2
  132. package/dist/sample/SampleLoaderManager.d.ts +2 -1
  133. package/dist/sample/SampleLoaderManager.d.ts.map +1 -1
  134. package/dist/sample/SampleMetaData.d.ts +1 -1
  135. package/dist/selection/FilteredSelection.js +2 -2
  136. package/dist/selection/VertexSelection.d.ts.map +1 -1
  137. package/dist/selection/VertexSelection.js +0 -1
  138. package/dist/soundfont/Soundfont.d.ts +1 -1
  139. package/dist/timeline/RegionBoxAdapter.d.ts +8 -0
  140. package/dist/timeline/RegionBoxAdapter.d.ts.map +1 -1
  141. package/dist/timeline/RegionEditing.d.ts.map +1 -1
  142. package/dist/timeline/RegionEditing.js +0 -1
  143. package/dist/timeline/SignatureEventBoxAdapter.d.ts +24 -0
  144. package/dist/timeline/SignatureEventBoxAdapter.d.ts.map +1 -0
  145. package/dist/timeline/SignatureEventBoxAdapter.js +42 -0
  146. package/dist/timeline/SignatureTrackAdapter.d.ts +42 -0
  147. package/dist/timeline/SignatureTrackAdapter.d.ts.map +1 -0
  148. package/dist/timeline/SignatureTrackAdapter.js +280 -0
  149. package/dist/timeline/TimelineBoxAdapter.d.ts +7 -2
  150. package/dist/timeline/TimelineBoxAdapter.d.ts.map +1 -1
  151. package/dist/timeline/TimelineBoxAdapter.js +52 -7
  152. package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
  153. package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
  154. package/dist/timeline/TrackBoxAdapter.js +1 -0
  155. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +1 -2
  156. package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
  157. package/dist/timeline/clip/AudioClipBoxAdapter.js +3 -4
  158. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -1
  159. package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +10 -8
  160. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts +2 -2
  161. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts.map +1 -1
  162. package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +25 -8
  163. package/dist/timeline/event/ValueEventBoxAdapter.d.ts +1 -1
  164. package/dist/timeline/event/ValueEventBoxAdapter.d.ts.map +1 -1
  165. package/dist/timeline/event/ValueEventBoxAdapter.js +6 -2
  166. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +4 -0
  167. package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
  168. package/dist/timeline/region/AudioRegionBoxAdapter.js +17 -13
  169. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +5 -1
  170. package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
  171. package/dist/timeline/region/NoteRegionBoxAdapter.js +4 -0
  172. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +4 -0
  173. package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
  174. package/dist/timeline/region/ValueRegionBoxAdapter.js +4 -0
  175. package/package.json +10 -9
@@ -0,0 +1,280 @@
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 _SignatureTrackAdapter_instances, _SignatureTrackAdapter_terminator, _SignatureTrackAdapter_context, _SignatureTrackAdapter_signature, _SignatureTrackAdapter_signatureTrack, _SignatureTrackAdapter_adapters, _SignatureTrackAdapter_ppqnToBar, _SignatureTrackAdapter_findSignatureEventAt;
13
+ import { isNull, Notifier, Terminator, UUID } from "@opendaw/lib-std";
14
+ import { PPQN } from "@opendaw/lib-dsp";
15
+ import { SignatureEventBoxAdapter } from "./SignatureEventBoxAdapter";
16
+ import { SignatureEventBox } from "@opendaw/studio-boxes";
17
+ import { IndexedBoxAdapterCollection } from "../IndexedBoxAdapterCollection";
18
+ import { Pointers } from "@opendaw/studio-enums";
19
+ export class SignatureTrackAdapter {
20
+ constructor(context, signature, signatureTrack) {
21
+ _SignatureTrackAdapter_instances.add(this);
22
+ _SignatureTrackAdapter_terminator.set(this, new Terminator());
23
+ _SignatureTrackAdapter_context.set(this, void 0);
24
+ _SignatureTrackAdapter_signature.set(this, void 0);
25
+ _SignatureTrackAdapter_signatureTrack.set(this, void 0);
26
+ _SignatureTrackAdapter_adapters.set(this, void 0);
27
+ __classPrivateFieldSet(this, _SignatureTrackAdapter_context, context, "f");
28
+ __classPrivateFieldSet(this, _SignatureTrackAdapter_signature, signature, "f");
29
+ __classPrivateFieldSet(this, _SignatureTrackAdapter_signatureTrack, signatureTrack, "f");
30
+ this.changeNotifier = new Notifier();
31
+ __classPrivateFieldSet(this, _SignatureTrackAdapter_adapters, __classPrivateFieldGet(this, _SignatureTrackAdapter_terminator, "f").own(IndexedBoxAdapterCollection.create(__classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f").events, box => context.boxAdapters.adapterFor(box, SignatureEventBoxAdapter), Pointers.SignatureAutomation)), "f");
32
+ __classPrivateFieldGet(this, _SignatureTrackAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _SignatureTrackAdapter_signature, "f").subscribe(() => this.dispatchChange()), __classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f").enabled.subscribe(() => this.dispatchChange()), __classPrivateFieldGet(this, _SignatureTrackAdapter_adapters, "f").subscribe({
33
+ onAdd: (_adapter) => this.changeNotifier.notify(),
34
+ onRemove: (_adapter) => this.changeNotifier.notify(),
35
+ onReorder: (_adapter) => this.changeNotifier.notify()
36
+ }));
37
+ }
38
+ subscribe(observer) { return this.changeNotifier.subscribe(observer); }
39
+ get context() { return __classPrivateFieldGet(this, _SignatureTrackAdapter_context, "f"); }
40
+ get enabled() { return __classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f").enabled.getValue(); }
41
+ get object() { return __classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f"); }
42
+ get size() { return __classPrivateFieldGet(this, _SignatureTrackAdapter_adapters, "f").size(); }
43
+ get storageSignature() {
44
+ const { nominator, denominator } = __classPrivateFieldGet(this, _SignatureTrackAdapter_signature, "f");
45
+ return [nominator.getValue(), denominator.getValue()];
46
+ }
47
+ nonEmpty() { return __classPrivateFieldGet(this, _SignatureTrackAdapter_adapters, "f").size() > 0; }
48
+ dispatchChange() { this.changeNotifier.notify(); }
49
+ signatureAt(position) {
50
+ position = Math.max(0, position);
51
+ let result = this.storageSignature;
52
+ for (const { accumulatedPpqn, nominator, denominator } of this.iterateAll()) {
53
+ if (accumulatedPpqn > position) {
54
+ break;
55
+ }
56
+ result = [nominator, denominator];
57
+ }
58
+ return result;
59
+ }
60
+ *iterateAll() {
61
+ let accumulatedPpqn = 0;
62
+ let accumulatedBars = 0;
63
+ let [nominator, denominator] = this.storageSignature;
64
+ yield { index: -1, accumulatedPpqn, accumulatedBars, nominator, denominator };
65
+ if (!__classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f").enabled.getValue()) {
66
+ return;
67
+ }
68
+ for (const adapter of __classPrivateFieldGet(this, _SignatureTrackAdapter_adapters, "f").adapters()) {
69
+ accumulatedPpqn += PPQN.fromSignature(nominator, denominator) * adapter.relativePosition;
70
+ accumulatedBars += adapter.relativePosition;
71
+ nominator = adapter.nominator;
72
+ denominator = adapter.denominator;
73
+ yield { index: adapter.index, accumulatedPpqn, accumulatedBars, nominator, denominator };
74
+ }
75
+ }
76
+ changeSignature(nominator, denominator) {
77
+ const originalEvents = Array.from(this.iterateAll()).slice(1);
78
+ const originalPositions = originalEvents.map(e => e.accumulatedPpqn);
79
+ __classPrivateFieldGet(this, _SignatureTrackAdapter_signature, "f").nominator.setValue(nominator);
80
+ __classPrivateFieldGet(this, _SignatureTrackAdapter_signature, "f").denominator.setValue(denominator);
81
+ // Recalculate each event's relativePosition to preserve approximate absolute positions.
82
+ let accumulatedPpqn = 0.0;
83
+ let accumulatedFraction = 0.0;
84
+ let durationBar = PPQN.fromSignature(nominator, denominator);
85
+ for (let i = 0; i < originalEvents.length; i++) {
86
+ const event = originalEvents[i];
87
+ const adapter = this.adapterAt(event.index);
88
+ if (adapter.isEmpty()) {
89
+ continue;
90
+ }
91
+ const targetPpqn = originalPositions[i];
92
+ const barsFrac = (targetPpqn - accumulatedPpqn) / durationBar;
93
+ const barsInt = Math.floor(barsFrac);
94
+ const fraction = barsFrac - barsInt;
95
+ accumulatedFraction += fraction;
96
+ let relativePosition = barsInt;
97
+ if (accumulatedFraction >= 1.0) {
98
+ relativePosition++;
99
+ accumulatedFraction--;
100
+ }
101
+ relativePosition = Math.max(1, relativePosition);
102
+ adapter.unwrap().box.relativePosition.setValue(relativePosition);
103
+ accumulatedPpqn += relativePosition * durationBar;
104
+ durationBar = PPQN.fromSignature(event.nominator, event.denominator);
105
+ }
106
+ }
107
+ deleteAdapter(adapter) {
108
+ const deleteIndex = adapter.index;
109
+ const allEvents = Array.from(this.iterateAll()).slice(1);
110
+ const deleteEventIndex = allEvents.findIndex(e => e.index === deleteIndex);
111
+ if (deleteEventIndex === -1) {
112
+ return;
113
+ }
114
+ // Capture original ppqn positions of events AFTER the deleted one
115
+ const eventsAfter = allEvents.slice(deleteEventIndex + 1);
116
+ const originalPositions = eventsAfter.map(e => e.accumulatedPpqn);
117
+ // Determine the signature that will precede the remaining events
118
+ const prevEvent = deleteEventIndex > 0 ? allEvents[deleteEventIndex - 1] : null;
119
+ const [prevNom, prevDenom] = prevEvent !== null
120
+ ? [prevEvent.nominator, prevEvent.denominator]
121
+ : this.storageSignature;
122
+ const prevAccumulatedPpqn = prevEvent !== null ? prevEvent.accumulatedPpqn : 0.0;
123
+ adapter.box.delete();
124
+ // Recalculate relativePositions for events after the deleted one using round()
125
+ let accumulatedPpqn = prevAccumulatedPpqn;
126
+ let durationBar = PPQN.fromSignature(prevNom, prevDenom);
127
+ for (let i = 0; i < eventsAfter.length; i++) {
128
+ const event = eventsAfter[i];
129
+ const eventAdapter = this.adapterAt(event.index);
130
+ if (eventAdapter.isEmpty()) {
131
+ continue;
132
+ }
133
+ const targetPpqn = originalPositions[i];
134
+ const exactBars = (targetPpqn - accumulatedPpqn) / durationBar;
135
+ const relativePosition = Math.max(1, Math.round(exactBars));
136
+ eventAdapter.unwrap().box.relativePosition.setValue(relativePosition);
137
+ accumulatedPpqn += relativePosition * durationBar;
138
+ durationBar = PPQN.fromSignature(event.nominator, event.denominator);
139
+ }
140
+ }
141
+ createEvent(position, nominator, denominator) {
142
+ const allEvents = Array.from(this.iterateAll());
143
+ let prevEvent = allEvents[0];
144
+ let insertAfterIndex = 0;
145
+ for (let i = 1; i < allEvents.length; i++) {
146
+ if (allEvents[i].accumulatedPpqn > position) {
147
+ break;
148
+ }
149
+ prevEvent = allEvents[i];
150
+ insertAfterIndex = i;
151
+ }
152
+ const prevBarPpqn = PPQN.fromSignature(prevEvent.nominator, prevEvent.denominator);
153
+ const barsFromPrev = (position - prevEvent.accumulatedPpqn) / prevBarPpqn;
154
+ const newRelativePosition = Math.max(1, Math.round(barsFromPrev));
155
+ const newIndex = prevEvent.index + 1;
156
+ const successorEvents = allEvents.slice(insertAfterIndex + 1);
157
+ const newEventPpqn = prevEvent.accumulatedPpqn + newRelativePosition * prevBarPpqn;
158
+ const newBarPpqn = PPQN.fromSignature(nominator, denominator);
159
+ const adaptersToUpdate = successorEvents
160
+ .map(event => ({ event, adapter: this.adapterAt(event.index) }))
161
+ .filter(({ adapter }) => adapter.nonEmpty())
162
+ .map(({ event, adapter }) => ({ event, adapter: adapter.unwrap() }));
163
+ for (let i = 0; i < adaptersToUpdate.length; i++) {
164
+ const { event, adapter } = adaptersToUpdate[i];
165
+ adapter.box.index.setValue(event.index + 1);
166
+ if (i === 0) {
167
+ const barsToNext = (event.accumulatedPpqn - newEventPpqn) / newBarPpqn;
168
+ adapter.box.relativePosition.setValue(Math.max(1, Math.round(barsToNext)));
169
+ }
170
+ }
171
+ SignatureEventBox.create(__classPrivateFieldGet(this, _SignatureTrackAdapter_context, "f").boxGraph, UUID.generate(), box => {
172
+ box.index.setValue(newIndex);
173
+ box.relativePosition.setValue(newRelativePosition);
174
+ box.nominator.setValue(nominator);
175
+ box.denominator.setValue(denominator);
176
+ box.events.refer(__classPrivateFieldGet(this, _SignatureTrackAdapter_signatureTrack, "f").events);
177
+ });
178
+ }
179
+ adapterAt(index) { return __classPrivateFieldGet(this, _SignatureTrackAdapter_adapters, "f").getAdapterByIndex(index); }
180
+ moveEvent(adapter, targetPpqn) {
181
+ const allEvents = Array.from(this.iterateAll()).slice(1);
182
+ const movedIdx = allEvents.findIndex(e => e.index === adapter.index);
183
+ if (movedIdx === -1) {
184
+ return;
185
+ }
186
+ const movedEvent = allEvents[movedIdx];
187
+ if (targetPpqn === movedEvent.accumulatedPpqn) {
188
+ return;
189
+ }
190
+ const originalBars = allEvents.map(e => e.accumulatedBars);
191
+ const targetBar = __classPrivateFieldGet(this, _SignatureTrackAdapter_instances, "m", _SignatureTrackAdapter_ppqnToBar).call(this, targetPpqn, movedEvent.index);
192
+ if (targetBar === movedEvent.accumulatedBars) {
193
+ return;
194
+ }
195
+ const newBars = [...originalBars];
196
+ newBars[movedIdx] = targetBar;
197
+ const sortedIndices = newBars
198
+ .map((bar, i) => ({ bar, i }))
199
+ .sort((a, b) => a.bar - b.bar)
200
+ .map(x => x.i);
201
+ const adapters = allEvents.map(e => this.adapterAt(e.index).unwrap());
202
+ for (let newIdx = 0; newIdx < sortedIndices.length; newIdx++) {
203
+ adapters[sortedIndices[newIdx]].box.index.setValue(newIdx);
204
+ }
205
+ let prevBar = 0;
206
+ for (let i = 0; i < sortedIndices.length; i++) {
207
+ const origIdx = sortedIndices[i];
208
+ const eventAdapter = adapters[origIdx];
209
+ const bar = newBars[origIdx];
210
+ const relPos = Math.max(1, bar - prevBar);
211
+ eventAdapter.box.relativePosition.setValue(relPos);
212
+ prevBar = bar;
213
+ }
214
+ }
215
+ floorToBar(position) {
216
+ const { event, barPpqn } = __classPrivateFieldGet(this, _SignatureTrackAdapter_instances, "m", _SignatureTrackAdapter_findSignatureEventAt).call(this, position);
217
+ const barsFromEvent = Math.floor((position - event.accumulatedPpqn) / barPpqn);
218
+ return event.accumulatedPpqn + barsFromEvent * barPpqn;
219
+ }
220
+ ceilToBar(position) {
221
+ const { event, barPpqn } = __classPrivateFieldGet(this, _SignatureTrackAdapter_instances, "m", _SignatureTrackAdapter_findSignatureEventAt).call(this, position);
222
+ const barsFromEvent = Math.ceil((position - event.accumulatedPpqn) / barPpqn);
223
+ return event.accumulatedPpqn + barsFromEvent * barPpqn;
224
+ }
225
+ roundToBar(position) {
226
+ const { event, barPpqn } = __classPrivateFieldGet(this, _SignatureTrackAdapter_instances, "m", _SignatureTrackAdapter_findSignatureEventAt).call(this, position);
227
+ const barsFromEvent = Math.round((position - event.accumulatedPpqn) / barPpqn);
228
+ return event.accumulatedPpqn + barsFromEvent * barPpqn;
229
+ }
230
+ barLengthAt(position) {
231
+ const [nom, denom] = this.signatureAt(position);
232
+ return PPQN.fromSignature(nom, denom);
233
+ }
234
+ getBarInterval(position) {
235
+ const { event, barPpqn } = __classPrivateFieldGet(this, _SignatureTrackAdapter_instances, "m", _SignatureTrackAdapter_findSignatureEventAt).call(this, position);
236
+ const barsFromEvent = Math.floor((position - event.accumulatedPpqn) / barPpqn);
237
+ const start = event.accumulatedPpqn + barsFromEvent * barPpqn;
238
+ return { position: start, complete: start + barPpqn };
239
+ }
240
+ terminate() { __classPrivateFieldGet(this, _SignatureTrackAdapter_terminator, "f").terminate(); }
241
+ }
242
+ _SignatureTrackAdapter_terminator = new WeakMap(), _SignatureTrackAdapter_context = new WeakMap(), _SignatureTrackAdapter_signature = new WeakMap(), _SignatureTrackAdapter_signatureTrack = new WeakMap(), _SignatureTrackAdapter_adapters = new WeakMap(), _SignatureTrackAdapter_instances = new WeakSet(), _SignatureTrackAdapter_ppqnToBar = function _SignatureTrackAdapter_ppqnToBar(position, excludeIndex) {
243
+ let prevEvent = null;
244
+ for (const event of this.iterateAll()) {
245
+ if (event.index === excludeIndex) {
246
+ continue;
247
+ }
248
+ if (event.accumulatedPpqn > position) {
249
+ break;
250
+ }
251
+ prevEvent = event;
252
+ }
253
+ if (isNull(prevEvent)) {
254
+ const [nom, denom] = this.storageSignature;
255
+ const barPpqn = PPQN.fromSignature(nom, denom);
256
+ return Math.max(1, Math.round(position / barPpqn));
257
+ }
258
+ const barPpqn = PPQN.fromSignature(prevEvent.nominator, prevEvent.denominator);
259
+ const barsFromEvent = Math.round((position - prevEvent.accumulatedPpqn) / barPpqn);
260
+ return Math.max(1, prevEvent.accumulatedBars + barsFromEvent);
261
+ }, _SignatureTrackAdapter_findSignatureEventAt = function _SignatureTrackAdapter_findSignatureEventAt(position) {
262
+ let prevEvent = null;
263
+ for (const event of this.iterateAll()) {
264
+ if (event.accumulatedPpqn > position) {
265
+ break;
266
+ }
267
+ prevEvent = event;
268
+ }
269
+ if (isNull(prevEvent)) {
270
+ const [nominator, denominator] = this.storageSignature;
271
+ return {
272
+ event: { index: -1, accumulatedPpqn: 0, accumulatedBars: 0, nominator, denominator },
273
+ barPpqn: PPQN.fromSignature(nominator, denominator)
274
+ };
275
+ }
276
+ return {
277
+ event: prevEvent,
278
+ barPpqn: PPQN.fromSignature(prevEvent.nominator, prevEvent.denominator)
279
+ };
280
+ };
@@ -1,20 +1,25 @@
1
1
  import { TimelineBox } from "@opendaw/studio-boxes";
2
- import { int, Observer, Subscription, UUID } from "@opendaw/lib-std";
2
+ import { int, ObservableOption, Observer, Option, Subscription, UUID } from "@opendaw/lib-std";
3
3
  import { Address } from "@opendaw/lib-box";
4
4
  import { BoxAdapter } from "../BoxAdapter";
5
5
  import { MarkerTrackAdapter } from "./MarkerTrackAdapter";
6
+ import { SignatureTrackAdapter } from "./SignatureTrackAdapter";
6
7
  import { BoxAdaptersContext } from "../BoxAdaptersContext";
7
8
  import { ppqn } from "@opendaw/lib-dsp";
9
+ import { ValueEventCollectionBoxAdapter } from "./collection/ValueEventCollectionBoxAdapter";
8
10
  export declare class TimelineBoxAdapter implements BoxAdapter {
9
11
  #private;
10
12
  constructor(context: BoxAdaptersContext, box: TimelineBox);
11
- terminate(): void;
13
+ catchupAndSubscribeTempoAutomation(observer: Observer<Option<ValueEventCollectionBoxAdapter>>): Subscription;
12
14
  get box(): TimelineBox;
13
15
  get uuid(): UUID.Bytes;
14
16
  get address(): Address;
15
17
  get markerTrack(): MarkerTrackAdapter;
18
+ get signatureTrack(): SignatureTrackAdapter;
19
+ get tempoTrackEvents(): ObservableOption<ValueEventCollectionBoxAdapter>;
16
20
  get signature(): Readonly<[int, int]>;
17
21
  get signatureDuration(): ppqn;
18
22
  catchupAndSubscribeSignature(observer: Observer<Readonly<[int, int]>>): Subscription;
23
+ terminate(): void;
19
24
  }
20
25
  //# sourceMappingURL=TimelineBoxAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimelineBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TimelineBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAO,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAE3C,qBAAa,kBAAmB,YAAW,UAAU;;gBAIrC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW;IAKzD,SAAS,IAAI,IAAI;IAEjB,IAAI,GAAG,IAAI,WAAW,CAAmB;IACzC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,WAAW,IAAI,kBAAkB,CAA2B;IAChE,IAAI,SAAS,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAIpC;IACD,IAAI,iBAAiB,IAAI,IAAI,CAG5B;IAED,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY;CAIvF"}
1
+ {"version":3,"file":"TimelineBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TimelineBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EACH,GAAG,EAGH,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAO,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,8BAA8B,EAAC,MAAM,6CAA6C,CAAA;AAE1F,qBAAa,kBAAmB,YAAW,UAAU;;gBAUrC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW;IA4BzD,kCAAkC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,GAAG,YAAY;IAK5G,IAAI,GAAG,IAAI,WAAW,CAAmB;IACzC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,WAAW,IAAI,kBAAkB,CAA2B;IAChE,IAAI,cAAc,IAAI,qBAAqB,CAA8B;IACzE,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,8BAA8B,CAAC,CAAgC;IACxG,IAAI,SAAS,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAGpC;IACD,IAAI,iBAAiB,IAAI,IAAI,CAG5B;IAED,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY;IAKpF,SAAS,IAAI,IAAI;CAcpB"}
@@ -9,25 +9,69 @@ 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 _TimelineBoxAdapter_box, _TimelineBoxAdapter_markerTrack;
12
+ var _TimelineBoxAdapter_terminator, _TimelineBoxAdapter_box, _TimelineBoxAdapter_markerTrack, _TimelineBoxAdapter_signatureTrack, _TimelineBoxAdapter_tempoTrackEvents, _TimelineBoxAdapter_tempoAutomation, _TimelineBoxAdapter_resolveTempoAutomation;
13
+ import { MutableObservableOption, Notifier, Option, Terminator } from "@opendaw/lib-std";
13
14
  import { MarkerTrackAdapter } from "./MarkerTrackAdapter";
15
+ import { SignatureTrackAdapter } from "./SignatureTrackAdapter";
14
16
  import { PPQN } from "@opendaw/lib-dsp";
17
+ import { ValueEventCollectionBoxAdapter } from "./collection/ValueEventCollectionBoxAdapter";
15
18
  export class TimelineBoxAdapter {
16
19
  constructor(context, box) {
20
+ _TimelineBoxAdapter_terminator.set(this, new Terminator());
17
21
  _TimelineBoxAdapter_box.set(this, void 0);
18
22
  _TimelineBoxAdapter_markerTrack.set(this, void 0);
23
+ _TimelineBoxAdapter_signatureTrack.set(this, void 0);
24
+ _TimelineBoxAdapter_tempoTrackEvents.set(this, void 0);
25
+ _TimelineBoxAdapter_tempoAutomation.set(this, void 0);
26
+ _TimelineBoxAdapter_resolveTempoAutomation.set(this, () => {
27
+ const { tempoTrack: { enabled } } = __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f");
28
+ if (!enabled.getValue()) {
29
+ return Option.None;
30
+ }
31
+ else if (__classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f").isEmpty()) {
32
+ return Option.None;
33
+ }
34
+ else if (__classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f").unwrap().events.isEmpty()) {
35
+ return Option.None;
36
+ }
37
+ else {
38
+ return (__classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f"));
39
+ }
40
+ });
19
41
  __classPrivateFieldSet(this, _TimelineBoxAdapter_box, box, "f");
20
- __classPrivateFieldSet(this, _TimelineBoxAdapter_markerTrack, new MarkerTrackAdapter(context, __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").markerTrack), "f");
42
+ __classPrivateFieldSet(this, _TimelineBoxAdapter_markerTrack, new MarkerTrackAdapter(context, box.markerTrack), "f");
43
+ __classPrivateFieldSet(this, _TimelineBoxAdapter_signatureTrack, new SignatureTrackAdapter(context, box.signature, box.signatureTrack), "f");
44
+ __classPrivateFieldSet(this, _TimelineBoxAdapter_tempoTrackEvents, new MutableObservableOption(), "f");
45
+ __classPrivateFieldSet(this, _TimelineBoxAdapter_tempoAutomation, new Notifier(), "f");
46
+ const tempoAutomationLifecycle = __classPrivateFieldGet(this, _TimelineBoxAdapter_terminator, "f").own(new Terminator());
47
+ const updateTempoAutomation = () => __classPrivateFieldGet(this, _TimelineBoxAdapter_tempoAutomation, "f").notify(__classPrivateFieldGet(this, _TimelineBoxAdapter_resolveTempoAutomation, "f").call(this));
48
+ const { tempoTrack: { events, enabled } } = box;
49
+ __classPrivateFieldGet(this, _TimelineBoxAdapter_terminator, "f").own(events.catchupAndSubscribe(({ targetVertex }) => {
50
+ tempoAutomationLifecycle.terminate();
51
+ targetVertex.match({
52
+ none: () => __classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f").clear(),
53
+ some: ({ box }) => {
54
+ const eventCollectionAdapter = context.boxAdapters.adapterFor(box, ValueEventCollectionBoxAdapter);
55
+ __classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f").wrap(eventCollectionAdapter);
56
+ tempoAutomationLifecycle.ownAll(eventCollectionAdapter.subscribeChange(updateTempoAutomation), enabled.subscribe(updateTempoAutomation));
57
+ }
58
+ });
59
+ }));
60
+ }
61
+ // For dsp. It does not care why events are not available. We just send Option.None if disabled or no events present.
62
+ catchupAndSubscribeTempoAutomation(observer) {
63
+ observer(__classPrivateFieldGet(this, _TimelineBoxAdapter_resolveTempoAutomation, "f").call(this));
64
+ return __classPrivateFieldGet(this, _TimelineBoxAdapter_tempoAutomation, "f").subscribe(observer);
21
65
  }
22
- terminate() { }
23
66
  get box() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f"); }
24
67
  get uuid() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").address.uuid; }
25
68
  get address() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").address; }
26
69
  get markerTrack() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_markerTrack, "f"); }
70
+ get signatureTrack() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_signatureTrack, "f"); }
71
+ get tempoTrackEvents() { return __classPrivateFieldGet(this, _TimelineBoxAdapter_tempoTrackEvents, "f"); }
27
72
  get signature() {
28
- return [
29
- __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").signature.nominator.getValue(), __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").signature.denominator.getValue()
30
- ];
73
+ const { nominator, denominator } = __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").signature;
74
+ return [nominator.getValue(), denominator.getValue()];
31
75
  }
32
76
  get signatureDuration() {
33
77
  const { nominator, denominator } = __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").signature;
@@ -37,5 +81,6 @@ export class TimelineBoxAdapter {
37
81
  observer(this.signature);
38
82
  return __classPrivateFieldGet(this, _TimelineBoxAdapter_box, "f").signature.subscribe(() => observer(this.signature));
39
83
  }
84
+ terminate() { __classPrivateFieldGet(this, _TimelineBoxAdapter_terminator, "f").terminate(); }
40
85
  }
41
- _TimelineBoxAdapter_box = new WeakMap(), _TimelineBoxAdapter_markerTrack = new WeakMap();
86
+ _TimelineBoxAdapter_terminator = new WeakMap(), _TimelineBoxAdapter_box = new WeakMap(), _TimelineBoxAdapter_markerTrack = new WeakMap(), _TimelineBoxAdapter_signatureTrack = new WeakMap(), _TimelineBoxAdapter_tempoTrackEvents = new WeakMap(), _TimelineBoxAdapter_tempoAutomation = new WeakMap(), _TimelineBoxAdapter_resolveTempoAutomation = new WeakMap();
@@ -13,6 +13,7 @@ export declare class TrackBoxAdapter implements BoxAdapter {
13
13
  #private;
14
14
  constructor(context: BoxAdaptersContext, box: TrackBox);
15
15
  catchupAndSubscribePath(observer: Observer<Option<[string, string]>>): Subscription;
16
+ get context(): BoxAdaptersContext;
16
17
  set targetDeviceName(value: string);
17
18
  get targetDeviceName(): Option<string>;
18
19
  terminate(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TrackBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TrackBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,IAAI,EAAkB,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AAG3E,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,qBAAa,eAAgB,YAAW,UAAU;;gBAWlC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ;IAUtD,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;IAuBnF,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAUjC;IAED,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,CAYrC;IAoDD,SAAS;IAET,IAAI,SAAS,IAAI,YAAY,CAAgF;IAC7G,IAAI,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACzE,IAAI,KAAK,IAAI,UAAU,CAAqB;IAC5C,IAAI,OAAO,IAAI,YAAY,CAAuB;IAClD,IAAI,OAAO,IAAI,YAAY,CAA2B;IACtD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,IAAI,IAAI,SAAS,CAAmC;IACxD,IAAI,GAAG,IAAI,QAAQ,CAAmB;IACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IAEjD,IAAI,SAAS,IAAI,GAAG,CAAoC;IACxD,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAmC;IAE3D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,OAAO;IAiBlE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;CAgC1D"}
1
+ {"version":3,"file":"TrackBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/TrackBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAC,IAAI,EAAkB,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AAG3E,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,qBAAa,eAAgB,YAAW,UAAU;;gBAWlC,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ;IAUtD,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;IAuBnF,IAAI,OAAO,IAAI,kBAAkB,CAAuB;IAExD,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAUjC;IAED,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,CAYrC;IAoDD,SAAS;IAET,IAAI,SAAS,IAAI,YAAY,CAAgF;IAC7G,IAAI,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACzE,IAAI,KAAK,IAAI,UAAU,CAAqB;IAC5C,IAAI,OAAO,IAAI,YAAY,CAAuB;IAClD,IAAI,OAAO,IAAI,YAAY,CAA2B;IACtD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,IAAI,IAAI,SAAS,CAAmC;IACxD,IAAI,GAAG,IAAI,QAAQ,CAAmB;IACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IAEjD,IAAI,SAAS,IAAI,GAAG,CAAoC;IACxD,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAmC;IAE3D,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,OAAO;IAiBlE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;CAgC1D"}
@@ -60,6 +60,7 @@ export class TrackBoxAdapter {
60
60
  updater();
61
61
  }));
62
62
  }
63
+ get context() { return __classPrivateFieldGet(this, _TrackBoxAdapter_context, "f"); }
63
64
  set targetDeviceName(value) {
64
65
  __classPrivateFieldGet(this, _TrackBoxAdapter_box, "f").target.targetVertex.ifSome(targetVertex => {
65
66
  const vertex = targetVertex.box;
@@ -1,5 +1,5 @@
1
1
  import { EventCollection, ppqn, TimeBase } from "@opendaw/lib-dsp";
2
- import { int, Maybe, MutableObservableValue, ObservableOption, ObservableValue, Observer, Option, Subscription, UUID, ValueOwner } from "@opendaw/lib-std";
2
+ import { int, Maybe, MutableObservableValue, ObservableOption, ObservableValue, Observer, Option, Subscription, UUID } from "@opendaw/lib-std";
3
3
  import { AudioClipBox } from "@opendaw/studio-boxes";
4
4
  import { Address, Int32Field } from "@opendaw/lib-box";
5
5
  import { ClipBoxAdapter, ClipBoxAdapterVisitor } from "../ClipBoxAdapter";
@@ -13,7 +13,6 @@ import { AudioTimeStretchBoxAdapter } from "../../audio/AudioTimeStretchBoxAdapt
13
13
  import { WarpMarkerBoxAdapter } from "../../audio/WarpMarkerBoxAdapter";
14
14
  export declare class AudioClipBoxAdapter implements AudioContentBoxAdapter, ClipBoxAdapter<never> {
15
15
  #private;
16
- static readonly STATIC_POSITION: ValueOwner<number>;
17
16
  readonly type = "audio-clip";
18
17
  constructor(context: BoxAdaptersContext, box: AudioClipBox);
19
18
  catchupAndSubscribeSelected(observer: Observer<ObservableValue<boolean>>): Subscription;
@@ -1 +1 @@
1
- {"version":3,"file":"AudioClipBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/clip/AudioClipBoxAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AudioClipBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/clip/AudioClipBoxAdapter.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export class AudioClipBoxAdapter {
39
39
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_isConstructing, true, "f");
40
40
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_playMode, new MutableObservableOption(), "f");
41
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");
42
+ __classPrivateFieldSet(this, _AudioClipBoxAdapter_durationConverter, TimeBaseConverter.aware(context.tempoMap, box.timeBase, box.duration), "f");
43
43
  __classPrivateFieldSet(this, _AudioClipBoxAdapter_changeNotifier, __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").own(new Notifier()), "f");
44
44
  __classPrivateFieldGet(this, _AudioClipBoxAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").pointerHub.subscribe({
45
45
  onAdded: () => __classPrivateFieldGet(this, _AudioClipBoxAdapter_instances, "m", _AudioClipBoxAdapter_dispatchChange).call(this),
@@ -91,8 +91,8 @@ export class AudioClipBoxAdapter {
91
91
  get uuid() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").address.uuid; }
92
92
  get address() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").address; }
93
93
  get indexField() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").index; }
94
- get duration() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").toPPQN(); }
95
- set duration(value) { __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").fromPPQN(value); }
94
+ get duration() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").toPPQN(0); }
95
+ set duration(value) { __classPrivateFieldGet(this, _AudioClipBoxAdapter_durationConverter, "f").fromPPQN(value, 0); }
96
96
  get mute() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").mute.getValue(); }
97
97
  get hue() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").hue.getValue(); }
98
98
  get gain() { return __classPrivateFieldGet(this, _AudioClipBoxAdapter_box, "f").gain; }
@@ -148,4 +148,3 @@ _AudioClipBoxAdapter_terminator = new WeakMap(), _AudioClipBoxAdapter_context =
148
148
  __classPrivateFieldGet(this, _AudioClipBoxAdapter_changeNotifier, "f").notify();
149
149
  this.trackBoxAdapter.unwrapOrNull()?.clips?.dispatchChange();
150
150
  };
151
- 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,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"}
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,EAGH,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;IAa7G,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 { Intervals, Iterables, Notifier, Terminator, UUID } from "@opendaw/lib-std";
14
+ import { 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";
@@ -72,7 +72,7 @@ export class NoteEventCollectionBoxAdapter {
72
72
  subscribeChange(observer) { return __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_changeNotifier, "f").subscribe(observer); }
73
73
  selectable() { return __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").asArray(); }
74
74
  selectableAt(coordinates) {
75
- for (const element of __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").asArray()) { // TODO Use optimized data structures
75
+ for (const element of __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").asArray()) {
76
76
  if (element.position <= coordinates.u && coordinates.u < element.complete && element.pitch === coordinates.v) {
77
77
  return Iterables.one(element);
78
78
  }
@@ -80,14 +80,16 @@ export class NoteEventCollectionBoxAdapter {
80
80
  return Iterables.empty();
81
81
  }
82
82
  selectablesBetween(begin, end) {
83
- const events = [];
84
- for (const element of __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").asArray()) { // TODO Use optimized data structures
85
- if (Intervals.intersect1D(element.position, element.complete, begin.u, end.u)
86
- && Intervals.intersect1D(element.pitch, element.pitch, begin.v, end.v)) {
87
- events.push(element);
83
+ const result = [];
84
+ const array = __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").asArray();
85
+ const endIndex = __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").ceilFirstIndex(end.u);
86
+ for (let i = 0; i < endIndex; i++) {
87
+ const element = array[i];
88
+ if (element.complete > begin.u && element.pitch >= begin.v && element.pitch <= end.v) {
89
+ result.push(element);
88
90
  }
89
91
  }
90
- return events;
92
+ return result;
91
93
  }
92
94
  requestSorting() {
93
95
  __classPrivateFieldGet(this, _NoteEventCollectionBoxAdapter_events, "f").onIndexingChanged();
@@ -1,5 +1,5 @@
1
1
  import { ValueEventCollectionBox } from "@opendaw/studio-boxes";
2
- import { int, Observer, Option, Subscription, unitValue, UUID } from "@opendaw/lib-std";
2
+ import { int, Observer, Option, Subscription, unitValue, UUID, ValueMapping } from "@opendaw/lib-std";
3
3
  import { Address } from "@opendaw/lib-box";
4
4
  import { EventCollection, Interpolation, ppqn } from "@opendaw/lib-dsp";
5
5
  import { BoxAdapter } from "../../BoxAdapter";
@@ -16,7 +16,7 @@ export declare class ValueEventCollectionBoxAdapter implements BoxAdapter {
16
16
  constructor(context: BoxAdaptersContext, box: ValueEventCollectionBox);
17
17
  valueAt(position: ppqn, fallback: unitValue): unitValue;
18
18
  copy(): ValueEventCollectionBoxAdapter;
19
- cut(position: ppqn): Option<ValueEventBoxAdapter>;
19
+ cut(position: ppqn, eventMapping?: ValueMapping<number>): Option<ValueEventBoxAdapter>;
20
20
  subscribeChange(observer: Observer<this>): Subscription;
21
21
  createEvent({ position, index, value, interpolation }: CreateEventParams): ValueEventBoxAdapter;
22
22
  requestSorting(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueEventCollectionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/collection/ValueEventCollectionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,uBAAuB,EAAC,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAGH,GAAG,EAGH,QAAQ,EACR,MAAM,EAGN,YAAY,EAEZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAM,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAGlE,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,aAAa,CAAA;CAC/B,CAAA;AAED,qBAAa,8BAA+B,YAAW,UAAU;;gBAUjD,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,uBAAuB;IA+BrE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;IAEvD,IAAI,IAAI,8BAA8B;IAOtC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC;IA+DjD,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEvD,WAAW,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,EAAE,iBAAiB,GAAG,oBAAoB;IAW7F,cAAc,IAAI,IAAI;IAKtB,sBAAsB,IAAI,IAAI;IAE9B,SAAS;IAET,IAAI,GAAG,IAAI,uBAAuB,CAAmB;IACrD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAkF;IACtG,IAAI,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAsB;IAEzE,QAAQ,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"ValueEventCollectionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/collection/ValueEventCollectionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,uBAAuB,EAAC,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAGH,GAAG,EAIH,QAAQ,EACR,MAAM,EAGN,YAAY,EAEZ,SAAS,EACT,IAAI,EACJ,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAM,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAGlE,KAAK,iBAAiB,GAAG;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,aAAa,CAAA;CAC/B,CAAA;AAED,qBAAa,8BAA+B,YAAW,UAAU;;gBAUjD,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,uBAAuB;IA+BrE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;IAEvD,IAAI,IAAI,8BAA8B;IAOtC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAE,YAAY,CAAC,MAAM,CAA2B,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAsE/G,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEvD,WAAW,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,EAAE,iBAAiB,GAAG,oBAAoB;IAqB7F,cAAc,IAAI,IAAI;IAKtB,sBAAsB,IAAI,IAAI;IAE9B,SAAS;IAET,IAAI,GAAG,IAAI,uBAAuB,CAAmB;IACrD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,SAAS,IAAI,GAAG,CAAkF;IACtG,IAAI,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,CAAsB;IAEzE,QAAQ,IAAI,MAAM;CAGrB"}