@opendaw/studio-core 0.0.44 → 0.0.45
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 +6 -0
- package/dist/EffectFactories.d.ts.map +1 -1
- package/dist/EffectFactories.js +29 -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.js +2 -2
- 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 +12 -12
- package/dist/processors.js.map +4 -4
- package/dist/project/Project.d.ts +10 -6
- package/dist/project/Project.d.ts.map +1 -1
- package/dist/project/Project.js +43 -30
- 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/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
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { int, Option } from "@opendaw/lib-std";
|
|
2
2
|
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
|
3
|
-
import { Project } from "./project
|
|
4
|
-
import { ProjectMeta } from "./project/ProjectMeta";
|
|
3
|
+
import { Project, ProjectMeta } from "./project";
|
|
5
4
|
export declare namespace AudioOfflineRenderer {
|
|
6
5
|
const start: (source: Project, meta: ProjectMeta, optExportConfiguration: Option<ExportStemsConfiguration>, sampleRate?: int) => Promise<void>;
|
|
7
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,MAAM,EAAmC,MAAM,kBAAkB,CAAA;AAI9G,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,MAAM,EAAmC,MAAM,kBAAkB,CAAA;AAI9G,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,WAAW,CAAA;AAI9C,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,KAAK,GAAU,QAAQ,OAAO,EACf,MAAM,WAAW,EACjB,wBAAwB,MAAM,CAAC,wBAAwB,CAAC,EACxD,aAAY,GAAY,KAAG,OAAO,CAAC,IAAI,CAgClE,CAAA;CAwDJ"}
|
|
@@ -76,12 +76,19 @@ export var AudioOfflineRenderer;
|
|
|
76
76
|
});
|
|
77
77
|
zip.file(`${trackNames[stemIndex]}.wav`, file, { binary: true });
|
|
78
78
|
}
|
|
79
|
-
const arrayBuffer = await zip.generateAsync({
|
|
79
|
+
const { status, value: arrayBuffer, error } = await Promises.tryCatch(zip.generateAsync({
|
|
80
80
|
type: "arraybuffer",
|
|
81
81
|
compression: "DEFLATE",
|
|
82
82
|
compressionOptions: { level: 6 }
|
|
83
|
-
});
|
|
83
|
+
}));
|
|
84
84
|
dialog.terminate();
|
|
85
|
+
if (status === "rejected") {
|
|
86
|
+
await RuntimeNotifier.info({
|
|
87
|
+
headline: "Error",
|
|
88
|
+
message: `Could not create zip file: ${String(error)}`
|
|
89
|
+
});
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
85
92
|
const approved = await RuntimeNotifier.approve({
|
|
86
93
|
headline: "Save Zip",
|
|
87
94
|
message: `Size: ${arrayBuffer.byteLength >> 20}M`,
|
|
@@ -91,7 +98,7 @@ export var AudioOfflineRenderer;
|
|
|
91
98
|
return;
|
|
92
99
|
}
|
|
93
100
|
const saveResult = await Promises.tryCatch(Files.save(arrayBuffer, { suggestedName: `${meta.name}.zip` }));
|
|
94
|
-
if (saveResult.status === "rejected") {
|
|
101
|
+
if (saveResult.status === "rejected" && !Errors.isAbort(saveResult.error)) {
|
|
95
102
|
panic(String(saveResult.error));
|
|
96
103
|
}
|
|
97
104
|
};
|
package/dist/EffectBox.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ArpeggioDeviceBox, DelayDeviceBox, ModularDeviceBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, UnknownAudioEffectDeviceBox, UnknownMidiEffectDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
|
|
2
|
-
export type EffectBox = ArpeggioDeviceBox | PitchDeviceBox | ZeitgeistDeviceBox | UnknownMidiEffectDeviceBox | DelayDeviceBox | ReverbDeviceBox | RevampDeviceBox | StereoToolDeviceBox | ModularDeviceBox | UnknownAudioEffectDeviceBox;
|
|
1
|
+
import { ArpeggioDeviceBox, CompressorDeviceBox, CrusherDeviceBox, DelayDeviceBox, ModularDeviceBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, UnknownAudioEffectDeviceBox, UnknownMidiEffectDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
|
|
2
|
+
export type EffectBox = ArpeggioDeviceBox | PitchDeviceBox | ZeitgeistDeviceBox | UnknownMidiEffectDeviceBox | DelayDeviceBox | ReverbDeviceBox | RevampDeviceBox | StereoToolDeviceBox | ModularDeviceBox | UnknownAudioEffectDeviceBox | CompressorDeviceBox | CrusherDeviceBox;
|
|
3
3
|
//# sourceMappingURL=EffectBox.d.ts.map
|
package/dist/EffectBox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EffectBox.d.ts","sourceRoot":"","sources":["../src/EffectBox.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,SAAS,GACf,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,0BAA0B,GACpF,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GACxE,gBAAgB,GAAG,2BAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"EffectBox.d.ts","sourceRoot":"","sources":["../src/EffectBox.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,SAAS,GACf,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,0BAA0B,GACpF,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GACxE,gBAAgB,GAAG,2BAA2B,GAAG,mBAAmB,GAAG,gBAAgB,CAAA"}
|
|
@@ -5,7 +5,9 @@ export declare namespace EffectFactories {
|
|
|
5
5
|
const Zeitgeist: EffectFactory;
|
|
6
6
|
const StereoTool: EffectFactory;
|
|
7
7
|
const Delay: EffectFactory;
|
|
8
|
+
const Compressor: EffectFactory;
|
|
8
9
|
const Reverb: EffectFactory;
|
|
10
|
+
const Crusher: EffectFactory;
|
|
9
11
|
const Revamp: EffectFactory;
|
|
10
12
|
const Modular: EffectFactory;
|
|
11
13
|
const MidiNamed: {
|
|
@@ -15,18 +17,22 @@ export declare namespace EffectFactories {
|
|
|
15
17
|
};
|
|
16
18
|
const AudioNamed: {
|
|
17
19
|
StereoTool: EffectFactory;
|
|
20
|
+
Compressor: EffectFactory;
|
|
18
21
|
Delay: EffectFactory;
|
|
19
22
|
Reverb: EffectFactory;
|
|
20
23
|
Revamp: EffectFactory;
|
|
24
|
+
Crusher: EffectFactory;
|
|
21
25
|
Modular: EffectFactory;
|
|
22
26
|
};
|
|
23
27
|
const MidiList: ReadonlyArray<Readonly<EffectFactory>>;
|
|
24
28
|
const AudioList: ReadonlyArray<Readonly<EffectFactory>>;
|
|
25
29
|
const MergedNamed: {
|
|
26
30
|
StereoTool: EffectFactory;
|
|
31
|
+
Compressor: EffectFactory;
|
|
27
32
|
Delay: EffectFactory;
|
|
28
33
|
Reverb: EffectFactory;
|
|
29
34
|
Revamp: EffectFactory;
|
|
35
|
+
Crusher: EffectFactory;
|
|
30
36
|
Modular: EffectFactory;
|
|
31
37
|
Arpeggio: EffectFactory;
|
|
32
38
|
Pitch: EffectFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EffectFactories.d.ts","sourceRoot":"","sources":["../src/EffectFactories.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EffectFactories.d.ts","sourceRoot":"","sources":["../src/EffectFactories.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAG7C,yBAAiB,eAAe,CAAC;IACtB,MAAM,QAAQ,EAAE,aAWtB,CAAA;IAEM,MAAM,KAAK,EAAE,aAWnB,CAAA;IAEM,MAAM,SAAS,EAAE,aAqBvB,CAAA;IAEM,MAAM,UAAU,EAAE,aAYxB,CAAA;IAEM,MAAM,KAAK,EAAE,aAYnB,CAAA;IAEM,MAAM,UAAU,EAAE,aAYxB,CAAA;IAEM,MAAM,MAAM,EAAE,aAapB,CAAA;IAEM,MAAM,OAAO,EAAE,aAYrB,CAAA;IAEM,MAAM,MAAM,EAAE,aAYpB,CAAA;IAEM,MAAM,OAAO,EAAE,aAoCrB,CAAA;IAEM,MAAM,SAAS;;;;KAA+B,CAAA;IAC9C,MAAM,UAAU;;;;;;;;KAAoE,CAAA;IACpF,MAAM,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA4B,CAAA;IACjF,MAAM,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA6B,CAAA;IACnF,MAAM,WAAW;;;;;;;;;;;KAAgC,CAAA;IACxD,KAAY,cAAc,GAAG,MAAM,OAAO,SAAS,CAAA;IACnD,KAAY,eAAe,GAAG,MAAM,OAAO,UAAU,CAAA;CACxD"}
|
package/dist/EffectFactories.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ArpeggioDeviceBox, DelayDeviceBox, GrooveShuffleBox, ModularAudioInputBox, ModularAudioOutputBox, ModularBox, ModularDeviceBox, ModuleConnectionBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
|
|
1
|
+
import { UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { ArpeggioDeviceBox, CompressorDeviceBox, CrusherDeviceBox, DelayDeviceBox, GrooveShuffleBox, ModularAudioInputBox, ModularAudioOutputBox, ModularBox, ModularDeviceBox, ModuleConnectionBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { IconSymbol } from "@opendaw/studio-adapters";
|
|
4
|
+
import { EffectParameterDefaults } from "./EffectParameterDefaults";
|
|
4
5
|
export var EffectFactories;
|
|
5
6
|
(function (EffectFactories) {
|
|
6
7
|
EffectFactories.Arpeggio = {
|
|
@@ -73,6 +74,18 @@ export var EffectFactories;
|
|
|
73
74
|
box.host.refer(unit);
|
|
74
75
|
})
|
|
75
76
|
};
|
|
77
|
+
EffectFactories.Compressor = {
|
|
78
|
+
defaultName: "Compressor",
|
|
79
|
+
defaultIcon: IconSymbol.Compressor,
|
|
80
|
+
description: "Reduces the dynamic range by attenuating signals above a threshold",
|
|
81
|
+
separatorBefore: false,
|
|
82
|
+
type: "audio",
|
|
83
|
+
create: ({ boxGraph }, unit, index) => CompressorDeviceBox.create(boxGraph, UUID.generate(), box => {
|
|
84
|
+
box.label.setValue("Compressor");
|
|
85
|
+
box.index.setValue(index);
|
|
86
|
+
box.host.refer(unit);
|
|
87
|
+
})
|
|
88
|
+
};
|
|
76
89
|
EffectFactories.Reverb = {
|
|
77
90
|
defaultName: "Reverb",
|
|
78
91
|
defaultIcon: IconSymbol.Cube,
|
|
@@ -86,6 +99,18 @@ export var EffectFactories;
|
|
|
86
99
|
box.host.refer(unit);
|
|
87
100
|
})
|
|
88
101
|
};
|
|
102
|
+
EffectFactories.Crusher = {
|
|
103
|
+
defaultName: "Crusher",
|
|
104
|
+
defaultIcon: IconSymbol.Bug,
|
|
105
|
+
description: "Degrates the audio signal",
|
|
106
|
+
separatorBefore: false,
|
|
107
|
+
type: "audio",
|
|
108
|
+
create: ({ boxGraph }, unit, index) => CrusherDeviceBox.create(boxGraph, UUID.generate(), box => {
|
|
109
|
+
box.label.setValue("Crusher");
|
|
110
|
+
box.index.setValue(index);
|
|
111
|
+
box.host.refer(unit);
|
|
112
|
+
})
|
|
113
|
+
};
|
|
89
114
|
EffectFactories.Revamp = {
|
|
90
115
|
defaultName: "Revamp",
|
|
91
116
|
defaultIcon: IconSymbol.EQ,
|
|
@@ -93,27 +118,7 @@ export var EffectFactories;
|
|
|
93
118
|
separatorBefore: false,
|
|
94
119
|
type: "audio",
|
|
95
120
|
create: ({ boxGraph }, unit, index) => RevampDeviceBox.create(boxGraph, UUID.generate(), box => {
|
|
96
|
-
|
|
97
|
-
box.highPass.frequency.setInitValue(40.0);
|
|
98
|
-
box.highPass.order.setInitValue(2);
|
|
99
|
-
box.highPass.q.setInitValue(INVERSE_SQRT_2);
|
|
100
|
-
box.highPass.enabled.setInitValue(true);
|
|
101
|
-
box.lowShelf.frequency.setInitValue(80.0);
|
|
102
|
-
box.lowShelf.gain.setInitValue(6);
|
|
103
|
-
box.lowBell.frequency.setInitValue(120.0);
|
|
104
|
-
box.lowBell.gain.setInitValue(6);
|
|
105
|
-
box.lowBell.q.setInitValue(INVERSE_SQRT_2);
|
|
106
|
-
box.midBell.frequency.setInitValue(640.0);
|
|
107
|
-
box.midBell.q.setInitValue(INVERSE_SQRT_2);
|
|
108
|
-
box.midBell.gain.setInitValue(6);
|
|
109
|
-
box.highBell.frequency.setInitValue(3600.0);
|
|
110
|
-
box.highBell.q.setInitValue(INVERSE_SQRT_2);
|
|
111
|
-
box.highBell.gain.setInitValue(6);
|
|
112
|
-
box.highShelf.frequency.setInitValue(10000.0);
|
|
113
|
-
box.highShelf.gain.setInitValue(6);
|
|
114
|
-
box.lowPass.frequency.setInitValue(15000.0);
|
|
115
|
-
box.lowPass.order.setInitValue(2);
|
|
116
|
-
box.lowPass.q.setInitValue(INVERSE_SQRT_2);
|
|
121
|
+
EffectParameterDefaults.defaultRevampDeviceBox(box);
|
|
117
122
|
box.index.setValue(index);
|
|
118
123
|
box.host.refer(unit);
|
|
119
124
|
})
|
|
@@ -156,7 +161,7 @@ export var EffectFactories;
|
|
|
156
161
|
}
|
|
157
162
|
};
|
|
158
163
|
EffectFactories.MidiNamed = { Arpeggio: EffectFactories.Arpeggio, Pitch: EffectFactories.Pitch, Zeitgeist: EffectFactories.Zeitgeist };
|
|
159
|
-
EffectFactories.AudioNamed = { StereoTool: EffectFactories.StereoTool, Delay: EffectFactories.Delay, Reverb: EffectFactories.Reverb, Revamp: EffectFactories.Revamp, Modular: EffectFactories.Modular };
|
|
164
|
+
EffectFactories.AudioNamed = { StereoTool: EffectFactories.StereoTool, Compressor: EffectFactories.Compressor, Delay: EffectFactories.Delay, Reverb: EffectFactories.Reverb, Revamp: EffectFactories.Revamp, Crusher: EffectFactories.Crusher, Modular: EffectFactories.Modular };
|
|
160
165
|
EffectFactories.MidiList = Object.values(EffectFactories.MidiNamed);
|
|
161
166
|
EffectFactories.AudioList = Object.values(EffectFactories.AudioNamed);
|
|
162
167
|
EffectFactories.MergedNamed = { ...EffectFactories.MidiNamed, ...EffectFactories.AudioNamed };
|
package/dist/EffectFactory.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EffectPointerType, IconSymbol } from "@opendaw/studio-adapters";
|
|
2
2
|
import { Field } from "@opendaw/lib-box";
|
|
3
3
|
import { int } from "@opendaw/lib-std";
|
|
4
|
-
import { Project } from "./project
|
|
4
|
+
import { Project } from "./project";
|
|
5
5
|
import { EffectBox } from "./EffectBox";
|
|
6
6
|
export interface EffectFactory {
|
|
7
7
|
get defaultName(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EffectFactory.d.ts","sourceRoot":"","sources":["../src/EffectFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"EffectFactory.d.ts","sourceRoot":"","sources":["../src/EffectFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAErC,MAAM,WAAW,aAAa;IAC1B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,WAAW,IAAI,UAAU,CAAA;IAC7B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,eAAe,IAAI,OAAO,CAAA;IAC9B,IAAI,IAAI,IAAI,OAAO,GAAG,MAAM,CAAA;IAE5B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,CAAA;CAClF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectParameterDefaults.d.ts","sourceRoot":"","sources":["../src/EffectParameterDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAGrD,yBAAiB,uBAAuB,CAAC;IAC9B,MAAM,sBAAsB,GAAI,KAAK,eAAe,SAsB1D,CAAA;CACJ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { INVERSE_SQRT_2 } from "@opendaw/lib-std";
|
|
2
|
+
export var EffectParameterDefaults;
|
|
3
|
+
(function (EffectParameterDefaults) {
|
|
4
|
+
EffectParameterDefaults.defaultRevampDeviceBox = (box) => {
|
|
5
|
+
box.label.setValue("Revamp");
|
|
6
|
+
box.highPass.frequency.setInitValue(40.0);
|
|
7
|
+
box.highPass.order.setInitValue(1);
|
|
8
|
+
box.highPass.q.setInitValue(Math.SQRT1_2);
|
|
9
|
+
box.highPass.enabled.setInitValue(true);
|
|
10
|
+
box.lowShelf.frequency.setInitValue(80.0);
|
|
11
|
+
box.lowShelf.gain.setInitValue(6);
|
|
12
|
+
box.lowBell.frequency.setInitValue(120.0);
|
|
13
|
+
box.lowBell.gain.setInitValue(6);
|
|
14
|
+
box.lowBell.q.setInitValue(INVERSE_SQRT_2);
|
|
15
|
+
box.midBell.frequency.setInitValue(640.0);
|
|
16
|
+
box.midBell.q.setInitValue(INVERSE_SQRT_2);
|
|
17
|
+
box.midBell.gain.setInitValue(6);
|
|
18
|
+
box.highBell.frequency.setInitValue(3600.0);
|
|
19
|
+
box.highBell.q.setInitValue(INVERSE_SQRT_2);
|
|
20
|
+
box.highBell.gain.setInitValue(6);
|
|
21
|
+
box.highShelf.frequency.setInitValue(10000.0);
|
|
22
|
+
box.highShelf.gain.setInitValue(6);
|
|
23
|
+
box.lowPass.frequency.setInitValue(15000.0);
|
|
24
|
+
box.lowPass.order.setInitValue(1);
|
|
25
|
+
box.lowPass.q.setInitValue(Math.SQRT1_2);
|
|
26
|
+
};
|
|
27
|
+
})(EffectParameterDefaults || (EffectParameterDefaults = {}));
|
package/dist/Engine.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface Engine extends Terminable {
|
|
|
6
6
|
play(): void;
|
|
7
7
|
stop(): void;
|
|
8
8
|
setPosition(position: ppqn): void;
|
|
9
|
-
|
|
9
|
+
prepareRecordingState(countIn: boolean): void;
|
|
10
10
|
stopRecording(): void;
|
|
11
11
|
isReady(): Promise<void>;
|
|
12
12
|
queryLoadingComplete(): Promise<boolean>;
|
package/dist/Engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,MAAM,WAAW,MAAO,SAAQ,UAAU;IACtC,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;IACZ,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,MAAM,WAAW,MAAO,SAAQ,UAAU;IACtC,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;IACZ,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY,CAAA;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,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,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAA;IAE7E,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,gBAAgB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,IAAI,OAAO,IAAI,OAAO,CAAA;CACzB"}
|
package/dist/EngineFacade.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare class EngineFacade implements Engine {
|
|
|
13
13
|
play(): void;
|
|
14
14
|
stop(reset?: boolean): void;
|
|
15
15
|
setPosition(position: ppqn): void;
|
|
16
|
-
|
|
16
|
+
prepareRecordingState(countIn: boolean): void;
|
|
17
17
|
stopRecording(): void;
|
|
18
18
|
get position(): ObservableValue<ppqn>;
|
|
19
19
|
get isPlaying(): ObservableValue<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,qBAAa,YAAa,YAAW,MAAM;;;IAmBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAmBjC,aAAa,IAAI,IAAI;IAErB,cAAc,IAAI,IAAI;IAMtB,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,
|
|
1
|
+
{"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,qBAAa,YAAa,YAAW,MAAM;;;IAmBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAmBjC,aAAa,IAAI,IAAI;IAErB,cAAc,IAAI,IAAI;IAMtB,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAC7C,aAAa,IAAI,IAAI;IAErB,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAiC;IAC/E,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAqC;IACtF,IAAI,WAAW,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IACjG,IAAI,OAAO,IAAI,OAAO,CAAmE;IAEzF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGxC,KAAK,IAAI,IAAI;IACb,UAAU,IAAI,MAAM;IACpB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAG7E,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAG5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IAGxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAGpC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI3D,SAAS,IAAI,IAAI;CAIpB"}
|
package/dist/EngineFacade.js
CHANGED
|
@@ -28,7 +28,7 @@ export class EngineFacade {
|
|
|
28
28
|
play() { this.#worklet.ifSome(worklet => worklet.play()); }
|
|
29
29
|
stop(reset = false) { this.#worklet.ifSome(worklet => worklet.stop(reset)); }
|
|
30
30
|
setPosition(position) { this.#worklet.ifSome(worklet => worklet.setPosition(position)); }
|
|
31
|
-
|
|
31
|
+
prepareRecordingState(countIn) { this.#worklet.ifSome(worklet => worklet.prepareRecordingState(countIn)); }
|
|
32
32
|
stopRecording() { this.#worklet.ifSome(worklet => worklet.stopRecording()); }
|
|
33
33
|
get position() { return this.#position; }
|
|
34
34
|
get isPlaying() { return this.#isPlaying; }
|
package/dist/EngineWorklet.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class EngineWorklet extends AudioWorkletNode implements Engine {
|
|
|
11
11
|
play(): void;
|
|
12
12
|
stop(reset?: boolean): void;
|
|
13
13
|
setPosition(position: ppqn): void;
|
|
14
|
-
|
|
14
|
+
prepareRecordingState(countIn: boolean): void;
|
|
15
15
|
stopRecording(): void;
|
|
16
16
|
panic(): void;
|
|
17
17
|
get isPlaying(): ObservableValue<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAIrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAqBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB,EAC9C,OAAO,CAAC,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAIrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAqBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB,EAC9C,OAAO,CAAC,EAAE,gBAAgB;IAuHtC,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAC7C,aAAa,IAAI,IAAI;IACrB,KAAK,IAAI,IAAI;IAEb,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAqC;IACzF,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,iBAAiB,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAiC;IACxF,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAC1F,IAAI,OAAO,IAAI,OAAO,CAAuB;IAE7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG3D,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAQ7E,SAAS,IAAI,IAAI;CAIpB"}
|
package/dist/EngineWorklet.js
CHANGED
|
@@ -56,7 +56,7 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
56
56
|
play() { dispatcher.dispatchAndForget(this.play); }
|
|
57
57
|
stop(reset) { dispatcher.dispatchAndForget(this.stop, reset); }
|
|
58
58
|
setPosition(position) { dispatcher.dispatchAndForget(this.setPosition, position); }
|
|
59
|
-
|
|
59
|
+
prepareRecordingState(countIn) { dispatcher.dispatchAndForget(this.prepareRecordingState, countIn); }
|
|
60
60
|
stopRecording() { dispatcher.dispatchAndForget(this.stopRecording); }
|
|
61
61
|
setMetronomeEnabled(enabled) {
|
|
62
62
|
dispatcher.dispatchAndForget(this.setMetronomeEnabled, enabled);
|
|
@@ -82,6 +82,7 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
82
82
|
}));
|
|
83
83
|
Communicator.executor(messenger.channel("engine-to-client"), {
|
|
84
84
|
log: (message) => console.log("WORKLET", message),
|
|
85
|
+
error: (reason) => this.dispatchEvent(new ErrorEvent("error", { error: reason })),
|
|
85
86
|
ready: () => resolve(),
|
|
86
87
|
fetchAudio: (uuid) => {
|
|
87
88
|
return new Promise((resolve, reject) => {
|
|
@@ -132,7 +133,7 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
132
133
|
play() { this.#commands.play(); }
|
|
133
134
|
stop(reset = false) { this.#commands.stop(reset); }
|
|
134
135
|
setPosition(position) { this.#commands.setPosition(position); }
|
|
135
|
-
|
|
136
|
+
prepareRecordingState(countIn) { this.#commands.prepareRecordingState(countIn); }
|
|
136
137
|
stopRecording() { this.#commands.stopRecording(); }
|
|
137
138
|
panic() { this.#commands.panic(); }
|
|
138
139
|
get isPlaying() { return this.#isPlaying; }
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Observer, Subscription } from "@opendaw/lib-std";
|
|
3
|
+
declare const PreferencesSchema: z.ZodObject<{
|
|
4
|
+
"auto-open-clips": z.ZodDefault<z.ZodBoolean>;
|
|
5
|
+
"auto-create-output-compressor": z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
"footer-show-fps-meter": z.ZodDefault<z.ZodBoolean>;
|
|
7
|
+
"footer-show-build-infos": z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
export type Preferences = z.infer<typeof PreferencesSchema>;
|
|
10
|
+
export declare const Preferences: {
|
|
11
|
+
values: {
|
|
12
|
+
"auto-open-clips": boolean;
|
|
13
|
+
"auto-create-output-compressor": boolean;
|
|
14
|
+
"footer-show-fps-meter": boolean;
|
|
15
|
+
"footer-show-build-infos": boolean;
|
|
16
|
+
};
|
|
17
|
+
catchupAndSubscribe: <KEY extends keyof Preferences>(observer: Observer<Preferences[KEY]>, property: KEY) => Subscription;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=Preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Preferences.d.ts","sourceRoot":"","sources":["../src/Preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AACrB,OAAO,EAAsB,QAAQ,EAAE,YAAY,EAAW,MAAM,kBAAkB,CAAA;AAEtF,QAAA,MAAM,iBAAiB;;;;;iBAKrB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,eAAO,MAAM,WAAW;;;;;;;0BAkCM,GAAG,SAAS,MAAM,WAAW,YACrC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,KAAG,YAAY;CAK1E,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { isDefined, Notifier, tryCatch } from "@opendaw/lib-std";
|
|
3
|
+
const PreferencesSchema = z.object({
|
|
4
|
+
"auto-open-clips": z.boolean().default(false),
|
|
5
|
+
"auto-create-output-compressor": z.boolean().default(true),
|
|
6
|
+
"footer-show-fps-meter": z.boolean().default(false),
|
|
7
|
+
"footer-show-build-infos": z.boolean().default(false)
|
|
8
|
+
});
|
|
9
|
+
export const Preferences = (() => {
|
|
10
|
+
const STORAGE_KEY = "preferences";
|
|
11
|
+
const notifier = new Notifier();
|
|
12
|
+
const watch = (target) => new Proxy(target, {
|
|
13
|
+
set(obj, prop, value) {
|
|
14
|
+
const key = prop;
|
|
15
|
+
console.debug(`preference changed. key: ${key}, value: ${value}`);
|
|
16
|
+
obj[key] = value;
|
|
17
|
+
notifier.notify(key);
|
|
18
|
+
tryCatch(() => localStorage.setItem(STORAGE_KEY, JSON.stringify(target)));
|
|
19
|
+
return true;
|
|
20
|
+
},
|
|
21
|
+
preventExtensions() {
|
|
22
|
+
// Prevent the proxy target from being made non-extensible
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
const getOrCreate = () => {
|
|
27
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
|
28
|
+
if (isDefined(stored)) {
|
|
29
|
+
const { status, value } = tryCatch(() => JSON.parse(stored));
|
|
30
|
+
if (status === "success") {
|
|
31
|
+
return watch({ ...PreferencesSchema.parse(value) });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return watch({ ...PreferencesSchema.parse({}) });
|
|
35
|
+
};
|
|
36
|
+
const preferences = getOrCreate();
|
|
37
|
+
return {
|
|
38
|
+
values: preferences,
|
|
39
|
+
catchupAndSubscribe: (observer, property) => {
|
|
40
|
+
observer(preferences[property]);
|
|
41
|
+
return notifier.subscribe(key => { if (key === property) {
|
|
42
|
+
observer(preferences[property]);
|
|
43
|
+
} });
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
@@ -10,7 +10,7 @@ export class CaptureDevices {
|
|
|
10
10
|
this.#project = project;
|
|
11
11
|
this.#captures = UUID.newSet(unit => unit.uuid);
|
|
12
12
|
this.#subscription = this.#project.rootBox.audioUnits.pointerHub.catchupAndSubscribe({
|
|
13
|
-
|
|
13
|
+
onAdded: ({ box }) => {
|
|
14
14
|
const audioUnitBox = asInstanceOf(box, AudioUnitBox);
|
|
15
15
|
const capture = audioUnitBox.capture.targetVertex
|
|
16
16
|
.ifSome(({ box }) => box.accept({
|
|
@@ -21,7 +21,7 @@ export class CaptureDevices {
|
|
|
21
21
|
this.#captures.add(capture);
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
-
|
|
24
|
+
onRemoved: ({ box: { address: { uuid } } }) => this.#captures.removeByKeyIfExist(uuid)?.terminate()
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
get project() { return this.#project; }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AudioUnitBox, TrackBox } from "@opendaw/studio-boxes";
|
|
2
2
|
import { TrackType } from "@opendaw/studio-adapters";
|
|
3
|
-
import {
|
|
3
|
+
import { BoxEditing } from "@opendaw/lib-box";
|
|
4
4
|
export declare namespace RecordTrack {
|
|
5
|
-
const findOrCreate: (editing:
|
|
5
|
+
const findOrCreate: (editing: BoxEditing, audioUnitBox: AudioUnitBox, type: TrackType) => TrackBox;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=RecordTrack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTrack.d.ts","sourceRoot":"","sources":["../../src/capture/RecordTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"RecordTrack.d.ts","sourceRoot":"","sources":["../../src/capture/RecordTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAE3C,yBAAiB,WAAW,CAAC;IAClB,MAAM,YAAY,GAAI,SAAS,UAAU,EAAE,cAAc,YAAY,EAAE,MAAM,SAAS,KAAG,QAe/F,CAAA;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recording.d.ts","sourceRoot":"","sources":["../../src/capture/Recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAK7F,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"Recording.d.ts","sourceRoot":"","sources":["../../src/capture/Recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAK7F,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAElC,qBAAa,SAAS;;IAClB,MAAM,KAAK,WAAW,IAAI,OAAO,CAA2B;WAE/C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA6D3E,OAAO;CACV"}
|
|
@@ -25,7 +25,7 @@ export class Recording {
|
|
|
25
25
|
return Errors.warn(String(error));
|
|
26
26
|
}
|
|
27
27
|
terminator.ownAll(...captures.map(capture => capture.startRecording()));
|
|
28
|
-
engine.
|
|
28
|
+
engine.prepareRecordingState(countIn);
|
|
29
29
|
const { isRecording, isCountingIn } = engine;
|
|
30
30
|
const stop = () => {
|
|
31
31
|
if (isRecording.getValue() || isCountingIn.getValue()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltinDevices.d.ts","sourceRoot":"","sources":["../../src/dawproject/BuiltinDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAC,eAAe,EAA0B,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAY,GAAG,EAAO,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,yBAAiB,cAAc,CAAC;IACrB,MAAM,SAAS,GAAI,UAAU,QAAQ,EAClB,WAAW,eAAe,EAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EACvE,OAAO,GAAG,KAAG,
|
|
1
|
+
{"version":3,"file":"BuiltinDevices.d.ts","sourceRoot":"","sources":["../../src/dawproject/BuiltinDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAC,eAAe,EAA0B,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAY,GAAG,EAAO,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,yBAAiB,cAAc,CAAC;IACrB,MAAM,SAAS,GAAI,UAAU,QAAQ,EAClB,WAAW,eAAe,EAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EACvE,OAAO,GAAG,KAAG,eA6DtC,CAAA;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EqBandType, ParameterDecoder } from "@opendaw/lib-dawproject";
|
|
2
2
|
import { RevampDeviceBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { ifDefined, UUID } from "@opendaw/lib-std";
|
|
4
|
-
import {
|
|
4
|
+
import { EffectParameterDefaults } from "../EffectParameterDefaults";
|
|
5
5
|
export var BuiltinDevices;
|
|
6
6
|
(function (BuiltinDevices) {
|
|
7
7
|
BuiltinDevices.equalizer = (boxGraph, equalizer, field, index) => {
|
|
@@ -23,7 +23,7 @@ export var BuiltinDevices;
|
|
|
23
23
|
const readPass = (schema, pass) => {
|
|
24
24
|
const { order, frequency, q, enabled } = pass;
|
|
25
25
|
order.setValue(mapOrder(schema.order));
|
|
26
|
-
frequency.setValue(
|
|
26
|
+
frequency.setValue(ParameterDecoder.readValue(schema.freq));
|
|
27
27
|
ifDefined(schema.Q?.value, value => q.setValue(value));
|
|
28
28
|
ifDefined(schema.enabled?.value, value => enabled.setValue(value));
|
|
29
29
|
};
|
|
@@ -34,6 +34,7 @@ export var BuiltinDevices;
|
|
|
34
34
|
ifDefined(schema.enabled?.value, value => enabled.setValue(value));
|
|
35
35
|
};
|
|
36
36
|
return RevampDeviceBox.create(boxGraph, UUID.generate(), box => {
|
|
37
|
+
EffectParameterDefaults.defaultRevampDeviceBox(box);
|
|
37
38
|
box.host.refer(field);
|
|
38
39
|
box.index.setValue(index);
|
|
39
40
|
box.label.setValue(equalizer.deviceName ?? "Revamp");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DawProjectImporter.d.ts","sourceRoot":"","sources":["../../src/dawproject/DawProjectImporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAiBH,IAAI,EAEP,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAcH,aAAa,EAOhB,MAAM,yBAAyB,CAAA;AAuBhC,OAAO,EAAyC,eAAe,EAAY,MAAM,0BAA0B,CAAA;AAC3G,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAQvC,yBAAiB,gBAAgB,CAAC;IAW9B,KAAY,MAAM,GAAG;QACjB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,QAAQ,EAAE,eAAe,CAAA;KAC5B,CAAA;IAOM,MAAM,IAAI,GAAU,QAAQ,aAAa,EAAE,WAAW,UAAU,CAAC,gBAAgB,KAAG,OAAO,CAAC,MAAM,CA2XxG,CAAA;CAaJ"}
|
|
@@ -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"}
|