@opendaw/studio-adapters 0.0.48 → 0.0.49
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.js +86 -73
- package/dist/BoxAdapterCollection.js +30 -17
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +87 -72
- package/dist/BoxAdaptersContext.d.ts +2 -2
- package/dist/BoxAdaptersContext.d.ts.map +1 -1
- package/dist/EngineProcessorAttachment.d.ts +2 -1
- package/dist/EngineProcessorAttachment.d.ts.map +1 -1
- package/dist/FieldAdapter.js +45 -32
- package/dist/IndexedBoxAdapterCollection.js +45 -32
- package/dist/NoteBroadcaster.js +25 -12
- package/dist/NoteStreamReceiver.js +29 -16
- package/dist/ParameterAdapterSet.js +24 -11
- package/dist/ParameterFieldAdapters.js +19 -6
- package/dist/Parsing.d.ts +5 -0
- package/dist/Parsing.d.ts.map +1 -0
- package/dist/Parsing.js +10 -0
- package/dist/PianoModeAdapter.js +32 -19
- package/dist/RootBoxAdapter.js +37 -24
- package/dist/Validator.d.ts +10 -0
- package/dist/Validator.d.ts.map +1 -0
- package/dist/Validator.js +35 -0
- package/dist/audio/AudioFileBoxAdapter.js +23 -10
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.js +31 -18
- package/dist/audio-unit/AudioUnitBoxAdapter.js +74 -63
- package/dist/audio-unit/AudioUnitInput.d.ts +1 -1
- package/dist/audio-unit/AudioUnitInput.d.ts.map +1 -1
- package/dist/audio-unit/AudioUnitInput.js +43 -30
- package/dist/audio-unit/AudioUnitOutput.js +33 -20
- package/dist/audio-unit/AudioUnitTracks.js +39 -26
- package/dist/audio-unit/AuxSendBoxAdapter.js +47 -34
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +49 -37
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +41 -29
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +51 -39
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +39 -27
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +33 -20
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +46 -34
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +45 -33
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +43 -31
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +36 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +63 -0
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +30 -17
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +42 -29
- package/dist/devices/instruments/NanoDeviceBoxAdapter.js +38 -26
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +101 -89
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +0 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +36 -24
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +84 -72
- package/dist/devices/instruments/TapeDeviceBoxAdapter.js +40 -28
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +26 -4
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +70 -33
- package/dist/devices/instruments/VaporisateurSettings.d.ts +17 -0
- package/dist/devices/instruments/VaporisateurSettings.d.ts.map +1 -0
- package/dist/devices/instruments/VaporisateurSettings.js +24 -0
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +51 -39
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +40 -28
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.js +30 -17
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.js +47 -35
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +32 -19
- package/dist/editing/UserEditing.js +33 -20
- package/dist/editing/UserEditingManager.js +28 -15
- package/dist/factories/AudioBusFactory.d.ts +7 -0
- package/dist/factories/AudioBusFactory.d.ts.map +1 -0
- package/dist/factories/AudioBusFactory.js +29 -0
- package/dist/factories/AudioUnitFactory.d.ts +13 -0
- package/dist/factories/AudioUnitFactory.d.ts.map +1 -0
- package/dist/factories/AudioUnitFactory.js +44 -0
- package/dist/factories/AudioUnitOrdering.d.ts +3 -0
- package/dist/factories/AudioUnitOrdering.d.ts.map +1 -0
- package/dist/factories/AudioUnitOrdering.js +7 -0
- package/dist/factories/ColorCodes.d.ts +7 -0
- package/dist/factories/ColorCodes.d.ts.map +1 -0
- package/dist/factories/ColorCodes.js +32 -0
- package/dist/factories/Colors.d.ts +15 -0
- package/dist/factories/Colors.d.ts.map +1 -0
- package/dist/factories/Colors.js +23 -0
- package/dist/factories/InstrumentBox.d.ts +3 -0
- package/dist/factories/InstrumentBox.d.ts.map +1 -0
- package/dist/factories/InstrumentBox.js +1 -0
- package/dist/factories/InstrumentFactories.d.ts +34 -0
- package/dist/factories/InstrumentFactories.d.ts.map +1 -0
- package/dist/factories/InstrumentFactories.js +137 -0
- package/dist/factories/InstrumentFactory.d.ts +13 -0
- package/dist/factories/InstrumentFactory.d.ts.map +1 -0
- package/dist/factories/InstrumentFactory.js +1 -0
- package/dist/factories/InstrumentOptions.d.ts +9 -0
- package/dist/factories/InstrumentOptions.d.ts.map +1 -0
- package/dist/factories/InstrumentOptions.js +1 -0
- package/dist/factories/InstrumentProduct.d.ts +8 -0
- package/dist/factories/InstrumentProduct.d.ts.map +1 -0
- package/dist/factories/InstrumentProduct.js +1 -0
- package/dist/grooves/GrooveShuffleBoxAdapter.js +47 -35
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/modular/abstract.js +37 -24
- package/dist/modular/connection.js +20 -7
- package/dist/modular/connector.js +29 -16
- package/dist/modular/modular.js +49 -36
- package/dist/modular/modules/audio-input.js +17 -4
- package/dist/modular/modules/audio-output.js +17 -4
- package/dist/modular/modules/delay.js +24 -11
- package/dist/modular/modules/gain.js +24 -11
- package/dist/modular/modules/multiplier.js +21 -8
- package/dist/modular/user-interface.js +25 -12
- package/dist/preset/PresetDecoder.d.ts +11 -0
- package/dist/preset/PresetDecoder.d.ts.map +1 -0
- package/dist/preset/PresetDecoder.js +154 -0
- package/dist/preset/PresetEncoder.d.ts +5 -0
- package/dist/preset/PresetEncoder.d.ts.map +1 -0
- package/dist/preset/PresetEncoder.js +19 -0
- package/dist/preset/PresetHeader.d.ts +5 -0
- package/dist/preset/PresetHeader.d.ts.map +1 -0
- package/dist/preset/PresetHeader.js +5 -0
- package/dist/project/ProjectQueries.d.ts +5 -0
- package/dist/project/ProjectQueries.d.ts.map +1 -0
- package/dist/project/ProjectQueries.js +10 -0
- package/dist/project/ProjectSkeleton.d.ts +10 -1
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +100 -1
- package/dist/project/ProjectUtils.d.ts +13 -0
- package/dist/project/ProjectUtils.d.ts.map +1 -0
- package/dist/project/ProjectUtils.js +142 -0
- package/dist/protocols.d.ts.map +1 -1
- package/dist/selection/FilteredSelection.js +47 -34
- package/dist/selection/VertexSelection.js +66 -55
- package/dist/soundfont/SoundfontFileBoxAdapter.js +21 -8
- package/dist/timeline/MarkerBoxAdapter.js +33 -20
- package/dist/timeline/MarkerTrackAdapter.js +34 -22
- package/dist/timeline/TimelineBoxAdapter.js +24 -11
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +97 -85
- package/dist/timeline/TrackClips.js +27 -14
- package/dist/timeline/TrackRegions.js +40 -27
- package/dist/timeline/TrackType.d.ts +1 -1
- package/dist/timeline/TrackType.d.ts.map +1 -1
- package/dist/timeline/TrackType.js +1 -1
- package/dist/timeline/clip/AudioClipBoxAdapter.js +66 -53
- package/dist/timeline/clip/NoteClipBoxAdapter.js +66 -53
- package/dist/timeline/clip/ValueClipBoxAdapter.js +67 -54
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +85 -73
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +53 -40
- package/dist/timeline/event/NoteEventBoxAdapter.js +43 -30
- package/dist/timeline/event/ValueEventBoxAdapter.js +67 -54
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +17 -9
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.js +149 -83
- package/dist/timeline/region/MutableRegion.d.ts +8 -0
- package/dist/timeline/region/MutableRegion.d.ts.map +1 -0
- package/dist/timeline/region/MutableRegion.js +1 -0
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +6 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.js +78 -61
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +6 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.js +79 -62
- package/package.json +8 -8
- package/dist/IconSymbol.d.ts +0 -126
- package/dist/IconSymbol.d.ts.map +0 -1
- package/dist/IconSymbol.js +0 -126
- package/dist/UpdateClockRate.d.ts +0 -2
- package/dist/UpdateClockRate.d.ts.map +0 -1
- package/dist/UpdateClockRate.js +0 -2
- package/dist/project/ProjectDecoder.d.ts +0 -10
- package/dist/project/ProjectDecoder.d.ts.map +0 -1
- package/dist/project/ProjectDecoder.js +0 -36
|
@@ -1,123 +1,188 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 _AudioRegionBoxAdapter_instances, _AudioRegionBoxAdapter_terminator, _AudioRegionBoxAdapter_context, _AudioRegionBoxAdapter_box, _AudioRegionBoxAdapter_durationConverter, _AudioRegionBoxAdapter_loopOffsetConverter, _AudioRegionBoxAdapter_loopDurationConverter, _AudioRegionBoxAdapter_changeNotifier, _AudioRegionBoxAdapter_fileAdapter, _AudioRegionBoxAdapter_fileSubscription, _AudioRegionBoxAdapter_tempoSubscription, _AudioRegionBoxAdapter_isSelected, _AudioRegionBoxAdapter_constructing, _AudioRegionBoxAdapter_dispatchChange;
|
|
13
|
+
import { asEnumValue, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
|
|
14
|
+
import { TimeBase, TimeBaseConverter } from "@opendaw/lib-dsp";
|
|
3
15
|
import { Propagation } from "@opendaw/lib-box";
|
|
4
|
-
import {
|
|
16
|
+
import { AudioPlayback } from "@opendaw/studio-enums";
|
|
17
|
+
import { AudioRegionBox } from "@opendaw/studio-boxes";
|
|
5
18
|
import { TrackBoxAdapter } from "../TrackBoxAdapter";
|
|
6
19
|
import { AudioFileBoxAdapter } from "../../audio/AudioFileBoxAdapter";
|
|
7
20
|
export class AudioRegionBoxAdapter {
|
|
8
|
-
type = "audio-region";
|
|
9
|
-
#terminator;
|
|
10
|
-
#context;
|
|
11
|
-
#box;
|
|
12
|
-
#changeNotifier;
|
|
13
|
-
#fileAdapter = Option.None;
|
|
14
|
-
#fileSubscription = Option.None;
|
|
15
|
-
#isSelected;
|
|
16
|
-
#constructing;
|
|
17
21
|
constructor(context, box) {
|
|
18
|
-
this
|
|
19
|
-
this
|
|
20
|
-
this
|
|
21
|
-
this
|
|
22
|
-
this
|
|
23
|
-
this
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
22
|
+
_AudioRegionBoxAdapter_instances.add(this);
|
|
23
|
+
this.type = "audio-region";
|
|
24
|
+
_AudioRegionBoxAdapter_terminator.set(this, void 0);
|
|
25
|
+
_AudioRegionBoxAdapter_context.set(this, void 0);
|
|
26
|
+
_AudioRegionBoxAdapter_box.set(this, void 0);
|
|
27
|
+
_AudioRegionBoxAdapter_durationConverter.set(this, void 0);
|
|
28
|
+
_AudioRegionBoxAdapter_loopOffsetConverter.set(this, void 0);
|
|
29
|
+
_AudioRegionBoxAdapter_loopDurationConverter.set(this, void 0);
|
|
30
|
+
_AudioRegionBoxAdapter_changeNotifier.set(this, void 0);
|
|
31
|
+
_AudioRegionBoxAdapter_fileAdapter.set(this, Option.None);
|
|
32
|
+
_AudioRegionBoxAdapter_fileSubscription.set(this, Terminable.Empty);
|
|
33
|
+
_AudioRegionBoxAdapter_tempoSubscription.set(this, Terminable.Empty);
|
|
34
|
+
_AudioRegionBoxAdapter_isSelected.set(this, void 0);
|
|
35
|
+
_AudioRegionBoxAdapter_constructing.set(this, void 0);
|
|
36
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_context, context, "f");
|
|
37
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_box, box, "f");
|
|
38
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_terminator, new Terminator(), "f");
|
|
39
|
+
const { timeBase, position, duration, loopOffset, loopDuration } = box;
|
|
40
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_durationConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, duration), "f");
|
|
41
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_loopOffsetConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, loopOffset), "f");
|
|
42
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_loopDurationConverter, TimeBaseConverter.aware(context.tempoMap, timeBase, position, loopDuration), "f");
|
|
43
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_changeNotifier, new Notifier(), "f");
|
|
44
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_isSelected, false, "f");
|
|
45
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_constructing, true, "f");
|
|
46
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").pointerHub.subscribe({
|
|
47
|
+
onAdded: () => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this),
|
|
48
|
+
onRemoved: () => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this)
|
|
49
|
+
}), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").file.catchupAndSubscribe((pointerField) => {
|
|
50
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileAdapter, pointerField.targetVertex.map(vertex => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, AudioFileBoxAdapter)), "f");
|
|
51
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileSubscription, "f").terminate();
|
|
52
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileSubscription, __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").mapOr(adapter => adapter.getOrCreateLoader().subscribe(() => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this)), Terminable.Empty), "f");
|
|
53
|
+
}), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.catchupAndSubscribe(owner => {
|
|
54
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_tempoSubscription, "f").terminate();
|
|
55
|
+
if (asEnumValue(owner.getValue(), TimeBase) === TimeBase.Seconds) {
|
|
56
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_tempoSubscription, context.tempoMap.subscribe(() => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this)), "f");
|
|
57
|
+
}
|
|
58
|
+
}), __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").subscribe(Propagation.Children, (update) => {
|
|
34
59
|
if (this.trackBoxAdapter.isEmpty()) {
|
|
35
60
|
return;
|
|
36
61
|
}
|
|
37
62
|
if (update.type === "primitive" || update.type === "pointer") {
|
|
38
63
|
const track = this.trackBoxAdapter.unwrap();
|
|
39
|
-
if (this
|
|
64
|
+
if (__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.address.equals(update.address)) {
|
|
40
65
|
track.regions.onIndexingChanged();
|
|
41
|
-
this
|
|
66
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
|
|
42
67
|
}
|
|
43
68
|
else {
|
|
44
|
-
this
|
|
69
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
|
|
45
70
|
}
|
|
46
71
|
}
|
|
47
72
|
}), {
|
|
48
73
|
terminate: () => {
|
|
49
|
-
this
|
|
50
|
-
this
|
|
74
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileSubscription, "f").terminate();
|
|
75
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_fileSubscription, Terminable.Empty, "f");
|
|
76
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_tempoSubscription, "f").terminate();
|
|
77
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_tempoSubscription, Terminable.Empty, "f");
|
|
51
78
|
}
|
|
52
79
|
});
|
|
53
|
-
this
|
|
80
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_constructing, false, "f");
|
|
54
81
|
}
|
|
55
|
-
subscribeChange(observer) { return this
|
|
82
|
+
subscribeChange(observer) { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_changeNotifier, "f").subscribe(observer); }
|
|
56
83
|
accept(visitor) {
|
|
57
84
|
return safeExecute(visitor.visitAudioRegionBoxAdapter, this);
|
|
58
85
|
}
|
|
59
86
|
onSelected() {
|
|
60
|
-
this
|
|
61
|
-
this
|
|
87
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_isSelected, true, "f");
|
|
88
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
|
|
62
89
|
}
|
|
63
90
|
onDeselected() {
|
|
64
|
-
this
|
|
65
|
-
this
|
|
66
|
-
}
|
|
67
|
-
get isSelected() { return this.#isSelected; }
|
|
68
|
-
terminate() { this.#terminator.terminate(); }
|
|
69
|
-
get box() { return this.#box; }
|
|
70
|
-
get uuid() { return this.#box.address.uuid; }
|
|
71
|
-
get address() { return this.#box.address; }
|
|
72
|
-
get position() { return this.#box.position.getValue(); }
|
|
73
|
-
get duration() {
|
|
74
|
-
const duration = this.#box.duration.getValue();
|
|
75
|
-
if (duration === 0) { // signals no synchronization with track bpm
|
|
76
|
-
const fileBoxAdapter = this.#fileAdapter.unwrap("Cannot compute duration without file");
|
|
77
|
-
const startInSeconds = fileBoxAdapter.startInSeconds;
|
|
78
|
-
const endInSeconds = fileBoxAdapter.endInSeconds;
|
|
79
|
-
const totalInSeconds = endInSeconds - startInSeconds;
|
|
80
|
-
return PPQN.secondsToPulses(totalInSeconds, this.#context.bpm);
|
|
81
|
-
}
|
|
82
|
-
return duration;
|
|
91
|
+
__classPrivateFieldSet(this, _AudioRegionBoxAdapter_isSelected, false, "f");
|
|
92
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_instances, "m", _AudioRegionBoxAdapter_dispatchChange).call(this);
|
|
83
93
|
}
|
|
94
|
+
get isSelected() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_isSelected, "f"); }
|
|
95
|
+
get box() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f"); }
|
|
96
|
+
get uuid() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").address.uuid; }
|
|
97
|
+
get address() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").address; }
|
|
98
|
+
get position() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.getValue(); }
|
|
99
|
+
get duration() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toPPQN(); }
|
|
84
100
|
get complete() { return this.position + this.duration; }
|
|
85
|
-
get loopOffset() { return this
|
|
86
|
-
get loopDuration() { return this
|
|
101
|
+
get loopOffset() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toPPQN(); }
|
|
102
|
+
get loopDuration() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toPPQN(); }
|
|
87
103
|
get offset() { return this.position - this.loopOffset; }
|
|
88
|
-
get mute() { return this
|
|
89
|
-
get hue() { return this
|
|
90
|
-
get gain() { return this
|
|
91
|
-
get file() { return this
|
|
92
|
-
get
|
|
104
|
+
get mute() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").mute.getValue(); }
|
|
105
|
+
get hue() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").hue.getValue(); }
|
|
106
|
+
get gain() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").gain.getValue(); }
|
|
107
|
+
get file() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").unwrap("Cannot access file."); }
|
|
108
|
+
get timeBase() { return asEnumValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.getValue(), TimeBase); }
|
|
109
|
+
get hasCollection() { return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").nonEmpty(); }
|
|
93
110
|
get optCollection() { return Option.None; }
|
|
94
111
|
get label() {
|
|
95
|
-
if (this
|
|
112
|
+
if (__classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").isEmpty()) {
|
|
96
113
|
return "No Audio File";
|
|
97
114
|
}
|
|
98
|
-
const state = this
|
|
115
|
+
const state = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_fileAdapter, "f").unwrap().getOrCreateLoader().state;
|
|
99
116
|
if (state.type === "progress") {
|
|
100
117
|
return `${Math.round(state.progress * 100)}%`;
|
|
101
118
|
}
|
|
102
119
|
if (state.type === "error") {
|
|
103
120
|
return String(state.reason);
|
|
104
121
|
}
|
|
105
|
-
return this
|
|
122
|
+
return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").label.getValue();
|
|
106
123
|
}
|
|
107
124
|
get isMirrowed() { return false; }
|
|
108
125
|
get canMirror() { return false; }
|
|
109
126
|
get trackBoxAdapter() {
|
|
110
|
-
return this
|
|
111
|
-
.map(vertex => this
|
|
127
|
+
return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex
|
|
128
|
+
.map(vertex => __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));
|
|
129
|
+
}
|
|
130
|
+
set position(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.setValue(value); }
|
|
131
|
+
set duration(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").fromPPQN(value); }
|
|
132
|
+
set loopOffset(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").fromPPQN(value); }
|
|
133
|
+
set loopDuration(value) { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").fromPPQN(value); }
|
|
134
|
+
get playback() { return asEnumValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playback.getValue(), AudioPlayback); }
|
|
135
|
+
setPlayback(value, keepCurrentStretch = false) {
|
|
136
|
+
const wasMusical = this.timeBase === TimeBase.Musical;
|
|
137
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").playback.setValue(value);
|
|
138
|
+
if (value === AudioPlayback.NoSync) {
|
|
139
|
+
if (wasMusical) {
|
|
140
|
+
if (keepCurrentStretch) {
|
|
141
|
+
const duration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toSeconds();
|
|
142
|
+
const loopDuration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toSeconds();
|
|
143
|
+
const loopOffset = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toSeconds();
|
|
144
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Seconds);
|
|
145
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(duration);
|
|
146
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(loopDuration);
|
|
147
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(loopOffset);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// Reset to 100% playback speed (original file speed)
|
|
151
|
+
const fileDuration = this.file.endInSeconds - this.file.startInSeconds;
|
|
152
|
+
const currentLoopDurationSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toSeconds();
|
|
153
|
+
const scale = fileDuration / currentLoopDurationSeconds;
|
|
154
|
+
const currentDurationSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toSeconds();
|
|
155
|
+
const currentLoopOffsetSeconds = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toSeconds();
|
|
156
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Seconds);
|
|
157
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(currentDurationSeconds * scale);
|
|
158
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(fileDuration);
|
|
159
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(currentLoopOffsetSeconds * scale);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Switching TO musical (Pitch/Timestretch/AudioFit)
|
|
165
|
+
if (!wasMusical) {
|
|
166
|
+
const duration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_durationConverter, "f").toPPQN();
|
|
167
|
+
const loopDuration = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopDurationConverter, "f").toPPQN();
|
|
168
|
+
const loopOffset = __classPrivateFieldGet(this, _AudioRegionBoxAdapter_loopOffsetConverter, "f").toPPQN();
|
|
169
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.setValue(TimeBase.Musical);
|
|
170
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.setValue(duration);
|
|
171
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.setValue(loopOffset);
|
|
172
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.setValue(loopDuration);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
112
175
|
}
|
|
113
176
|
copyTo(params) {
|
|
114
|
-
return this
|
|
115
|
-
box.
|
|
116
|
-
box.
|
|
117
|
-
|
|
118
|
-
box.
|
|
119
|
-
box.
|
|
120
|
-
box.
|
|
177
|
+
return __classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxAdapters.adapterFor(AudioRegionBox.create(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
|
|
178
|
+
box.timeBase.setValue(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").timeBase.getValue());
|
|
179
|
+
box.position.setValue(params?.position ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").position.getValue());
|
|
180
|
+
// TODO Respect time-base.
|
|
181
|
+
box.duration.setValue(params?.duration ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").duration.getValue());
|
|
182
|
+
box.loopOffset.setValue(params?.loopOffset ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopOffset.getValue());
|
|
183
|
+
box.loopDuration.setValue(params?.loopDuration ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").loopDuration.getValue());
|
|
184
|
+
box.regions.refer(params?.track ?? __classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
|
|
185
|
+
box.file.refer(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").file.targetVertex.unwrap());
|
|
121
186
|
box.mute.setValue(this.mute);
|
|
122
187
|
box.hue.setValue(this.hue);
|
|
123
188
|
box.label.setValue(this.label);
|
|
@@ -132,12 +197,13 @@ export class AudioRegionBoxAdapter {
|
|
|
132
197
|
// TODO This needs to done by creating a new audio file
|
|
133
198
|
return Option.None;
|
|
134
199
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (this.#constructing) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
this.#changeNotifier.notify();
|
|
141
|
-
this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();
|
|
142
|
-
}
|
|
200
|
+
terminate() { __classPrivateFieldGet(this, _AudioRegionBoxAdapter_terminator, "f").terminate(); }
|
|
201
|
+
toString() { return `{AudioRegionBoxAdapter ${UUID.toString(__classPrivateFieldGet(this, _AudioRegionBoxAdapter_box, "f").address.uuid)}}`; }
|
|
143
202
|
}
|
|
203
|
+
_AudioRegionBoxAdapter_terminator = new WeakMap(), _AudioRegionBoxAdapter_context = new WeakMap(), _AudioRegionBoxAdapter_box = new WeakMap(), _AudioRegionBoxAdapter_durationConverter = new WeakMap(), _AudioRegionBoxAdapter_loopOffsetConverter = new WeakMap(), _AudioRegionBoxAdapter_loopDurationConverter = new WeakMap(), _AudioRegionBoxAdapter_changeNotifier = new WeakMap(), _AudioRegionBoxAdapter_fileAdapter = new WeakMap(), _AudioRegionBoxAdapter_fileSubscription = new WeakMap(), _AudioRegionBoxAdapter_tempoSubscription = new WeakMap(), _AudioRegionBoxAdapter_isSelected = new WeakMap(), _AudioRegionBoxAdapter_constructing = new WeakMap(), _AudioRegionBoxAdapter_instances = new WeakSet(), _AudioRegionBoxAdapter_dispatchChange = function _AudioRegionBoxAdapter_dispatchChange() {
|
|
204
|
+
if (__classPrivateFieldGet(this, _AudioRegionBoxAdapter_constructing, "f")) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
__classPrivateFieldGet(this, _AudioRegionBoxAdapter_changeNotifier, "f").notify();
|
|
208
|
+
this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();
|
|
209
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutableRegion.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/MutableRegion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,MAAM,WAAW,aAAa;IAC1B,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAC;IACzB,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAC;IACzB,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAC;IAC3B,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -7,6 +7,7 @@ import { TrackBoxAdapter } from "../TrackBoxAdapter";
|
|
|
7
7
|
import { LoopableRegionBoxAdapter, RegionBoxAdapter, RegionBoxAdapterVisitor } from "../RegionBoxAdapter";
|
|
8
8
|
import { NoteEventCollectionBoxAdapter } from "../collection/NoteEventCollectionBoxAdapter";
|
|
9
9
|
import { BoxAdaptersContext } from "../../BoxAdaptersContext";
|
|
10
|
+
import { MutableRegion } from "./MutableRegion";
|
|
10
11
|
type CopyToParams = {
|
|
11
12
|
track?: Field<Pointers.RegionCollection>;
|
|
12
13
|
position?: ppqn;
|
|
@@ -15,10 +16,14 @@ type CopyToParams = {
|
|
|
15
16
|
loopDuration?: ppqn;
|
|
16
17
|
consolidate?: boolean;
|
|
17
18
|
};
|
|
18
|
-
export declare class NoteRegionBoxAdapter implements LoopableRegionBoxAdapter<NoteEventCollectionBoxAdapter
|
|
19
|
+
export declare class NoteRegionBoxAdapter implements LoopableRegionBoxAdapter<NoteEventCollectionBoxAdapter>, MutableRegion {
|
|
19
20
|
#private;
|
|
20
21
|
readonly type = "note-region";
|
|
21
22
|
constructor(context: BoxAdaptersContext, box: NoteRegionBox);
|
|
23
|
+
set position(value: ppqn);
|
|
24
|
+
set duration(value: ppqn);
|
|
25
|
+
set loopOffset(value: ppqn);
|
|
26
|
+
set loopDuration(value: ppqn);
|
|
22
27
|
subscribeChange(observer: Observer<void>): Subscription;
|
|
23
28
|
accept<R>(visitor: RegionBoxAdapterVisitor<R>): Maybe<R>;
|
|
24
29
|
onSelected(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoteRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/NoteRegionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,IAAI,EAAyB,MAAM,kBAAkB,CAAA;AACxF,OAAO,EAEH,GAAG,EACH,KAAK,EAEL,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,KAAK,EAAsB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAyB,aAAa,EAAC,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAC,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAC,6BAA6B,EAAC,MAAM,6CAA6C,CAAA;AACzF,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"NoteRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/NoteRegionBoxAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,15 @@
|
|
|
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 _NoteRegionBoxAdapter_instances, _NoteRegionBoxAdapter_terminator, _NoteRegionBoxAdapter_context, _NoteRegionBoxAdapter_box, _NoteRegionBoxAdapter_changeNotifier, _NoteRegionBoxAdapter_isConstructing, _NoteRegionBoxAdapter_isSelected, _NoteRegionBoxAdapter_eventCollectionSubscription, _NoteRegionBoxAdapter_dispatchChange;
|
|
1
13
|
import { LoopableRegion, PPQN, RegionCollection } from "@opendaw/lib-dsp";
|
|
2
14
|
import { Arrays, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from "@opendaw/lib-std";
|
|
3
15
|
import { Propagation } from "@opendaw/lib-box";
|
|
@@ -5,60 +17,65 @@ import { NoteEventCollectionBox, NoteRegionBox } from "@opendaw/studio-boxes";
|
|
|
5
17
|
import { TrackBoxAdapter } from "../TrackBoxAdapter";
|
|
6
18
|
import { NoteEventCollectionBoxAdapter } from "../collection/NoteEventCollectionBoxAdapter";
|
|
7
19
|
export class NoteRegionBoxAdapter {
|
|
8
|
-
type = "note-region";
|
|
9
|
-
#terminator = new Terminator();
|
|
10
|
-
#context;
|
|
11
|
-
#box;
|
|
12
|
-
#changeNotifier;
|
|
13
|
-
#isConstructing; // Prevents stack overflow due to infinite adapter queries
|
|
14
|
-
#isSelected;
|
|
15
|
-
#eventCollectionSubscription = Terminable.Empty;
|
|
16
20
|
constructor(context, box) {
|
|
17
|
-
this
|
|
18
|
-
this
|
|
19
|
-
this
|
|
20
|
-
this
|
|
21
|
-
this
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
_NoteRegionBoxAdapter_instances.add(this);
|
|
22
|
+
this.type = "note-region";
|
|
23
|
+
_NoteRegionBoxAdapter_terminator.set(this, new Terminator());
|
|
24
|
+
_NoteRegionBoxAdapter_context.set(this, void 0);
|
|
25
|
+
_NoteRegionBoxAdapter_box.set(this, void 0);
|
|
26
|
+
_NoteRegionBoxAdapter_changeNotifier.set(this, void 0);
|
|
27
|
+
_NoteRegionBoxAdapter_isConstructing.set(this, void 0); // Prevents stack overflow due to infinite adapter queries
|
|
28
|
+
_NoteRegionBoxAdapter_isSelected.set(this, void 0);
|
|
29
|
+
_NoteRegionBoxAdapter_eventCollectionSubscription.set(this, Terminable.Empty);
|
|
30
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_context, context, "f");
|
|
31
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_box, box, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_changeNotifier, new Notifier(), "f");
|
|
33
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_isSelected, false, "f");
|
|
34
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_isConstructing, true, "f");
|
|
35
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").pointerHub.subscribe({
|
|
36
|
+
onAdded: () => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this),
|
|
37
|
+
onRemoved: () => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this)
|
|
38
|
+
}), __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").subscribe(Propagation.Children, (update) => {
|
|
26
39
|
if (this.trackBoxAdapter.isEmpty()) {
|
|
27
40
|
return;
|
|
28
41
|
}
|
|
29
42
|
if (update.type === "primitive" || update.type === "pointer") {
|
|
30
43
|
const track = this.trackBoxAdapter.unwrap();
|
|
31
|
-
if (this
|
|
44
|
+
if (__classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").position.address.equals(update.address)) {
|
|
32
45
|
track.regions.onIndexingChanged();
|
|
33
|
-
this
|
|
46
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this);
|
|
34
47
|
}
|
|
35
48
|
else {
|
|
36
|
-
this
|
|
49
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this);
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
|
-
}), this
|
|
40
|
-
this
|
|
41
|
-
this
|
|
52
|
+
}), __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").events.catchupAndSubscribe(({ targetVertex }) => {
|
|
53
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_eventCollectionSubscription, "f").terminate();
|
|
54
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_eventCollectionSubscription, targetVertex.match({
|
|
42
55
|
none: () => Terminable.Empty,
|
|
43
|
-
some: ({ box }) => this
|
|
56
|
+
some: ({ box }) => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxAdapters
|
|
44
57
|
.adapterFor(box, NoteEventCollectionBoxAdapter)
|
|
45
|
-
.subscribeChange(() => this
|
|
46
|
-
});
|
|
47
|
-
this
|
|
58
|
+
.subscribeChange(() => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this))
|
|
59
|
+
}), "f");
|
|
60
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this);
|
|
48
61
|
}));
|
|
49
|
-
this
|
|
62
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_isConstructing, false, "f");
|
|
50
63
|
}
|
|
51
|
-
|
|
64
|
+
set position(value) { __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").position.setValue(value); }
|
|
65
|
+
set duration(value) { __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").duration.setValue(value); }
|
|
66
|
+
set loopOffset(value) { __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").loopOffset.setValue(value); }
|
|
67
|
+
set loopDuration(value) { __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").loopDuration.setValue(value); }
|
|
68
|
+
subscribeChange(observer) { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_changeNotifier, "f").subscribe(observer); }
|
|
52
69
|
accept(visitor) { return safeExecute(visitor.visitNoteRegionBoxAdapter, this); }
|
|
53
70
|
onSelected() {
|
|
54
|
-
this
|
|
55
|
-
this
|
|
71
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_isSelected, true, "f");
|
|
72
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this);
|
|
56
73
|
}
|
|
57
74
|
onDeselected() {
|
|
58
|
-
this
|
|
59
|
-
this
|
|
75
|
+
__classPrivateFieldSet(this, _NoteRegionBoxAdapter_isSelected, false, "f");
|
|
76
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_instances, "m", _NoteRegionBoxAdapter_dispatchChange).call(this);
|
|
60
77
|
}
|
|
61
|
-
get isSelected() { return this
|
|
78
|
+
get isSelected() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_isSelected, "f"); }
|
|
62
79
|
*iterateActiveNotesAt(position) {
|
|
63
80
|
const optCollection = this.optCollection;
|
|
64
81
|
if (optCollection.isEmpty()) {
|
|
@@ -76,32 +93,32 @@ export class NoteRegionBoxAdapter {
|
|
|
76
93
|
}
|
|
77
94
|
}
|
|
78
95
|
terminate() {
|
|
79
|
-
this
|
|
80
|
-
this
|
|
96
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_eventCollectionSubscription, "f").terminate();
|
|
97
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_terminator, "f").terminate();
|
|
81
98
|
}
|
|
82
|
-
get box() { return this
|
|
83
|
-
get uuid() { return this
|
|
84
|
-
get address() { return this
|
|
85
|
-
get position() { return this
|
|
86
|
-
get duration() { return this
|
|
87
|
-
get loopOffset() { return this
|
|
88
|
-
get loopDuration() { return this
|
|
99
|
+
get box() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f"); }
|
|
100
|
+
get uuid() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").address.uuid; }
|
|
101
|
+
get address() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").address; }
|
|
102
|
+
get position() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").position.getValue(); }
|
|
103
|
+
get duration() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").duration.getValue(); }
|
|
104
|
+
get loopOffset() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").loopOffset.getValue(); }
|
|
105
|
+
get loopDuration() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").loopDuration.getValue(); }
|
|
89
106
|
get offset() { return this.position - this.loopOffset; }
|
|
90
107
|
get complete() { return this.position + this.duration; }
|
|
91
|
-
get mute() { return this
|
|
92
|
-
get hue() { return this
|
|
108
|
+
get mute() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").mute.getValue(); }
|
|
109
|
+
get hue() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").hue.getValue(); }
|
|
93
110
|
get hasCollection() { return this.optCollection.nonEmpty(); }
|
|
94
111
|
get optCollection() {
|
|
95
|
-
return this
|
|
96
|
-
.map(vertex => this
|
|
112
|
+
return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").events.targetVertex
|
|
113
|
+
.map(vertex => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, NoteEventCollectionBoxAdapter));
|
|
97
114
|
}
|
|
98
|
-
get label() { return this
|
|
115
|
+
get label() { return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").label.getValue(); }
|
|
99
116
|
get trackBoxAdapter() {
|
|
100
|
-
if (this
|
|
117
|
+
if (__classPrivateFieldGet(this, _NoteRegionBoxAdapter_isConstructing, "f")) {
|
|
101
118
|
return Option.None;
|
|
102
119
|
}
|
|
103
|
-
return this
|
|
104
|
-
.map(vertex => this
|
|
120
|
+
return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").regions.targetVertex
|
|
121
|
+
.map(vertex => __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));
|
|
105
122
|
}
|
|
106
123
|
get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }
|
|
107
124
|
get canMirror() { return true; }
|
|
@@ -110,7 +127,7 @@ export class NoteRegionBoxAdapter {
|
|
|
110
127
|
const eventTarget = params?.consolidate === true
|
|
111
128
|
? eventCollection.copy().box.owners
|
|
112
129
|
: eventCollection.box.owners;
|
|
113
|
-
return this
|
|
130
|
+
return __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxAdapters.adapterFor(NoteRegionBox.create(__classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxGraph, UUID.generate(), box => {
|
|
114
131
|
box.position.setValue(params?.position ?? this.position);
|
|
115
132
|
box.duration.setValue(params?.duration ?? this.duration);
|
|
116
133
|
box.loopOffset.setValue(params?.loopOffset ?? this.loopOffset);
|
|
@@ -119,7 +136,7 @@ export class NoteRegionBoxAdapter {
|
|
|
119
136
|
box.label.setValue(this.label);
|
|
120
137
|
box.mute.setValue(this.mute);
|
|
121
138
|
box.events.refer(eventTarget);
|
|
122
|
-
box.regions.refer(params?.track ?? this
|
|
139
|
+
box.regions.refer(params?.track ?? __classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").regions.targetVertex.unwrap());
|
|
123
140
|
}), NoteRegionBoxAdapter);
|
|
124
141
|
}
|
|
125
142
|
consolidate() {
|
|
@@ -127,10 +144,10 @@ export class NoteRegionBoxAdapter {
|
|
|
127
144
|
return;
|
|
128
145
|
}
|
|
129
146
|
this.optCollection.ifSome(source => {
|
|
130
|
-
const graph = this
|
|
147
|
+
const graph = __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxGraph;
|
|
131
148
|
const target = NoteEventCollectionBox.create(graph, UUID.generate());
|
|
132
149
|
source.events.asArray().forEach(adapter => adapter.copyTo({ events: target.events }));
|
|
133
|
-
this
|
|
150
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").events.refer(target.owners);
|
|
134
151
|
});
|
|
135
152
|
}
|
|
136
153
|
canFlatten(regions) {
|
|
@@ -141,7 +158,7 @@ export class NoteRegionBoxAdapter {
|
|
|
141
158
|
if (!this.canFlatten(regions)) {
|
|
142
159
|
return Option.None;
|
|
143
160
|
}
|
|
144
|
-
const graph = this
|
|
161
|
+
const graph = __classPrivateFieldGet(this, _NoteRegionBoxAdapter_context, "f").boxGraph;
|
|
145
162
|
const sorted = regions.toSorted(RegionCollection.Comparator);
|
|
146
163
|
const first = Arrays.getFirst(sorted, "Internal error (no first)");
|
|
147
164
|
const last = Arrays.getLast(sorted, "Internal error (no last)");
|
|
@@ -178,9 +195,9 @@ export class NoteRegionBoxAdapter {
|
|
|
178
195
|
box.regions.refer(trackBoxAdapter.box.regions);
|
|
179
196
|
}));
|
|
180
197
|
}
|
|
181
|
-
toString() { return `{NoteRegionBoxAdapter ${UUID.toString(this
|
|
182
|
-
#dispatchChange() {
|
|
183
|
-
this.#changeNotifier.notify();
|
|
184
|
-
this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();
|
|
185
|
-
}
|
|
198
|
+
toString() { return `{NoteRegionBoxAdapter ${UUID.toString(__classPrivateFieldGet(this, _NoteRegionBoxAdapter_box, "f").address.uuid)} p: ${PPQN.toString(this.position)}, c: ${PPQN.toString(this.complete)}}`; }
|
|
186
199
|
}
|
|
200
|
+
_NoteRegionBoxAdapter_terminator = new WeakMap(), _NoteRegionBoxAdapter_context = new WeakMap(), _NoteRegionBoxAdapter_box = new WeakMap(), _NoteRegionBoxAdapter_changeNotifier = new WeakMap(), _NoteRegionBoxAdapter_isConstructing = new WeakMap(), _NoteRegionBoxAdapter_isSelected = new WeakMap(), _NoteRegionBoxAdapter_eventCollectionSubscription = new WeakMap(), _NoteRegionBoxAdapter_instances = new WeakSet(), _NoteRegionBoxAdapter_dispatchChange = function _NoteRegionBoxAdapter_dispatchChange() {
|
|
201
|
+
__classPrivateFieldGet(this, _NoteRegionBoxAdapter_changeNotifier, "f").notify();
|
|
202
|
+
this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();
|
|
203
|
+
};
|
|
@@ -8,6 +8,7 @@ import { ValueEventCollectionBoxAdapter } from "../collection/ValueEventCollecti
|
|
|
8
8
|
import { BoxAdaptersContext } from "../../BoxAdaptersContext";
|
|
9
9
|
import { ValueRegionBox } from "@opendaw/studio-boxes";
|
|
10
10
|
import { ValueEventBoxAdapter } from "../event/ValueEventBoxAdapter";
|
|
11
|
+
import { MutableRegion } from "./MutableRegion";
|
|
11
12
|
type CopyToParams = {
|
|
12
13
|
track?: Field<Pointers.RegionCollection>;
|
|
13
14
|
position?: ppqn;
|
|
@@ -16,7 +17,7 @@ type CopyToParams = {
|
|
|
16
17
|
loopDuration?: ppqn;
|
|
17
18
|
consolidate?: boolean;
|
|
18
19
|
};
|
|
19
|
-
export declare class ValueRegionBoxAdapter implements LoopableRegionBoxAdapter<ValueEventCollectionBoxAdapter
|
|
20
|
+
export declare class ValueRegionBoxAdapter implements LoopableRegionBoxAdapter<ValueEventCollectionBoxAdapter>, MutableRegion {
|
|
20
21
|
#private;
|
|
21
22
|
readonly type = "value-region";
|
|
22
23
|
constructor(context: BoxAdaptersContext, box: ValueRegionBox);
|
|
@@ -49,6 +50,10 @@ export declare class ValueRegionBoxAdapter implements LoopableRegionBoxAdapter<V
|
|
|
49
50
|
get trackBoxAdapter(): Option<TrackBoxAdapter>;
|
|
50
51
|
get isMirrowed(): boolean;
|
|
51
52
|
get canMirror(): boolean;
|
|
53
|
+
set position(value: ppqn);
|
|
54
|
+
set duration(value: ppqn);
|
|
55
|
+
set loopOffset(value: ppqn);
|
|
56
|
+
set loopDuration(value: ppqn);
|
|
52
57
|
copyTo(params?: CopyToParams): ValueRegionBoxAdapter;
|
|
53
58
|
consolidate(): void;
|
|
54
59
|
canFlatten(_regions: ReadonlyArray<RegionBoxAdapter<unknown>>): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/ValueRegionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAkB,IAAI,EAAyB,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EAEH,GAAG,EACH,KAAK,EAEL,QAAQ,EACR,MAAM,EAEN,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,KAAK,EAAsB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAC,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAC,8BAA8B,EAAC,MAAM,8CAA8C,CAAA;AAC3F,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAA0B,cAAc,EAAC,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"ValueRegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/timeline/region/ValueRegionBoxAdapter.ts"],"names":[],"mappings":"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"}
|