@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.
- package/dist/AutomatableParameterFieldAdapter.d.ts.map +1 -1
- package/dist/AutomatableParameterFieldAdapter.js +3 -1
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +4 -0
- package/dist/BoxAdaptersContext.d.ts +1 -2
- package/dist/BoxAdaptersContext.d.ts.map +1 -1
- package/dist/ClipSequencing.d.ts +1 -1
- package/dist/ClipSequencing.d.ts.map +1 -1
- package/dist/DeviceAdapter.d.ts +2 -0
- package/dist/DeviceAdapter.d.ts.map +1 -1
- package/dist/DeviceManualUrls.d.ts +25 -0
- package/dist/DeviceManualUrls.d.ts.map +1 -0
- package/dist/DeviceManualUrls.js +29 -0
- package/dist/EngineProcessorAttachment.d.ts +1 -3
- package/dist/EngineProcessorAttachment.d.ts.map +1 -1
- package/dist/EngineStateSchema.d.ts +1 -0
- package/dist/EngineStateSchema.d.ts.map +1 -1
- package/dist/EngineStateSchema.js +1 -0
- package/dist/TempoRange.d.ts +5 -0
- package/dist/TempoRange.d.ts.map +1 -0
- package/dist/TempoRange.js +1 -0
- package/dist/Validator.d.ts +0 -2
- package/dist/Validator.d.ts.map +1 -1
- package/dist/Validator.js +4 -3
- package/dist/VaryingTempoMap.d.ts +18 -0
- package/dist/VaryingTempoMap.d.ts.map +1 -0
- package/dist/VaryingTempoMap.js +105 -0
- package/dist/audio/AudioFileBoxAdapter.js +2 -2
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts +3 -2
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.js +4 -2
- package/dist/audio-unit/AudioUnitBoxAdapter.d.ts +1 -0
- package/dist/audio-unit/AudioUnitBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioUnitBoxAdapter.js +1 -0
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts +14 -2
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +22 -9
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.d.ts +31 -0
- package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.d.ts.map +1 -0
- package/dist/devices/audio-effects/MaximizerDeviceBoxAdapter.js +53 -0
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +2 -0
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +1 -0
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +2 -0
- package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/NanoDeviceBoxAdapter.js +2 -0
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +1 -0
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +2 -0
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +2 -0
- package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/TapeDeviceBoxAdapter.js +2 -0
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +2 -0
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +2 -0
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +2 -0
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.js +1 -0
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.js +2 -0
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts +1 -0
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +2 -0
- package/dist/engine/EnginePreferences.d.ts +4 -0
- package/dist/engine/EnginePreferences.d.ts.map +1 -0
- package/dist/engine/EnginePreferences.js +1 -0
- package/dist/engine/EnginePreferencesSchema.d.ts +22 -0
- package/dist/engine/EnginePreferencesSchema.d.ts.map +1 -0
- package/dist/engine/EnginePreferencesSchema.js +33 -0
- package/dist/factories/DeviceFactory.d.ts +8 -0
- package/dist/factories/DeviceFactory.d.ts.map +1 -0
- package/dist/factories/DeviceFactory.js +1 -0
- package/dist/factories/InstrumentFactories.d.ts.map +1 -1
- package/dist/factories/InstrumentFactories.js +7 -0
- package/dist/factories/InstrumentFactory.d.ts +2 -4
- package/dist/factories/InstrumentFactory.d.ts.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/project/ProjectQueries.d.ts.map +1 -1
- package/dist/project/ProjectQueries.js +6 -2
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +4 -3
- package/dist/project/ProjectUtils.d.ts.map +1 -1
- package/dist/project/ProjectUtils.js +17 -16
- package/dist/protocols.d.ts +0 -3
- package/dist/protocols.d.ts.map +1 -1
- package/dist/sample/Sample.d.ts +2 -2
- package/dist/sample/SampleLoaderManager.d.ts +2 -1
- package/dist/sample/SampleLoaderManager.d.ts.map +1 -1
- package/dist/sample/SampleMetaData.d.ts +1 -1
- package/dist/selection/FilteredSelection.js +2 -2
- package/dist/selection/VertexSelection.d.ts.map +1 -1
- package/dist/selection/VertexSelection.js +0 -1
- package/dist/soundfont/Soundfont.d.ts +1 -1
- package/dist/timeline/RegionBoxAdapter.d.ts +8 -0
- package/dist/timeline/RegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/RegionEditing.d.ts.map +1 -1
- package/dist/timeline/RegionEditing.js +0 -1
- package/dist/timeline/SignatureEventBoxAdapter.d.ts +24 -0
- package/dist/timeline/SignatureEventBoxAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureEventBoxAdapter.js +42 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts +42 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureTrackAdapter.js +280 -0
- package/dist/timeline/TimelineBoxAdapter.d.ts +7 -2
- package/dist/timeline/TimelineBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TimelineBoxAdapter.js +52 -7
- package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +1 -0
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +1 -2
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/clip/AudioClipBoxAdapter.js +3 -4
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +10 -8
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts +2 -2
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +25 -8
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts +1 -1
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/event/ValueEventBoxAdapter.js +6 -2
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.js +17 -13
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +5 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.js +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.js +4 -0
- 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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
29
|
-
|
|
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
|
|
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":"AAAA,OAAO,EAAC,eAAe,EAAE,IAAI,EAAQ,QAAQ,EAAoB,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAGH,GAAG,EAEH,KAAK,EAEL,sBAAsB,EAEtB,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,IAAI,
|
|
1
|
+
{"version":3,"file":"AudioClipBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/clip/AudioClipBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,IAAI,EAAQ,QAAQ,EAAoB,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAGH,GAAG,EAEH,KAAK,EAEL,sBAAsB,EAEtB,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,OAAO,EAAE,UAAU,EAAoC,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAC,2BAA2B,EAAC,MAAM,yCAAyC,CAAA;AACnF,OAAO,EAAC,0BAA0B,EAAC,MAAM,wCAAwC,CAAA;AACjF,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAA;AAErE,qBAAa,mBAAoB,YAAW,sBAAsB,EAAE,cAAc,CAAC,KAAK,CAAC;;IACrF,QAAQ,CAAC,IAAI,gBAAe;gBAkBhB,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,YAAY;IAsC1D,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,YAAY;IAIvF,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IACvD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAEtD,WAAW,IAAI,IAAI;IACnB,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAiB/B,UAAU,IAAI,IAAI;IAClB,YAAY,IAAI,IAAI;IAEpB,IAAI,UAAU,IAAI,OAAO,CAAwC;IAEjE,IAAI,GAAG,IAAI,YAAY,CAAmB;IAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,QAAQ,IAAI,IAAI,CAA2C;IAC/D,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,EAA8C;IACtE,IAAI,IAAI,IAAI,OAAO,CAAmC;IACtD,IAAI,GAAG,IAAI,GAAG,CAAkC;IAChD,IAAI,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAwB;IAClE,IAAI,IAAI,IAAI,mBAAmB,CAAyD;IACxF,IAAI,qBAAqB,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAwB;IACpF,IAAI,aAAa,YAAyC;IAC1D,IAAI,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,CAAqB;IACvD,IAAI,QAAQ,IAAI,QAAQ,CAA8D;IACtF,IAAI,cAAc,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAkC;IACtF,IAAI,mBAAmB,IAAI,OAAO,CAAsC;IACxE,IAAI,sBAAsB,IAAI,MAAM,CAAC,2BAA2B,CAAC,CAEhE;IACD,IAAI,qBAAqB,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAE9D;IACD,IAAI,cAAc,IAAI,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAElE;IACD,IAAI,KAAK,IAAI,MAAM,CAMlB;IACD,IAAI,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,CAI7C;IACD,IAAI,UAAU,IAAI,OAAO,CAAe;IACxC,IAAI,SAAS,IAAI,OAAO,CAAe;IACvC,IAAI,SAAS,IAAI,OAAO,CAAmC;IAE3D,SAAS,IAAI,IAAI;IAQjB,QAAQ,IAAI,MAAM;CAMrB"}
|
|
@@ -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,
|
|
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,
|
|
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 {
|
|
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()) {
|
|
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
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
|
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,
|
|
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"}
|