@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
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asInstanceOf } from "@opendaw/lib-std";
|
|
2
2
|
import { AudioUnitBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { StringField } from "@opendaw/lib-box";
|
|
4
4
|
export var ProjectQueries;
|
|
5
5
|
(function (ProjectQueries) {
|
|
6
6
|
ProjectQueries.existingInstrumentNames = (rootBox) => rootBox.audioUnits.pointerHub.incoming().map(({ box }) => {
|
|
7
|
-
const
|
|
7
|
+
const incoming = asInstanceOf(box, AudioUnitBox).input.pointerHub.incoming().at(0);
|
|
8
|
+
if (incoming === undefined) {
|
|
9
|
+
return "N/A";
|
|
10
|
+
}
|
|
11
|
+
const inputBox = incoming.box;
|
|
8
12
|
return "label" in inputBox && inputBox.label instanceof StringField ? inputBox.label.getValue() : "N/A";
|
|
9
13
|
});
|
|
10
14
|
})(ProjectQueries || (ProjectQueries = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,
|
|
1
|
+
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAItB,MAAM,KAAK,GAAI,SAAS;QAC3B,sBAAsB,EAAE,OAAO,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAuDH,CAAA;IAEM,MAAM,MAAM,GAAI,UAAU,QAAQ,oBAQxC,CAAA;IAEM,MAAM,MAAM,GAAI,aAAa,eAAe,KAAG,eAYrD,CAAA;IAEM,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,qBAiBvD,CAAA;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoxGraph } from "@opendaw/lib-box";
|
|
2
|
-
import { AudioBusBox, AudioUnitBox, BoxIO, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
|
|
2
|
+
import { AudioBusBox, AudioUnitBox, BoxIO, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox, ValueEventCollectionBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { asInstanceOf, assert, ByteArrayInput, ByteArrayOutput, isDefined, Option, panic, UUID } from "@opendaw/lib-std";
|
|
4
|
-
import { AudioUnitType, IconSymbol } from "@opendaw/studio-enums";
|
|
4
|
+
import { AudioUnitType, Colors, IconSymbol } from "@opendaw/studio-enums";
|
|
5
5
|
export var ProjectSkeleton;
|
|
6
6
|
(function (ProjectSkeleton) {
|
|
7
7
|
const MAGIC_HEADER_OPEN = 0x4F50454E;
|
|
@@ -22,7 +22,7 @@ export var ProjectSkeleton;
|
|
|
22
22
|
box.collection.refer(rootBox.audioBusses);
|
|
23
23
|
box.label.setValue("Output");
|
|
24
24
|
box.icon.setValue(IconSymbol.toName(IconSymbol.SpeakerHeadphone));
|
|
25
|
-
box.color.setValue(
|
|
25
|
+
box.color.setValue(Colors.blue.toString());
|
|
26
26
|
});
|
|
27
27
|
const primaryAudioOutputUnit = AudioUnitBox.create(boxGraph, UUID.generate(), box => {
|
|
28
28
|
box.type.setValue(AudioUnitType.Output);
|
|
@@ -40,6 +40,7 @@ export var ProjectSkeleton;
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
const timelineBox = TimelineBox.create(boxGraph, UUID.generate());
|
|
43
|
+
ValueEventCollectionBox.create(boxGraph, UUID.generate(), box => timelineBox.tempoTrack.events.refer(box.owners));
|
|
43
44
|
rootBox.timeline.refer(timelineBox.root);
|
|
44
45
|
primaryAudioBus.output.refer(primaryAudioOutputUnit.input);
|
|
45
46
|
const userInterfaceBoxes = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectUtils.d.ts","sourceRoot":"","sources":["../../src/project/ProjectUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAcrC,OAAO,EAEH,YAAY,EASf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,YAAY,CAAC;IASnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,4DAAwD,eAAe,EACvE,UAAS;QACL,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KACxB,KAClC,aAAa,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"ProjectUtils.d.ts","sourceRoot":"","sources":["../../src/project/ProjectUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAcrC,OAAO,EAEH,YAAY,EASf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,YAAY,CAAC;IASnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,4DAAwD,eAAe,EACvE,UAAS;QACL,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KACxB,KAClC,aAAa,CAAC,YAAY,CA6B/B,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,4DAAwD,eAAe,EACvE,iBAAgB,IAAU,KAAG,IA8C3D,CAAA;CAoGJ"}
|
|
@@ -15,18 +15,24 @@ export var ProjectUtils;
|
|
|
15
15
|
// TODO Implement include options.
|
|
16
16
|
assert(!options.includeAux && !options.includeBus, "Options are not yet implemented");
|
|
17
17
|
const excludeBox = options?.excludeTimeline === true ? excludeTimelinePredicate : Predicates.alwaysFalse;
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
18
|
+
// Get dependencies using outgoing pointers only (no mandatory incoming following)
|
|
19
|
+
// This avoids pulling in boxes from previous copies that point to shared AudioFileBox
|
|
20
|
+
const baseDeps = audioUnitBoxes
|
|
21
|
+
.flatMap(box => Array.from(box.graph.dependenciesOf(box, { alwaysFollowMandatory: false, excludeBox }).boxes));
|
|
22
|
+
// Explicitly add instruments (they have mandatory incoming pointer to AudioUnitBox.input)
|
|
23
|
+
const instruments = audioUnitBoxes
|
|
24
|
+
.flatMap(audioUnitBox => audioUnitBox.input.pointerHub.incoming().map(({ box }) => box));
|
|
25
|
+
// Deduplicate by UUID
|
|
26
|
+
const seen = UUID.newSet(uuid => uuid);
|
|
27
|
+
const dependencies = [...baseDeps, ...instruments]
|
|
28
28
|
.filter(box => box.name !== SelectionBox.ClassName && box.name !== AuxSendBox.ClassName)
|
|
29
|
-
.filter(box =>
|
|
29
|
+
.filter(box => {
|
|
30
|
+
if (seen.opt(box.address.uuid).nonEmpty()) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
seen.add(box.address.uuid);
|
|
34
|
+
return true;
|
|
35
|
+
});
|
|
30
36
|
const uuidMap = generateTransferMap(audioUnitBoxes, dependencies, rootBox.audioUnits.address.uuid, primaryAudioBus.address.uuid);
|
|
31
37
|
copy(uuidMap, boxGraph, audioUnitBoxes, dependencies);
|
|
32
38
|
reorderAudioUnits(uuidMap, audioUnitBoxes, rootBox);
|
|
@@ -113,12 +119,10 @@ export var ProjectUtils;
|
|
|
113
119
|
dependencies.forEach((source) => {
|
|
114
120
|
if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
|
|
115
121
|
if (boxGraph.findBox(source.address.uuid).nonEmpty()) {
|
|
116
|
-
console.debug(`Skipping existing file box: ${source.name} ${UUID.toString(source.address.uuid)}`);
|
|
117
122
|
existingFileBoxUUIDs.add(source.address.uuid);
|
|
118
123
|
}
|
|
119
124
|
}
|
|
120
125
|
});
|
|
121
|
-
console.debug(`Dependencies to copy: ${dependencies.length}, existing file boxes: ${existingFileBoxUUIDs.size}`);
|
|
122
126
|
PointerField.decodeWith({
|
|
123
127
|
map: (_pointer, newAddress) => newAddress.map(address => uuidMap.opt(address.uuid).match({
|
|
124
128
|
none: () => address,
|
|
@@ -137,7 +141,6 @@ export var ProjectUtils;
|
|
|
137
141
|
if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
|
|
138
142
|
// Those boxes keep their UUID. So if they are already in the graph, skip them.
|
|
139
143
|
if (existingFileBoxUUIDs.opt(source.address.uuid).nonEmpty()) {
|
|
140
|
-
console.debug(` Skipping file box: ${source.name}`);
|
|
141
144
|
return;
|
|
142
145
|
}
|
|
143
146
|
}
|
|
@@ -145,14 +148,12 @@ export var ProjectUtils;
|
|
|
145
148
|
if (source instanceof TransientMarkerBox) {
|
|
146
149
|
const ownerUUID = source.owner.targetAddress.unwrap().uuid;
|
|
147
150
|
if (existingFileBoxUUIDs.opt(ownerUUID).nonEmpty()) {
|
|
148
|
-
console.debug(` Skipping TransientMarkerBox (owner exists)`);
|
|
149
151
|
return;
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
154
|
const input = new ByteArrayInput(source.toArrayBuffer());
|
|
153
155
|
const key = source.name;
|
|
154
156
|
const uuid = uuidMap.get(source.address.uuid).target;
|
|
155
|
-
console.debug(` Creating: ${key} ${UUID.toString(uuid)}`);
|
|
156
157
|
boxGraph.createBox(key, uuid, box => box.read(input));
|
|
157
158
|
});
|
|
158
159
|
});
|
package/dist/protocols.d.ts
CHANGED
|
@@ -9,9 +9,6 @@ export interface EngineCommands extends Terminable {
|
|
|
9
9
|
setPosition(position: ppqn): void;
|
|
10
10
|
prepareRecordingState(countIn: boolean): void;
|
|
11
11
|
stopRecording(): void;
|
|
12
|
-
setMetronomeEnabled(enabled: boolean): void;
|
|
13
|
-
setPlaybackTimestampEnabled(enabled: boolean): void;
|
|
14
|
-
setCountInBarsTotal(value: int): void;
|
|
15
12
|
queryLoadingComplete(): Promise<boolean>;
|
|
16
13
|
panic(): void;
|
|
17
14
|
noteSignal(signal: NoteSignal): void;
|
package/dist/protocols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,
|
|
1
|
+
{"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../src/protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,IAAI,IAAI,CAAA;IAEb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAExC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAChE;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrD,yBAAyB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC/D,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;IAC3D,KAAK,IAAI,IAAI,CAAA;CAChB"}
|
package/dist/sample/Sample.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ export declare const Sample: z.ZodObject<{
|
|
|
5
5
|
duration: z.ZodNumber;
|
|
6
6
|
sample_rate: z.ZodNumber;
|
|
7
7
|
origin: z.ZodEnum<{
|
|
8
|
-
openDAW: "openDAW";
|
|
9
8
|
recording: "recording";
|
|
9
|
+
openDAW: "openDAW";
|
|
10
10
|
import: "import";
|
|
11
11
|
}>;
|
|
12
|
-
uuid: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string
|
|
12
|
+
uuid: z.ZodPipe<z.ZodString & z.ZodType<`${string}-${string}-${string}-${string}-${string}`, string, z.core.$ZodTypeInternals<`${string}-${string}-${string}-${string}-${string}`, string>>, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, `${string}-${string}-${string}-${string}-${string}`>>;
|
|
13
13
|
}, z.core.$strip>;
|
|
14
14
|
export type Sample = z.infer<typeof Sample>;
|
|
15
15
|
//# sourceMappingURL=Sample.d.ts.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { UUID } from "@opendaw/lib-std";
|
|
1
|
+
import { Terminable, UUID } from "@opendaw/lib-std";
|
|
2
2
|
import { SampleLoader } from "./SampleLoader";
|
|
3
3
|
export interface SampleLoaderManager {
|
|
4
4
|
getOrCreate(uuid: UUID.Bytes): SampleLoader;
|
|
5
5
|
record(loader: SampleLoader): void;
|
|
6
6
|
invalidate(uuid: UUID.Bytes): void;
|
|
7
7
|
remove(uuid: UUID.Bytes): void;
|
|
8
|
+
register(uuid: UUID.Bytes): Terminable;
|
|
8
9
|
}
|
|
9
10
|
//# sourceMappingURL=SampleLoaderManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SampleLoaderManager.d.ts","sourceRoot":"","sources":["../../src/sample/SampleLoaderManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"SampleLoaderManager.d.ts","sourceRoot":"","sources":["../../src/sample/SampleLoaderManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,MAAM,WAAW,mBAAmB;IAChC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;IAC3C,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAClC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;CACzC"}
|
|
@@ -23,7 +23,7 @@ export class FilteredSelection {
|
|
|
23
23
|
__classPrivateFieldSet(this, _FilteredSelection_selection, selection, "f");
|
|
24
24
|
__classPrivateFieldSet(this, _FilteredSelection_filter, filter, "f");
|
|
25
25
|
__classPrivateFieldSet(this, _FilteredSelection_mapping, mapping, "f");
|
|
26
|
-
__classPrivateFieldSet(this, _FilteredSelection_set, Address.newSet(
|
|
26
|
+
__classPrivateFieldSet(this, _FilteredSelection_set, Address.newSet(({ address }) => address), "f");
|
|
27
27
|
__classPrivateFieldSet(this, _FilteredSelection_listeners, new Listeners(), "f");
|
|
28
28
|
__classPrivateFieldGet(this, _FilteredSelection_selection, "f").selected()
|
|
29
29
|
.filter(element => __classPrivateFieldGet(this, _FilteredSelection_filter, "f").call(this, element))
|
|
@@ -37,7 +37,7 @@ export class FilteredSelection {
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
onDeselected: (element) => {
|
|
40
|
-
if (__classPrivateFieldGet(this,
|
|
40
|
+
if (__classPrivateFieldGet(this, _FilteredSelection_set, "f").hasKey(element.address)) {
|
|
41
41
|
__classPrivateFieldGet(this, _FilteredSelection_listeners, "f").proxy.onDeselected(__classPrivateFieldGet(this, _FilteredSelection_set, "f").removeByKey(element.address));
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VertexSelection.d.ts","sourceRoot":"","sources":["../../src/selection/VertexSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,SAAS,EACT,GAAG,EAGH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS,CAAC,gBAAgB,CAAC;;IAQnD,QAAQ,CAAC,OAAO,EAAE,UAAU;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAAhD,OAAO,EAAE,UAAU,EAAW,QAAQ,EAAE,QAAQ;IAOrE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ/C,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"VertexSelection.d.ts","sourceRoot":"","sources":["../../src/selection/VertexSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,SAAS,EACT,GAAG,EAGH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS,CAAC,gBAAgB,CAAC;;IAQnD,QAAQ,CAAC,OAAO,EAAE,UAAU;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAAhD,OAAO,EAAE,UAAU,EAAW,QAAQ,EAAE,QAAQ;IAOrE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ/C,OAAO,IAAI,IAAI;IASf,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIzG,MAAM,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAmB7D,QAAQ,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAU/D,WAAW,IAAI,IAAI;IAInB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC;IAQhF,OAAO,IAAI,OAAO;IAClB,QAAQ,IAAI,OAAO;IAEnB,KAAK,IAAI,GAAG;IAEZ,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAEjD,QAAQ,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAE3C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAEtE,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;CA4BnF"}
|
|
@@ -51,7 +51,6 @@ export class VertexSelection {
|
|
|
51
51
|
__classPrivateFieldGet(this, _VertexSelection_selectableMap, "f").clear();
|
|
52
52
|
__classPrivateFieldGet(this, _VertexSelection_entityMap, "f").clear();
|
|
53
53
|
}
|
|
54
|
-
// TODO Make selection local
|
|
55
54
|
createFilteredSelection(affiliate, map) {
|
|
56
55
|
return new FilteredSelection(this, affiliate, map);
|
|
57
56
|
}
|
|
@@ -8,7 +8,7 @@ export declare const Soundfont: z.ZodObject<{
|
|
|
8
8
|
openDAW: "openDAW";
|
|
9
9
|
import: "import";
|
|
10
10
|
}>;
|
|
11
|
-
uuid: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string
|
|
11
|
+
uuid: z.ZodPipe<z.ZodString & z.ZodType<`${string}-${string}-${string}-${string}-${string}`, string, z.core.$ZodTypeInternals<`${string}-${string}-${string}-${string}-${string}`, string>>, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, `${string}-${string}-${string}-${string}-${string}`>>;
|
|
12
12
|
}, z.core.$strip>;
|
|
13
13
|
export type Soundfont = z.infer<typeof Soundfont>;
|
|
14
14
|
//# sourceMappingURL=Soundfont.d.ts.map
|
|
@@ -27,6 +27,10 @@ export interface RegionBoxAdapter<CONTENT> extends BoxAdapter, Region, Selectabl
|
|
|
27
27
|
get trackBoxAdapter(): Option<TrackBoxAdapter>;
|
|
28
28
|
get hasCollection(): boolean;
|
|
29
29
|
get optCollection(): Option<CONTENT>;
|
|
30
|
+
/** Resolve duration at a given position (for preview during drag operations) */
|
|
31
|
+
resolveDuration(position: ppqn): ppqn;
|
|
32
|
+
/** Resolve complete (position + duration) at a given position (for preview during drag operations) */
|
|
33
|
+
resolveComplete(position: ppqn): ppqn;
|
|
30
34
|
subscribeChange(observer: Observer<void>): Subscription;
|
|
31
35
|
copyTo(target?: {
|
|
32
36
|
track?: Field<Pointers.RegionCollection>;
|
|
@@ -41,6 +45,10 @@ export interface LoopableRegionBoxAdapter<CONTENT> extends RegionBoxAdapter<CONT
|
|
|
41
45
|
get offset(): ppqn;
|
|
42
46
|
get loopOffset(): ppqn;
|
|
43
47
|
get loopDuration(): ppqn;
|
|
48
|
+
/** Resolve loopOffset at a given position (for preview during drag operations) */
|
|
49
|
+
resolveLoopOffset(position: ppqn): ppqn;
|
|
50
|
+
/** Resolve loopDuration at a given position (for preview during drag operations) */
|
|
51
|
+
resolveLoopDuration(position: ppqn): ppqn;
|
|
44
52
|
}
|
|
45
53
|
export declare const RegionComparator: Comparator<AnyRegionBoxAdapter>;
|
|
46
54
|
export declare const RegionAdapters: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAY,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAE9G,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAE1C,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACtC,yBAAyB,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,CAAC,CAAA;IAC5D,0BAA0B,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAA;IAC9D,0BAA0B,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,CAAE,SAAQ,UAAU,EAAE,MAAM,EAAE,UAAU;IAC7E,IAAI,GAAG,IAAI,YAAY,CAAA;IACvB,IAAI,UAAU,IAAI,OAAO,CAAA;IACzB,IAAI,GAAG,IAAI,GAAG,CAAA;IACd,IAAI,IAAI,IAAI,OAAO,CAAA;IACnB,IAAI,KAAK,IAAI,MAAM,CAAA;IACnB,IAAI,UAAU,IAAI,OAAO,CAAA;IACzB,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;IAC9C,IAAI,aAAa,IAAI,OAAO,CAAA;IAC5B,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IACvD,MAAM,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,mBAAmB,CAAA;IACnG,WAAW,IAAI,IAAI,CAAA;IACnB,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAA;IAChE,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAA;IACtE,MAAM,CAAC,OAAO,SAAS,uBAAuB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAC/D,OAAO,SAAS,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAC3E;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,CAAE,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc;IAChG,IAAI,MAAM,IAAI,IAAI,CAAA;IAClB,IAAI,UAAU,IAAI,IAAI,CAAA;IACtB,IAAI,YAAY,IAAI,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"RegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionBoxAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionEditing.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionEditing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,mBAAmB,EAAoB,MAAM,sBAAsB,CAAA;AAE3E,yBAAiB,aAAa,CAAC;IACpB,MAAM,GAAG,GAAI,QAAQ,mBAAmB,EAAE,KAAK,IAAI,EAAE,aAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"RegionEditing.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionEditing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,mBAAmB,EAAoB,MAAM,sBAAsB,CAAA;AAE3E,yBAAiB,aAAa,CAAC;IACpB,MAAM,GAAG,GAAI,QAAQ,mBAAmB,EAAE,KAAK,IAAI,EAAE,aAAa,OAAO,KAAG,IAclF,CAAA;IAEM,MAAM,IAAI,GAAI,QAAQ,mBAAmB,EAAE,OAAO,IAAI,EAAE,KAAK,IAAI,KAAG,IAa1E,CAAA;CACJ"}
|
|
@@ -3,7 +3,6 @@ import { UnionAdapterTypes } from "../UnionAdapterTypes";
|
|
|
3
3
|
export var RegionEditing;
|
|
4
4
|
(function (RegionEditing) {
|
|
5
5
|
RegionEditing.cut = (region, cut, consolidate) => {
|
|
6
|
-
console.debug("cut", region.position, region.complete, cut);
|
|
7
6
|
if (region.position >= cut || cut >= region.complete) {
|
|
8
7
|
return;
|
|
9
8
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Comparator, int, Option, UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { Address, Int32Field } from "@opendaw/lib-box";
|
|
3
|
+
import { SignatureEventBox } from "@opendaw/studio-boxes";
|
|
4
|
+
import { BoxAdaptersContext } from "../BoxAdaptersContext";
|
|
5
|
+
import { SignatureTrackAdapter } from "./SignatureTrackAdapter";
|
|
6
|
+
import { IndexedBoxAdapter } from "../IndexedBoxAdapterCollection";
|
|
7
|
+
export declare class SignatureEventBoxAdapter implements IndexedBoxAdapter {
|
|
8
|
+
#private;
|
|
9
|
+
static readonly Comparator: Comparator<SignatureEventBoxAdapter>;
|
|
10
|
+
readonly type = "signature-event";
|
|
11
|
+
constructor(context: BoxAdaptersContext, box: SignatureEventBox);
|
|
12
|
+
get box(): SignatureEventBox;
|
|
13
|
+
get uuid(): UUID.Bytes;
|
|
14
|
+
get address(): Address;
|
|
15
|
+
get index(): int;
|
|
16
|
+
get indexField(): Int32Field;
|
|
17
|
+
get relativePosition(): int;
|
|
18
|
+
get nominator(): int;
|
|
19
|
+
get denominator(): int;
|
|
20
|
+
get trackAdapter(): Option<SignatureTrackAdapter>;
|
|
21
|
+
terminate(): void;
|
|
22
|
+
toString(): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SignatureEventBoxAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureEventBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/SignatureEventBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAc,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,OAAO,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAA;AAEhE,qBAAa,wBAAyB,YAAW,iBAAiB;;IAC9D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,wBAAwB,CAAC,CAA8B;IAE9F,QAAQ,CAAC,IAAI,qBAAoB;gBAOrB,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAQ/D,IAAI,GAAG,IAAI,iBAAiB,CAAmB;IAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,KAAK,IAAI,GAAG,CAAoC;IACpD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,gBAAgB,IAAI,GAAG,CAA+C;IAC1E,IAAI,SAAS,IAAI,GAAG,CAAwC;IAC5D,IAAI,WAAW,IAAI,GAAG,CAA0C;IAChE,IAAI,YAAY,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAGhD;IAED,SAAS;IACT,QAAQ,IAAI,MAAM;CACrB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 _SignatureEventBoxAdapter_terminator, _SignatureEventBoxAdapter_context, _SignatureEventBoxAdapter_box;
|
|
13
|
+
import { Terminator } from "@opendaw/lib-std";
|
|
14
|
+
import { Propagation } from "@opendaw/lib-box";
|
|
15
|
+
import { TimelineBoxAdapter } from "./TimelineBoxAdapter";
|
|
16
|
+
export class SignatureEventBoxAdapter {
|
|
17
|
+
constructor(context, box) {
|
|
18
|
+
this.type = "signature-event";
|
|
19
|
+
_SignatureEventBoxAdapter_terminator.set(this, new Terminator());
|
|
20
|
+
_SignatureEventBoxAdapter_context.set(this, void 0);
|
|
21
|
+
_SignatureEventBoxAdapter_box.set(this, void 0);
|
|
22
|
+
__classPrivateFieldSet(this, _SignatureEventBoxAdapter_context, context, "f");
|
|
23
|
+
__classPrivateFieldSet(this, _SignatureEventBoxAdapter_box, box, "f");
|
|
24
|
+
__classPrivateFieldGet(this, _SignatureEventBoxAdapter_terminator, "f").own(__classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").subscribe(Propagation.Children, (_update) => this.trackAdapter.ifSome(adapter => adapter.dispatchChange())));
|
|
25
|
+
}
|
|
26
|
+
get box() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f"); }
|
|
27
|
+
get uuid() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").address.uuid; }
|
|
28
|
+
get address() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").address; }
|
|
29
|
+
get index() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").index.getValue(); }
|
|
30
|
+
get indexField() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").index; }
|
|
31
|
+
get relativePosition() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").relativePosition.getValue(); }
|
|
32
|
+
get nominator() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").nominator.getValue(); }
|
|
33
|
+
get denominator() { return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").denominator.getValue(); }
|
|
34
|
+
get trackAdapter() {
|
|
35
|
+
return __classPrivateFieldGet(this, _SignatureEventBoxAdapter_box, "f").events.targetVertex
|
|
36
|
+
.map(vertex => __classPrivateFieldGet(this, _SignatureEventBoxAdapter_context, "f").boxAdapters.adapterFor(vertex.box, TimelineBoxAdapter).signatureTrack);
|
|
37
|
+
}
|
|
38
|
+
terminate() { __classPrivateFieldGet(this, _SignatureEventBoxAdapter_terminator, "f").terminate(); }
|
|
39
|
+
toString() { return `{SignatureEventBoxAdapter ${this.nominator}/${this.denominator}}`; }
|
|
40
|
+
}
|
|
41
|
+
_SignatureEventBoxAdapter_terminator = new WeakMap(), _SignatureEventBoxAdapter_context = new WeakMap(), _SignatureEventBoxAdapter_box = new WeakMap();
|
|
42
|
+
SignatureEventBoxAdapter.Comparator = (a, b) => a.index - b.index;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { int, Notifier, Observer, Option, Subscription, Terminable } from "@opendaw/lib-std";
|
|
2
|
+
import { BoxAdaptersContext } from "../BoxAdaptersContext";
|
|
3
|
+
import { ppqn } from "@opendaw/lib-dsp";
|
|
4
|
+
import { SignatureEventBoxAdapter } from "./SignatureEventBoxAdapter";
|
|
5
|
+
import { Signature, SignatureTrack, TimelineBox } from "@opendaw/studio-boxes";
|
|
6
|
+
export type SignatureEvent = Readonly<{
|
|
7
|
+
index: int;
|
|
8
|
+
accumulatedPpqn: ppqn;
|
|
9
|
+
accumulatedBars: int;
|
|
10
|
+
nominator: int;
|
|
11
|
+
denominator: int;
|
|
12
|
+
}>;
|
|
13
|
+
export declare class SignatureTrackAdapter implements Terminable {
|
|
14
|
+
#private;
|
|
15
|
+
readonly changeNotifier: Notifier<void>;
|
|
16
|
+
constructor(context: BoxAdaptersContext, signature: Signature, signatureTrack: SignatureTrack);
|
|
17
|
+
subscribe(observer: Observer<void>): Subscription;
|
|
18
|
+
get context(): BoxAdaptersContext;
|
|
19
|
+
get enabled(): boolean;
|
|
20
|
+
get object(): TimelineBox["signatureTrack"];
|
|
21
|
+
get size(): int;
|
|
22
|
+
get storageSignature(): Readonly<[int, int]>;
|
|
23
|
+
nonEmpty(): boolean;
|
|
24
|
+
dispatchChange(): void;
|
|
25
|
+
signatureAt(position: ppqn): Readonly<[int, int]>;
|
|
26
|
+
iterateAll(): IterableIterator<SignatureEvent>;
|
|
27
|
+
changeSignature(nominator: int, denominator: int): void;
|
|
28
|
+
deleteAdapter(adapter: SignatureEventBoxAdapter): void;
|
|
29
|
+
createEvent(position: ppqn, nominator: int, denominator: int): void;
|
|
30
|
+
adapterAt(index: int): Option<SignatureEventBoxAdapter>;
|
|
31
|
+
moveEvent(adapter: SignatureEventBoxAdapter, targetPpqn: ppqn): void;
|
|
32
|
+
floorToBar(position: ppqn): ppqn;
|
|
33
|
+
ceilToBar(position: ppqn): ppqn;
|
|
34
|
+
roundToBar(position: ppqn): ppqn;
|
|
35
|
+
barLengthAt(position: ppqn): ppqn;
|
|
36
|
+
getBarInterval(position: ppqn): {
|
|
37
|
+
position: ppqn;
|
|
38
|
+
complete: ppqn;
|
|
39
|
+
};
|
|
40
|
+
terminate(): void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=SignatureTrackAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureTrackAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/SignatureTrackAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EAEH,QAAQ,EAER,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,UAAU,EAGb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,IAAI,EAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAC,SAAS,EAAqB,cAAc,EAAE,WAAW,EAAC,MAAM,uBAAuB,CAAA;AAI/F,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC;IACX,eAAe,EAAE,IAAI,CAAC;IACtB,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,GAAG,CAAA;CACnB,CAAC,CAAA;AAEF,qBAAa,qBAAsB,YAAW,UAAU;;IAOpD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAG3B,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc;IAoB7F,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAEjD,IAAI,OAAO,IAAI,kBAAkB,CAAuB;IACxD,IAAI,OAAO,IAAI,OAAO,CAAiD;IACvE,IAAI,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAA8B;IACzE,IAAI,IAAI,IAAI,GAAG,CAA+B;IAC9C,IAAI,gBAAgB,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAG3C;IAED,QAAQ,IAAI,OAAO;IAEnB,cAAc,IAAI,IAAI;IAEtB,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAU/C,UAAU,IAAI,gBAAgB,CAAC,cAAc,CAAC;IAehD,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IA8BvD,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IA+BtD,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI;IAqCnE,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAEvD,SAAS,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI;IAkEpE,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAMhC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAM/B,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAMhC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAKjC,cAAc,CAAC,QAAQ,EAAE,IAAI,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;IAOlE,SAAS,IAAI,IAAI;CACpB"}
|