@opendaw/studio-core 0.0.44 → 0.0.46
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/AudioOfflineRenderer.d.ts +1 -2
- package/dist/AudioOfflineRenderer.d.ts.map +1 -1
- package/dist/AudioOfflineRenderer.js +10 -3
- package/dist/EffectBox.d.ts +2 -2
- package/dist/EffectBox.d.ts.map +1 -1
- package/dist/EffectFactories.d.ts +9 -0
- package/dist/EffectFactories.d.ts.map +1 -1
- package/dist/EffectFactories.js +41 -24
- package/dist/EffectFactory.d.ts +1 -1
- package/dist/EffectFactory.d.ts.map +1 -1
- package/dist/EffectParameterDefaults.d.ts +5 -0
- package/dist/EffectParameterDefaults.d.ts.map +1 -0
- package/dist/EffectParameterDefaults.js +27 -0
- package/dist/Engine.d.ts +1 -1
- package/dist/Engine.d.ts.map +1 -1
- package/dist/EngineFacade.d.ts +1 -1
- package/dist/EngineFacade.d.ts.map +1 -1
- package/dist/EngineFacade.js +1 -1
- package/dist/EngineWorklet.d.ts +1 -1
- package/dist/EngineWorklet.d.ts.map +1 -1
- package/dist/EngineWorklet.js +3 -2
- package/dist/Preferences.d.ts +20 -0
- package/dist/Preferences.d.ts.map +1 -0
- package/dist/Preferences.js +46 -0
- package/dist/capture/CaptureDevices.d.ts +1 -1
- package/dist/capture/CaptureDevices.d.ts.map +1 -1
- package/dist/capture/CaptureDevices.js +22 -11
- package/dist/capture/CaptureMidi.js +1 -1
- package/dist/capture/RecordTrack.d.ts +2 -2
- package/dist/capture/RecordTrack.d.ts.map +1 -1
- package/dist/capture/Recording.d.ts +1 -1
- package/dist/capture/Recording.d.ts.map +1 -1
- package/dist/capture/Recording.js +1 -1
- package/dist/dawproject/BuiltinDevices.d.ts.map +1 -1
- package/dist/dawproject/BuiltinDevices.js +3 -2
- package/dist/dawproject/{DawProjectImport.d.ts → DawProjectImporter.d.ts} +1 -1
- package/dist/dawproject/DawProjectImporter.d.ts.map +1 -0
- package/dist/dawproject/{DawProjectImport.js → DawProjectImporter.js} +17 -5
- package/dist/dawproject/DawProjectImporter.test.d.ts +2 -0
- package/dist/dawproject/DawProjectImporter.test.d.ts.map +1 -0
- package/dist/dawproject/{DawProjectImport.test.js → DawProjectImporter.test.js} +1 -1
- package/dist/dawproject/DawProjectService.js +1 -1
- package/dist/dawproject/index.d.ts +1 -1
- package/dist/dawproject/index.d.ts.map +1 -1
- package/dist/dawproject/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/midi/MIDILearning.d.ts +1 -1
- package/dist/midi/MIDILearning.d.ts.map +1 -1
- package/dist/midi/MIDILearning.js +22 -3
- package/dist/processors.js +7 -7
- package/dist/processors.js.map +4 -4
- package/dist/project/Project.d.ts +12 -7
- package/dist/project/Project.d.ts.map +1 -1
- package/dist/project/Project.js +60 -33
- package/dist/project/ProjectMigration.d.ts.map +1 -1
- package/dist/project/ProjectMigration.js +10 -1
- package/dist/project/Recovery.d.ts +9 -0
- package/dist/project/Recovery.d.ts.map +1 -0
- package/dist/project/Recovery.js +49 -0
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.d.ts.map +1 -1
- package/dist/project/index.js +1 -0
- package/dist/workers-main.js +2 -2
- package/dist/workers-main.js.map +4 -4
- package/dist/ysync/YService.d.ts.map +1 -1
- package/dist/ysync/YService.js +19 -8
- package/dist/ysync/YSync.d.ts +4 -4
- package/dist/ysync/YSync.d.ts.map +1 -1
- package/dist/ysync/YSync.js +29 -26
- package/package.json +49 -49
- package/dist/dawproject/DawProjectImport.d.ts.map +0 -1
- package/dist/dawproject/DawProjectImport.test.d.ts +0 -2
- package/dist/dawproject/DawProjectImport.test.d.ts.map +0 -1
|
@@ -251,7 +251,7 @@ export var DawProjectImport;
|
|
|
251
251
|
}
|
|
252
252
|
else if (isInstanceOf(timeline, PointsSchema)) {
|
|
253
253
|
// TODO How to get the actual parameter?
|
|
254
|
-
console.debug(timeline.target?.parameter)
|
|
254
|
+
// console.debug(timeline.target?.parameter)
|
|
255
255
|
}
|
|
256
256
|
}) ?? []);
|
|
257
257
|
};
|
|
@@ -340,7 +340,13 @@ export var DawProjectImport;
|
|
|
340
340
|
.map(readLane) ?? []);
|
|
341
341
|
};
|
|
342
342
|
await ifDefined(schema.arrangement, arrangement => readArrangement(arrangement));
|
|
343
|
-
outputPointers.forEach(({ target, pointer }) =>
|
|
343
|
+
outputPointers.forEach(({ target, pointer }) => {
|
|
344
|
+
const value = audioBusses.get(target);
|
|
345
|
+
// https://github.com/andremichelle/openDAW/issues/25
|
|
346
|
+
if (isDefined(value)) {
|
|
347
|
+
pointer.refer(value.input);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
344
350
|
rootBox.audioUnits.pointerHub.incoming().forEach(({ box }) => {
|
|
345
351
|
const audioUnitBox = asInstanceOf(box, AudioUnitBox);
|
|
346
352
|
if (audioUnitBox.type.getValue() !== AudioUnitType.Output
|
|
@@ -369,12 +375,18 @@ export var DawProjectImport;
|
|
|
369
375
|
}
|
|
370
376
|
boxGraph.endTransaction();
|
|
371
377
|
boxGraph.verifyPointers();
|
|
372
|
-
const { audioBusBox:
|
|
378
|
+
const { audioBusBox: primaryAudioBus, audioUnitBox: primaryAudioOutputUnit } = primaryAudioBusUnitOption.unwrap("Did not find a primary output");
|
|
373
379
|
return {
|
|
374
380
|
audioIds: audioIdSet.values(),
|
|
375
381
|
skeleton: {
|
|
376
382
|
boxGraph,
|
|
377
|
-
mandatoryBoxes: {
|
|
383
|
+
mandatoryBoxes: {
|
|
384
|
+
rootBox,
|
|
385
|
+
timelineBox,
|
|
386
|
+
primaryAudioBus,
|
|
387
|
+
primaryAudioOutputUnit,
|
|
388
|
+
userInterfaceBoxes: [userInterfaceBox]
|
|
389
|
+
}
|
|
378
390
|
}
|
|
379
391
|
};
|
|
380
392
|
};
|
|
@@ -386,7 +398,7 @@ export var DawProjectImport;
|
|
|
386
398
|
visitTapeDeviceBox: () => TrackType.Audio,
|
|
387
399
|
visitNanoDeviceBox: () => TrackType.Notes,
|
|
388
400
|
visitPlayfieldDeviceBox: () => TrackType.Notes,
|
|
389
|
-
visitVaporisateurDeviceBox: () => TrackType.Notes
|
|
401
|
+
visitVaporisateurDeviceBox: () => TrackType.Notes,
|
|
390
402
|
}) ?? TrackType.Undefined;
|
|
391
403
|
};
|
|
392
404
|
})(DawProjectImport || (DawProjectImport = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DawProjectImporter.test.d.ts","sourceRoot":"","sources":["../../src/dawproject/DawProjectImporter.test.ts"],"names":[],"mappings":""}
|
|
@@ -3,7 +3,7 @@ import { fileURLToPath } from "url";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import { DawProject } from "./DawProject";
|
|
6
|
-
import { DawProjectImport } from "./
|
|
6
|
+
import { DawProjectImport } from "./DawProjectImporter";
|
|
7
7
|
describe("DawProjectImport", () => {
|
|
8
8
|
it("import", async () => {
|
|
9
9
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -5,7 +5,7 @@ import { Xml } from "@opendaw/lib-xml";
|
|
|
5
5
|
import { MetaDataSchema } from "@opendaw/lib-dawproject";
|
|
6
6
|
import { DawProject } from "./DawProject";
|
|
7
7
|
import { FilePickerAcceptTypes } from "../FilePickerAcceptTypes";
|
|
8
|
-
import { DawProjectImport } from "./
|
|
8
|
+
import { DawProjectImport } from "./DawProjectImporter";
|
|
9
9
|
export class DawProjectService {
|
|
10
10
|
sampleService;
|
|
11
11
|
constructor(sampleService) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dawproject/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dawproject/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA"}
|
package/dist/dawproject/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export * from "./InstrumentProduct";
|
|
|
29
29
|
export * from "./MeterWorklet";
|
|
30
30
|
export * from "./Mixer";
|
|
31
31
|
export * from "./PeaksWriter";
|
|
32
|
+
export * from "./Preferences";
|
|
32
33
|
export * from "./RenderQuantum";
|
|
33
34
|
export * from "./WavFile";
|
|
34
35
|
export * from "./Workers";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AAEvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AAEvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ export * from "./InstrumentProduct";
|
|
|
29
29
|
export * from "./MeterWorklet";
|
|
30
30
|
export * from "./Mixer";
|
|
31
31
|
export * from "./PeaksWriter";
|
|
32
|
+
export * from "./Preferences";
|
|
32
33
|
export * from "./RenderQuantum";
|
|
33
34
|
export * from "./WavFile";
|
|
34
35
|
export * from "./Workers";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { byte, JSONValue, Provider, Terminable } from "@opendaw/lib-std";
|
|
2
2
|
import { Address, AddressJSON, PrimitiveField, PrimitiveValues } from "@opendaw/lib-box";
|
|
3
3
|
import { Pointers } from "@opendaw/studio-enums";
|
|
4
|
-
import { Project } from "../project
|
|
4
|
+
import { Project } from "../project";
|
|
5
5
|
export type MIDIConnectionJSON = ({
|
|
6
6
|
type: "control";
|
|
7
7
|
controlId: byte;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MIDILearning.d.ts","sourceRoot":"","sources":["../../src/midi/MIDILearning.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,IAAI,
|
|
1
|
+
{"version":3,"file":"MIDILearning.d.ts","sourceRoot":"","sources":["../../src/midi/MIDILearning.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,IAAI,EAIJ,SAAS,EAGT,QAAQ,EAGR,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AAEtF,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAIlC,MAAM,MAAM,kBAAkB,GAAG,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,CAAC,GACjE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GACvC,SAAS,CAAA;AAEf,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvB,MAAM,IAAI,kBAAkB,CAAA;CAC/B;AAID,qBAAa,YAAa,YAAW,UAAU;;gBAM/B,OAAO,EAAE,OAAO;IAK5B,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAC5C,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAE/B,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC;IAsB/F,MAAM,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAI3C,SAAS,IAAI,IAAI;CAiEpB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Errors, isDefined, RuntimeNotifier, Terminator } from "@opendaw/lib-std";
|
|
1
|
+
import { Errors, isDefined, isNotNull, RuntimeNotifier, Terminator } from "@opendaw/lib-std";
|
|
2
2
|
import { Address } from "@opendaw/lib-box";
|
|
3
3
|
import { MidiData } from "@opendaw/lib-midi";
|
|
4
4
|
import { MidiDevices } from "./MidiDevices";
|
|
5
|
+
import { AnimationFrame } from "@opendaw/lib-dom";
|
|
5
6
|
export class MIDILearning {
|
|
6
7
|
#terminator = new Terminator();
|
|
7
8
|
#project;
|
|
@@ -72,6 +73,8 @@ export class MIDILearning {
|
|
|
72
73
|
}
|
|
73
74
|
#createMidiControlObserver(project, adapter, controlId) {
|
|
74
75
|
const registration = adapter.registerMidiControl();
|
|
76
|
+
let pendingValue = null;
|
|
77
|
+
const update = (value) => project.editing.modify(() => adapter.setValue(adapter.valueMapping.y(value)), false);
|
|
75
78
|
return {
|
|
76
79
|
observer: (event) => {
|
|
77
80
|
const data = event.data;
|
|
@@ -79,10 +82,26 @@ export class MIDILearning {
|
|
|
79
82
|
return;
|
|
80
83
|
}
|
|
81
84
|
if (MidiData.isController(data) && MidiData.readParam1(data) === controlId) {
|
|
82
|
-
|
|
85
|
+
const value = MidiData.asValue(data);
|
|
86
|
+
if (pendingValue === null) {
|
|
87
|
+
update(value);
|
|
88
|
+
pendingValue = value;
|
|
89
|
+
AnimationFrame.once(() => {
|
|
90
|
+
if (isNotNull(pendingValue)) {
|
|
91
|
+
update(pendingValue);
|
|
92
|
+
pendingValue = null;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
pendingValue = value;
|
|
98
|
+
}
|
|
83
99
|
}
|
|
84
100
|
},
|
|
85
|
-
terminate: () =>
|
|
101
|
+
terminate: () => {
|
|
102
|
+
pendingValue = null;
|
|
103
|
+
registration.terminate();
|
|
104
|
+
}
|
|
86
105
|
};
|
|
87
106
|
}
|
|
88
107
|
}
|