@opendaw/studio-core 0.0.54 → 0.0.55
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/EffectFactories.d.ts.map +1 -1
- package/dist/EffectFactories.js +2 -1
- package/dist/EffectFactory.d.ts +6 -5
- package/dist/EffectFactory.d.ts.map +1 -1
- package/dist/EngineWorklet.js +2 -2
- package/dist/processors.js +6 -6
- package/dist/processors.js.map +3 -3
- package/dist/project/Project.d.ts +2 -4
- package/dist/project/Project.d.ts.map +1 -1
- package/dist/project/Project.js +6 -24
- package/dist/project/ProjectMigration.d.ts.map +1 -1
- package/dist/project/ProjectMigration.js +12 -1
- package/dist/project/ProjectUtils.d.ts.map +1 -1
- package/dist/project/ProjectUtils.js +8 -1
- package/package.json +15 -15
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Func, Procedure, Terminable, TerminableOwner, Terminator, UUID } from "@opendaw/lib-std";
|
|
2
2
|
import { BoxEditing, BoxGraph } from "@opendaw/lib-box";
|
|
3
|
-
import { AudioBusBox, AudioUnitBox, BoxIO,
|
|
3
|
+
import { AudioBusBox, AudioUnitBox, BoxIO, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
|
|
4
4
|
import { BoxAdapters, BoxAdaptersContext, ClipSequencing, ParameterFieldAdapters, ProcessorOptions, ProjectSkeleton, RootBoxAdapter, SampleLoaderManager, SoundfontLoaderManager, TimelineBoxAdapter, UserEditingManager, VertexSelection } from "@opendaw/studio-adapters";
|
|
5
5
|
import { LiveStreamBroadcaster, LiveStreamReceiver } from "@opendaw/lib-fusion";
|
|
6
6
|
import { ProjectEnv } from "./ProjectEnv";
|
|
@@ -59,13 +59,11 @@ export declare class Project implements BoxAdaptersContext, Terminable, Terminab
|
|
|
59
59
|
get liveStreamBroadcaster(): LiveStreamBroadcaster;
|
|
60
60
|
get signatureDuration(): ppqn;
|
|
61
61
|
get skeleton(): ProjectSkeleton;
|
|
62
|
+
receivedMIDIFromEngine(midiDeviceId: string, data: Uint8Array, relativeTimeInMs: number): void;
|
|
62
63
|
collectSampleUUIDs(): ReadonlyArray<UUID.Bytes>;
|
|
63
64
|
toArrayBuffer(): ArrayBufferLike;
|
|
64
65
|
copy(env?: Partial<ProjectEnv>): Project;
|
|
65
66
|
invalid(): boolean;
|
|
66
|
-
connectMIDIOutput(box: MIDIOutputDeviceBox, device: MIDIOutput): void;
|
|
67
|
-
disconnectMIDIOutput(uuid: UUID.Bytes): void;
|
|
68
|
-
receivedMIDIFromEngine(target: UUID.Bytes, data: Uint8Array, relativeTimeInMs: number): void;
|
|
69
67
|
terminate(): void;
|
|
70
68
|
}
|
|
71
69
|
//# sourceMappingURL=Project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/project/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,IAAI,
|
|
1
|
+
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/project/Project.ts"],"names":[],"mappings":"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"}
|
package/dist/project/Project.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Arrays, ByteArrayOutput,
|
|
1
|
+
import { Arrays, ByteArrayOutput, Option, panic, safeExecute, Terminator, UUID } from "@opendaw/lib-std";
|
|
2
2
|
import { BoxEditing, BoxGraph } from "@opendaw/lib-box";
|
|
3
3
|
import { AudioBusBox, AudioUnitBox, BoxIO, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
|
|
4
4
|
import { BoxAdapters, IconSymbol, ParameterFieldAdapters, ProjectDecoder, RootBoxAdapter, TimelineBoxAdapter, UnionBoxTypes, UserEditingManager, VertexSelection } from "@opendaw/studio-adapters";
|
|
@@ -9,7 +9,7 @@ import { ProjectApi } from "./ProjectApi";
|
|
|
9
9
|
import { ProjectMigration } from "./ProjectMigration";
|
|
10
10
|
import { CaptureDevices, Recording } from "../capture";
|
|
11
11
|
import { EngineFacade } from "../EngineFacade";
|
|
12
|
-
import { MIDILearning } from "../midi";
|
|
12
|
+
import { MidiDevices, MIDILearning } from "../midi";
|
|
13
13
|
import { ProjectValidation } from "./ProjectValidation";
|
|
14
14
|
import { Preferences } from "../Preferences";
|
|
15
15
|
import { PPQN } from "@opendaw/lib-dsp";
|
|
@@ -102,7 +102,6 @@ export class Project {
|
|
|
102
102
|
midiLearning;
|
|
103
103
|
mixer;
|
|
104
104
|
engine = new EngineFacade();
|
|
105
|
-
#midiOutputs = UUID.newSet(({ box: { address: { uuid } } }) => uuid);
|
|
106
105
|
constructor(env, boxGraph, { rootBox, userInterfaceBoxes, primaryAudioBus, primaryAudioOutputUnit, timelineBox }) {
|
|
107
106
|
this.#env = env;
|
|
108
107
|
this.boxGraph = boxGraph;
|
|
@@ -186,6 +185,10 @@ export class Project {
|
|
|
186
185
|
}
|
|
187
186
|
};
|
|
188
187
|
}
|
|
188
|
+
receivedMIDIFromEngine(midiDeviceId, data, relativeTimeInMs) {
|
|
189
|
+
MidiDevices.get().ifSome(midiAccess => midiAccess.outputs
|
|
190
|
+
.get(midiDeviceId)?.send(data, performance.now() + relativeTimeInMs));
|
|
191
|
+
}
|
|
189
192
|
collectSampleUUIDs() {
|
|
190
193
|
return this.boxGraph.boxes()
|
|
191
194
|
.filter(box => box.accept({ visitAudioFileBox: (_box) => true }))
|
|
@@ -218,27 +221,6 @@ export class Project {
|
|
|
218
221
|
}
|
|
219
222
|
}) ?? false);
|
|
220
223
|
}
|
|
221
|
-
connectMIDIOutput(box, device) {
|
|
222
|
-
console.debug("connectMIDIOutput", UUID.toString(box.address.uuid), device.name, device.manufacturer);
|
|
223
|
-
this.disconnectMIDIOutput(box.address.uuid);
|
|
224
|
-
this.#midiOutputs.add({
|
|
225
|
-
box, device, subscription: box.host.subscribe(pointer => {
|
|
226
|
-
if (pointer.isEmpty()) {
|
|
227
|
-
this.disconnectMIDIOutput(box.address.uuid);
|
|
228
|
-
}
|
|
229
|
-
})
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
disconnectMIDIOutput(uuid) {
|
|
233
|
-
const entry = this.#midiOutputs.removeByKeyIfExist(uuid);
|
|
234
|
-
if (isDefined(entry)) {
|
|
235
|
-
console.debug("disconnectMIDIOutput", UUID.toString(uuid));
|
|
236
|
-
entry.subscription.terminate();
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
receivedMIDIFromEngine(target, data, relativeTimeInMs) {
|
|
240
|
-
this.#midiOutputs.opt(target).ifSome(({ box, device }) => device.send(data, performance.now() + relativeTimeInMs + box.delay.getValue()));
|
|
241
|
-
}
|
|
242
224
|
terminate() {
|
|
243
225
|
console.debug("Project terminated");
|
|
244
226
|
this.#terminator.terminate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectMigration.d.ts","sourceRoot":"","sources":["../../src/project/ProjectMigration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectMigration.d.ts","sourceRoot":"","sources":["../../src/project/ProjectMigration.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAA;AAKxD,qBAAa,gBAAgB;IACzB,MAAM,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,cAAc,EAAC,EAAE,eAAe,GAAG,IAAI;CAsFpE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CaptureAudioBox, CaptureMidiBox, GrooveShuffleBox, ValueEventCurveBox } from "@opendaw/studio-boxes";
|
|
2
|
-
import { asDefined, asInstanceOf, clamp, UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { asDefined, asInstanceOf, clamp, Float, UUID } from "@opendaw/lib-std";
|
|
3
3
|
import { AudioUnitType } from "@opendaw/studio-enums";
|
|
4
|
+
const isIntEncodedAsFloat = (v) => v > 0 && v < 1e-6 && Number.isFinite(v) && (v / 1.401298464324817e-45) % 1 === 0;
|
|
4
5
|
export class ProjectMigration {
|
|
5
6
|
static migrate({ boxGraph, mandatoryBoxes }) {
|
|
6
7
|
const { rootBox } = mandatoryBoxes;
|
|
@@ -18,6 +19,16 @@ export class ProjectMigration {
|
|
|
18
19
|
}
|
|
19
20
|
// We need to run on a copy, because we might add more boxes during the migration
|
|
20
21
|
boxGraph.boxes().slice().forEach(box => box.accept({
|
|
22
|
+
visitAudioFileBox: (box) => {
|
|
23
|
+
const { startInSeconds, endInSeconds } = box;
|
|
24
|
+
if (isIntEncodedAsFloat(startInSeconds.getValue()) || isIntEncodedAsFloat(endInSeconds.getValue())) {
|
|
25
|
+
console.debug("Migrate 'AudioFileBox' to float");
|
|
26
|
+
boxGraph.beginTransaction();
|
|
27
|
+
startInSeconds.setValue(Float.floatToIntBits(startInSeconds.getValue()));
|
|
28
|
+
endInSeconds.setValue(Float.floatToIntBits(endInSeconds.getValue()));
|
|
29
|
+
boxGraph.endTransaction();
|
|
30
|
+
}
|
|
31
|
+
},
|
|
21
32
|
visitZeitgeistDeviceBox: (box) => {
|
|
22
33
|
if (box.groove.targetAddress.isEmpty()) {
|
|
23
34
|
console.debug("Migrate 'ZeitgeistDeviceBox' to GrooveShuffleBox");
|
|
@@ -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,EAAC,YAAY,EAAgB,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAcjC,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAI9B,yBAAiB,YAAY,CAAC;IAMnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,eAAe,OAAO,EACtB,UAAS;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,KAAG,IAehG,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,eAAe,OAAO,EACtB,iBAAgB,IAAU,KAAG,IAkD3D,CAAA;
|
|
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,EAAC,YAAY,EAAgB,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAcjC,OAAO,EAEH,YAAY,EAOf,MAAM,uBAAuB,CAAA;AAI9B,yBAAiB,YAAY,CAAC;IAMnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,eAAe,OAAO,EACtB,UAAS;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,KAAG,IAehG,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,eAAe,OAAO,EACtB,iBAAgB,IAAU,KAAG,IAkD3D,CAAA;CA6FJ"}
|
|
@@ -37,7 +37,7 @@ export var ProjectUtils;
|
|
|
37
37
|
console.debug(`Found ${audioUnitBoxSet.keyCount()} audioUnits`);
|
|
38
38
|
console.debug(`Found ${trackBoxSet.size} tracks`);
|
|
39
39
|
const audioUnitBoxes = [...audioUnitBoxSet.keys()];
|
|
40
|
-
const { boxGraph, masterBusBox,
|
|
40
|
+
const { boxGraph, masterBusBox, rootBox } = targetProject;
|
|
41
41
|
const excludeBox = box => (isInstanceOf(box, TrackBox) && !trackBoxSet.has(box))
|
|
42
42
|
|| (UnionBoxTypes.isRegionBox(box) && !regionBoxSet.has(box));
|
|
43
43
|
const dependencies = audioUnitBoxes
|
|
@@ -117,6 +117,13 @@ export var ProjectUtils;
|
|
|
117
117
|
const input = new ByteArrayInput(source.toArrayBuffer());
|
|
118
118
|
const key = source.name;
|
|
119
119
|
const uuid = uuidMap.get(source.address.uuid).target;
|
|
120
|
+
if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
|
|
121
|
+
// Those boxes keep their UUID. So if they are already in the graph, we can just read them.
|
|
122
|
+
if (boxGraph.findBox(source.address.uuid).nonEmpty()) {
|
|
123
|
+
source.read(input);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
120
127
|
boxGraph.createBox(key, uuid, box => box.read(input));
|
|
121
128
|
});
|
|
122
129
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendaw/studio-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.55",
|
|
4
4
|
"license": "LGPL-3.0-or-later",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"test": "vitest run --config vitest.config.ts"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@opendaw/lib-box": "^0.0.
|
|
34
|
-
"@opendaw/lib-dawproject": "^0.0.
|
|
35
|
-
"@opendaw/lib-dom": "^0.0.
|
|
36
|
-
"@opendaw/lib-dsp": "^0.0.
|
|
37
|
-
"@opendaw/lib-fusion": "^0.0.
|
|
38
|
-
"@opendaw/lib-runtime": "^0.0.
|
|
39
|
-
"@opendaw/lib-std": "^0.0.
|
|
40
|
-
"@opendaw/studio-adapters": "^0.0.
|
|
41
|
-
"@opendaw/studio-boxes": "^0.0.
|
|
42
|
-
"@opendaw/studio-enums": "^0.0.
|
|
33
|
+
"@opendaw/lib-box": "^0.0.46",
|
|
34
|
+
"@opendaw/lib-dawproject": "^0.0.32",
|
|
35
|
+
"@opendaw/lib-dom": "^0.0.46",
|
|
36
|
+
"@opendaw/lib-dsp": "^0.0.46",
|
|
37
|
+
"@opendaw/lib-fusion": "^0.0.46",
|
|
38
|
+
"@opendaw/lib-runtime": "^0.0.46",
|
|
39
|
+
"@opendaw/lib-std": "^0.0.46",
|
|
40
|
+
"@opendaw/studio-adapters": "^0.0.47",
|
|
41
|
+
"@opendaw/studio-boxes": "^0.0.46",
|
|
42
|
+
"@opendaw/studio-enums": "^0.0.37",
|
|
43
43
|
"dropbox": "^10.34.0",
|
|
44
44
|
"y-websocket": "^1.4.5",
|
|
45
45
|
"yjs": "^13.6.27",
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"@ffmpeg/ffmpeg": "^0.12.15",
|
|
54
54
|
"@ffmpeg/util": "^0.12.2",
|
|
55
55
|
"@opendaw/eslint-config": "^0.0.20",
|
|
56
|
-
"@opendaw/studio-core-processors": "^0.0.
|
|
57
|
-
"@opendaw/studio-core-workers": "^0.0.
|
|
58
|
-
"@opendaw/studio-forge-boxes": "^0.0.
|
|
56
|
+
"@opendaw/studio-core-processors": "^0.0.47",
|
|
57
|
+
"@opendaw/studio-core-workers": "^0.0.42",
|
|
58
|
+
"@opendaw/studio-forge-boxes": "^0.0.46",
|
|
59
59
|
"@opendaw/typescript-config": "^0.0.20"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "4136230de6c35fe8db4bde5221010c5e86f7b11a"
|
|
62
62
|
}
|