@opendaw/studio-core 0.0.91 → 0.0.93
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/AudioDevices.d.ts +2 -0
- package/dist/AudioDevices.d.ts.map +1 -1
- package/dist/AudioDevices.js +3 -0
- package/dist/AudioOfflineRenderer.d.ts +2 -0
- package/dist/AudioOfflineRenderer.d.ts.map +1 -1
- package/dist/AudioOfflineRenderer.js +2 -1
- package/dist/Engine.d.ts +2 -1
- package/dist/Engine.d.ts.map +1 -1
- package/dist/EngineFacade.d.ts +2 -1
- package/dist/EngineFacade.d.ts.map +1 -1
- package/dist/EngineFacade.js +3 -0
- package/dist/EngineWorklet.d.ts +2 -1
- package/dist/EngineWorklet.d.ts.map +1 -1
- package/dist/EngineWorklet.js +8 -2
- package/dist/OfflineEngineRenderer.d.ts +16 -5
- package/dist/OfflineEngineRenderer.d.ts.map +1 -1
- package/dist/OfflineEngineRenderer.js +85 -38
- package/dist/OpenDAWHeaders.d.ts.map +1 -1
- package/dist/OpenDAWHeaders.js +1 -2
- package/dist/RecordingWorklet.d.ts.map +1 -1
- package/dist/RecordingWorklet.js +0 -1
- package/dist/StudioPreferences.d.ts +22 -12
- package/dist/StudioPreferences.d.ts.map +1 -1
- package/dist/StudioSettings.d.ts +22 -12
- package/dist/StudioSettings.d.ts.map +1 -1
- package/dist/StudioSettings.js +41 -12
- package/dist/WavFile.d.ts.map +1 -1
- package/dist/WavFile.js +33 -9
- package/dist/capture/CaptureAudio.js +4 -4
- package/dist/capture/RecordAudio.d.ts.map +1 -1
- package/dist/capture/RecordAudio.js +49 -12
- package/dist/capture/RecordMidi.d.ts.map +1 -1
- package/dist/capture/RecordMidi.js +44 -8
- package/dist/capture/Recording.d.ts +2 -0
- package/dist/capture/Recording.d.ts.map +1 -1
- package/dist/capture/Recording.js +6 -2
- package/dist/midi/MIDIReceiver.d.ts +2 -2
- package/dist/midi/MIDIReceiver.d.ts.map +1 -1
- package/dist/midi/MIDIReceiver.js +2 -7
- package/dist/midi/index.d.ts +1 -0
- package/dist/midi/index.d.ts.map +1 -1
- package/dist/midi/index.js +1 -0
- package/dist/offline-engine.js +1 -1
- package/dist/offline-engine.js.map +3 -3
- package/dist/processors.js +15 -15
- package/dist/processors.js.map +4 -4
- package/dist/project/Project.d.ts +2 -1
- package/dist/project/Project.d.ts.map +1 -1
- package/dist/project/Project.js +18 -3
- package/dist/project/ProjectMigration.d.ts.map +1 -1
- package/dist/project/ProjectMigration.js +18 -251
- package/dist/project/migration/MigrateAudioClipBox.d.ts +4 -0
- package/dist/project/migration/MigrateAudioClipBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateAudioClipBox.js +32 -0
- package/dist/project/migration/MigrateAudioFileBox.d.ts +5 -0
- package/dist/project/migration/MigrateAudioFileBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateAudioFileBox.js +13 -0
- package/dist/project/migration/MigrateAudioRegionBox.d.ts +4 -0
- package/dist/project/migration/MigrateAudioRegionBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateAudioRegionBox.js +54 -0
- package/dist/project/migration/MigrateAudioUnitBox.d.ts +4 -0
- package/dist/project/migration/MigrateAudioUnitBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateAudioUnitBox.js +19 -0
- package/dist/project/migration/MigrateDelayDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateDelayDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateDelayDeviceBox.js +36 -0
- package/dist/project/migration/MigrateMIDIOutputDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateMIDIOutputDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateMIDIOutputDeviceBox.js +20 -0
- package/dist/project/migration/MigrateRevampDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateRevampDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateRevampDeviceBox.js +7 -0
- package/dist/project/migration/MigrateTimelineBox.d.ts +4 -0
- package/dist/project/migration/MigrateTimelineBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateTimelineBox.js +10 -0
- package/dist/project/migration/MigrateValueEventBox.d.ts +4 -0
- package/dist/project/migration/MigrateValueEventBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateValueEventBox.js +32 -0
- package/dist/project/migration/MigrateValueEventCollection.d.ts +4 -0
- package/dist/project/migration/MigrateValueEventCollection.d.ts.map +1 -0
- package/dist/project/migration/MigrateValueEventCollection.js +59 -0
- package/dist/project/migration/MigrateValueEventCollection.test.d.ts +2 -0
- package/dist/project/migration/MigrateValueEventCollection.test.d.ts.map +1 -0
- package/dist/project/migration/MigrateValueEventCollection.test.js +199 -0
- package/dist/project/migration/MigrateVaporisateurDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateVaporisateurDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateVaporisateurDeviceBox.js +28 -0
- package/dist/project/migration/MigrateZeitgeistDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateZeitgeistDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateZeitgeistDeviceBox.js +8 -0
- package/dist/project/migration/index.d.ts +13 -0
- package/dist/project/migration/index.d.ts.map +1 -0
- package/dist/project/migration/index.js +12 -0
- package/dist/samples/OpenSampleAPI.d.ts.map +1 -1
- package/dist/samples/OpenSampleAPI.js +3 -0
- package/dist/ui/generic/ClipboardManager.js +1 -1
- package/dist/ui/generic/ContextMenu.d.ts +1 -1
- package/dist/ui/generic/ContextMenu.js +1 -1
- package/dist/ui/generic/{menu-item.d.ts → MenuItems.d.ts} +1 -1
- package/dist/ui/generic/{menu-item.d.ts.map → MenuItems.d.ts.map} +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/workers-main.js +1 -1
- package/dist/workers-main.js.map +3 -3
- package/dist/ysync/YMapper.d.ts.map +1 -1
- package/dist/ysync/YMapper.js +7 -3
- package/package.json +15 -15
- /package/dist/ui/generic/{menu-item.js → MenuItems.js} +0 -0
package/dist/AudioDevices.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { Optional } from "@opendaw/lib-std";
|
|
1
2
|
export declare class AudioDevices {
|
|
2
3
|
#private;
|
|
3
4
|
static requestPermission(): Promise<undefined>;
|
|
4
5
|
static requestStream(constraints: MediaTrackConstraints): Promise<MediaStream>;
|
|
5
6
|
static updateInputList(): Promise<undefined>;
|
|
6
7
|
static get inputs(): ReadonlyArray<MediaDeviceInfo>;
|
|
8
|
+
static get defaultInput(): Optional<MediaDeviceInfo>;
|
|
7
9
|
}
|
|
8
10
|
//# sourceMappingURL=AudioDevices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioDevices.d.ts","sourceRoot":"","sources":["../src/AudioDevices.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AudioDevices.d.ts","sourceRoot":"","sources":["../src/AudioDevices.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAGzD,qBAAa,YAAY;;WACR,iBAAiB;WAQjB,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC;WAcvE,eAAe;IAY5B,MAAM,KAAK,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC,CAAsB;IAEzE,MAAM,KAAK,YAAY,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEnD;CACJ"}
|
package/dist/AudioDevices.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { int, Option, Progress } from "@opendaw/lib-std";
|
|
2
2
|
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
|
3
3
|
import { Project } from "./project";
|
|
4
|
+
/** @deprecated */
|
|
4
5
|
export declare namespace AudioOfflineRenderer {
|
|
6
|
+
/** @deprecated */
|
|
5
7
|
const start: (source: Project, optExportConfiguration: Option<ExportStemsConfiguration>, progress: Progress.Handler, abortSignal?: AbortSignal, sampleRate?: int) => Promise<AudioBuffer>;
|
|
6
8
|
}
|
|
7
9
|
//# sourceMappingURL=AudioOfflineRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAa,MAAM,EAAS,QAAQ,EAAuB,MAAM,kBAAkB,CAAA;AAGtG,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,yBAAiB,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAa,MAAM,EAAS,QAAQ,EAAuB,MAAM,kBAAkB,CAAA;AAGtG,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,kBAAkB;AAClB,yBAAiB,oBAAoB,CAAC;IAClC,kBAAkB;IACX,MAAM,KAAK,GAAU,QAAQ,OAAO,EACf,wBAAwB,MAAM,CAAC,wBAAwB,CAAC,EACxD,UAAU,QAAQ,CAAC,OAAO,EAC1B,cAAc,WAAW,EACzB,aAAY,GAAY,KAAG,OAAO,CAAC,WAAW,CA+CzE,CAAA;CACJ"}
|
|
@@ -3,9 +3,10 @@ import { AnimationFrame } from "@opendaw/lib-dom";
|
|
|
3
3
|
import { Wait } from "@opendaw/lib-runtime";
|
|
4
4
|
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
|
5
5
|
import { AudioWorklets } from "./AudioWorklets";
|
|
6
|
+
/** @deprecated */
|
|
6
7
|
export var AudioOfflineRenderer;
|
|
7
8
|
(function (AudioOfflineRenderer) {
|
|
8
|
-
|
|
9
|
+
/** @deprecated */
|
|
9
10
|
AudioOfflineRenderer.start = async (source, optExportConfiguration, progress, abortSignal, sampleRate = 48_000) => {
|
|
10
11
|
const numStems = ExportStemsConfiguration.countStems(optExportConfiguration);
|
|
11
12
|
if (numStems === 0) {
|
package/dist/Engine.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { int, Nullable, ObservableValue, Observer, Subscription, Terminable, UUID } from "@opendaw/lib-std";
|
|
2
|
-
import { bpm, ppqn } from "@opendaw/lib-dsp";
|
|
2
|
+
import { AudioData, bpm, ppqn } from "@opendaw/lib-dsp";
|
|
3
3
|
import { ClipNotification, EnginePreferences, NoteSignal } from "@opendaw/studio-adapters";
|
|
4
4
|
import { Project } from "./project";
|
|
5
5
|
export interface Engine extends Terminable {
|
|
@@ -14,6 +14,7 @@ export interface Engine extends Terminable {
|
|
|
14
14
|
panic(): void;
|
|
15
15
|
sleep(): void;
|
|
16
16
|
wake(): void;
|
|
17
|
+
loadClickSound(index: 0 | 1, data: AudioData): void;
|
|
17
18
|
noteSignal(signal: NoteSignal): void;
|
|
18
19
|
subscribeNotes(observer: Observer<NoteSignal>): Subscription;
|
|
19
20
|
ignoreNoteRegion(uuid: UUID.Bytes): void;
|
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,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzG,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzG,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACxF,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,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,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACnD,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,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAA;IAC/B,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,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9C,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;IACtB,IAAI,WAAW,IAAI,iBAAiB,CAAA;CACvC"}
|
package/dist/EngineFacade.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DefaultObservableValue, int, Nullable, ObservableValue, Observer, Subscription, UUID } from "@opendaw/lib-std";
|
|
2
|
-
import { bpm, ppqn } from "@opendaw/lib-dsp";
|
|
2
|
+
import { AudioData, bpm, ppqn } from "@opendaw/lib-dsp";
|
|
3
3
|
import { ClipNotification, EnginePreferences, NoteSignal } from "@opendaw/studio-adapters";
|
|
4
4
|
import { Engine } from "./Engine";
|
|
5
5
|
import { EngineWorklet } from "./EngineWorklet";
|
|
@@ -31,6 +31,7 @@ export declare class EngineFacade implements Engine {
|
|
|
31
31
|
panic(): void;
|
|
32
32
|
sleep(): void;
|
|
33
33
|
wake(): void;
|
|
34
|
+
loadClickSound(index: 0 | 1, data: AudioData): void;
|
|
34
35
|
subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
|
|
35
36
|
subscribeNotes(observer: Observer<NoteSignal>): Subscription;
|
|
36
37
|
ignoreNoteRegion(uuid: UUID.Bytes): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrD,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EAGjB,UAAU,EAEb,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,YAAa,YAAW,MAAM;;;IAoBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAgBjC,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,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAmB;IAClD,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,IAAI,CAAC,CAAiC;IAC/E,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;IACzF,IAAI,UAAU,IAAI,MAAM,CAAsF;IAC9G,IAAI,WAAW,IAAI,iBAAiB,CAAiC;IAErE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGxC,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;IACZ,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAGnD,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
|
@@ -52,6 +52,9 @@ export class EngineFacade {
|
|
|
52
52
|
panic() { this.#worklet.ifSome(worklet => worklet.panic()); }
|
|
53
53
|
sleep() { this.#worklet.ifSome(worklet => worklet.sleep()); }
|
|
54
54
|
wake() { this.#worklet.ifSome(worklet => worklet.wake()); }
|
|
55
|
+
loadClickSound(index, data) {
|
|
56
|
+
this.#worklet.ifSome(worklet => worklet.loadClickSound(index, data));
|
|
57
|
+
}
|
|
55
58
|
subscribeClipNotification(observer) {
|
|
56
59
|
return this.#worklet.unwrap("No worklet to subscribeClipNotification").subscribeClipNotification(observer);
|
|
57
60
|
}
|
package/dist/EngineWorklet.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { int, MutableObservableValue, Nullable, ObservableValue, Observer, Subscription, UUID } from "@opendaw/lib-std";
|
|
2
|
-
import { bpm, ppqn } from "@opendaw/lib-dsp";
|
|
2
|
+
import { AudioData, bpm, ppqn } from "@opendaw/lib-dsp";
|
|
3
3
|
import { ClipNotification, EngineSettings, ExportStemsConfiguration, NoteSignal, PreferencesHost, ProcessorOptions } from "@opendaw/studio-adapters";
|
|
4
4
|
import { Engine } from "./Engine";
|
|
5
5
|
import { Project } from "./project";
|
|
@@ -16,6 +16,7 @@ export declare class EngineWorklet extends AudioWorkletNode implements Engine {
|
|
|
16
16
|
panic(): void;
|
|
17
17
|
sleep(): void;
|
|
18
18
|
wake(): void;
|
|
19
|
+
loadClickSound(index: 0 | 1, data: AudioData): void;
|
|
19
20
|
get isPlaying(): ObservableValue<boolean>;
|
|
20
21
|
get isRecording(): ObservableValue<boolean>;
|
|
21
22
|
get isCountingIn(): 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,
|
|
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,SAAS,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAIrD,OAAO,EACH,gBAAgB,EAIhB,cAAc,EAKd,wBAAwB,EACxB,UAAU,EACV,eAAe,EACf,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAIjC,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAsBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB,EAC9C,OAAO,CAAC,EAAE,gBAAgB;IAqItC,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;IACb,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IACZ,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAInD,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,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAqC;IACzF,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAmB;IAClD,IAAI,iBAAiB,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAiC;IACxF,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAC1F,IAAI,OAAO,IAAI,OAAO,CAAuB;IAC7C,IAAI,WAAW,IAAI,eAAe,CAAC,cAAc,CAAC,CAA2B;IAE7E,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;CAKpB"}
|
package/dist/EngineWorklet.js
CHANGED
|
@@ -3,7 +3,7 @@ import { SyncSource } from "@opendaw/lib-box";
|
|
|
3
3
|
import { AnimationFrame } from "@opendaw/lib-dom";
|
|
4
4
|
import { Communicator, Messenger } from "@opendaw/lib-runtime";
|
|
5
5
|
import { EngineSettingsSchema, EngineStateSchema, ExportStemsConfiguration, PreferencesHost } from "@opendaw/studio-adapters";
|
|
6
|
-
import { MIDIReceiver } from "./midi
|
|
6
|
+
import { MIDIReceiver } from "./midi";
|
|
7
7
|
export class EngineWorklet extends AudioWorkletNode {
|
|
8
8
|
static ID = 0 | 0;
|
|
9
9
|
id = EngineWorklet.ID++;
|
|
@@ -70,6 +70,9 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
70
70
|
panic() { dispatcher.dispatchAndForget(this.panic); }
|
|
71
71
|
sleep() { dispatcher.dispatchAndForget(this.sleep); }
|
|
72
72
|
wake() { dispatcher.dispatchAndForget(this.wake); }
|
|
73
|
+
loadClickSound(index, data) {
|
|
74
|
+
dispatcher.dispatchAndForget(this.loadClickSound, index, data);
|
|
75
|
+
}
|
|
73
76
|
noteSignal(signal) { dispatcher.dispatchAndForget(this.noteSignal, signal); }
|
|
74
77
|
ignoreNoteRegion(uuid) {
|
|
75
78
|
dispatcher.dispatchAndForget(this.ignoreNoteRegion, uuid);
|
|
@@ -85,7 +88,7 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
85
88
|
}
|
|
86
89
|
terminate() { dispatcher.dispatchAndForget(this.terminate); }
|
|
87
90
|
}));
|
|
88
|
-
const { port, sab } = this.#terminator.own(MIDIReceiver.create(context, (deviceId, data, relativeTimeInMs) => this.#project.receivedMIDIFromEngine(deviceId, data, relativeTimeInMs)));
|
|
91
|
+
const { port, sab } = this.#terminator.own(MIDIReceiver.create(() => context instanceof AudioContext ? context.outputLatency * 1000 : 20, (deviceId, data, relativeTimeInMs) => this.#project.receivedMIDIFromEngine(deviceId, data, relativeTimeInMs)));
|
|
89
92
|
this.#commands.setupMIDI(port, sab);
|
|
90
93
|
Communicator.executor(messenger.channel("engine-to-client"), {
|
|
91
94
|
log: (message) => console.log("WORKLET", message),
|
|
@@ -149,6 +152,9 @@ export class EngineWorklet extends AudioWorkletNode {
|
|
|
149
152
|
this.#commands.stop(true);
|
|
150
153
|
}
|
|
151
154
|
wake() { Atomics.store(this.#controlFlags, 0, 0); }
|
|
155
|
+
loadClickSound(index, data) {
|
|
156
|
+
this.#commands.loadClickSound(index, data);
|
|
157
|
+
}
|
|
152
158
|
get isPlaying() { return this.#isPlaying; }
|
|
153
159
|
get isRecording() { return this.#isRecording; }
|
|
154
160
|
get isCountingIn() { return this.#isCountingIn; }
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { int, Option, Progress } from "@opendaw/lib-std";
|
|
2
2
|
import { AudioData } from "@opendaw/lib-dsp";
|
|
3
|
-
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
|
3
|
+
import { ExportStemsConfiguration, OfflineEngineRenderConfig } from "@opendaw/studio-adapters";
|
|
4
4
|
import { Project } from "./project";
|
|
5
|
-
export declare
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export declare class OfflineEngineRenderer {
|
|
6
|
+
#private;
|
|
7
|
+
static install(url: string): void;
|
|
8
|
+
static getWorkerUrl(): string;
|
|
9
|
+
static create(source: Project, optExportConfiguration: Option<ExportStemsConfiguration>, sampleRate?: int): Promise<OfflineEngineRenderer>;
|
|
10
|
+
static start(source: Project, optExportConfiguration: Option<ExportStemsConfiguration>, progress: Progress.Handler, abortSignal?: AbortSignal, sampleRate?: int): Promise<AudioData>;
|
|
11
|
+
private constructor();
|
|
12
|
+
get sampleRate(): int;
|
|
13
|
+
get numberOfChannels(): int;
|
|
14
|
+
get totalFrames(): int;
|
|
15
|
+
play(): void;
|
|
16
|
+
stop(): void;
|
|
17
|
+
terminate(): void;
|
|
18
|
+
step(samples: int): Promise<Float32Array[]>;
|
|
19
|
+
render(config: OfflineEngineRenderConfig, progress: Progress.Handler, abortSignal?: AbortSignal): Promise<AudioData>;
|
|
9
20
|
}
|
|
10
21
|
//# sourceMappingURL=OfflineEngineRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfflineEngineRenderer.d.ts","sourceRoot":"","sources":["../src/OfflineEngineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAa,MAAM,EAAS,QAAQ,EAAmB,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAC,SAAS,EAAO,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAGH,wBAAwB,
|
|
1
|
+
{"version":3,"file":"OfflineEngineRenderer.d.ts","sourceRoot":"","sources":["../src/OfflineEngineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAa,MAAM,EAAS,QAAQ,EAAmB,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAC,SAAS,EAAO,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAGH,wBAAwB,EAIxB,yBAAyB,EAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAOjC,qBAAa,qBAAqB;;IAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKjC,MAAM,CAAC,YAAY,IAAI,MAAM;WAIhB,MAAM,CAAC,MAAM,EAAE,OAAO,EACf,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC,EACxD,UAAU,GAAE,GAAY,GACzC,OAAO,CAAC,qBAAqB,CAAC;WA8GpB,KAAK,CAAC,MAAM,EAAE,OAAO,EACf,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC,EACxD,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAC1B,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,GAAE,GAAY,GACxC,OAAO,CAAC,SAAS,CAAC;IAwBrB,OAAO;IAkBP,IAAI,UAAU,IAAI,GAAG,CAA0B;IAC/C,IAAI,gBAAgB,IAAI,GAAG,CAAgC;IAC3D,IAAI,WAAW,IAAI,GAAG,CAA2B;IAEjD,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAKZ,SAAS,IAAI,IAAI;IAKX,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAM3C,MAAM,CACR,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAC1B,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,SAAS,CAAC;CAkCxB"}
|
|
@@ -3,24 +3,23 @@ import { AudioData } from "@opendaw/lib-dsp";
|
|
|
3
3
|
import { Communicator, Messenger } from "@opendaw/lib-runtime";
|
|
4
4
|
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
|
5
5
|
import { AudioWorklets } from "./AudioWorklets";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import { MIDIReceiver } from "./midi";
|
|
7
|
+
let workerUrl = Option.None;
|
|
8
|
+
export class OfflineEngineRenderer {
|
|
9
|
+
static install(url) {
|
|
10
10
|
console.debug(`OfflineEngineWorkerUrl: '${url}'`);
|
|
11
11
|
workerUrl = Option.wrap(url);
|
|
12
|
-
}
|
|
13
|
-
|
|
12
|
+
}
|
|
13
|
+
static getWorkerUrl() {
|
|
14
14
|
return workerUrl.unwrap("OfflineEngineWorkerUrl is missing (call 'install' first)");
|
|
15
|
-
}
|
|
16
|
-
|
|
15
|
+
}
|
|
16
|
+
static async create(source, optExportConfiguration, sampleRate = 48_000) {
|
|
17
17
|
const numStems = ExportStemsConfiguration.countStems(optExportConfiguration);
|
|
18
18
|
if (numStems === 0) {
|
|
19
19
|
return panic("Nothing to export");
|
|
20
20
|
}
|
|
21
21
|
const numberOfChannels = numStems * 2;
|
|
22
|
-
const
|
|
23
|
-
const worker = new Worker(OfflineEngineRenderer.getWorkerUrl(), { type: "module" });
|
|
22
|
+
const worker = new Worker(this.getWorkerUrl(), { type: "module" });
|
|
24
23
|
const messenger = Messenger.for(worker);
|
|
25
24
|
const protocol = Communicator.sender(messenger.channel("offline-engine"), dispatcher => new class {
|
|
26
25
|
initialize(enginePort, progressPort, config) {
|
|
@@ -39,11 +38,6 @@ export var OfflineEngineRenderer;
|
|
|
39
38
|
const syncStreamBuffer = new SharedArrayBuffer(1024);
|
|
40
39
|
const controlFlagsBuffer = new SharedArrayBuffer(4);
|
|
41
40
|
const terminator = new Terminator();
|
|
42
|
-
const projectCopy = source.copy();
|
|
43
|
-
const { timelineBox, boxGraph } = projectCopy;
|
|
44
|
-
boxGraph.beginTransaction();
|
|
45
|
-
timelineBox.loopArea.enabled.setValue(false);
|
|
46
|
-
boxGraph.endTransaction();
|
|
47
41
|
const engineMessenger = Messenger.for(channel.port2);
|
|
48
42
|
Communicator.executor(engineMessenger.channel("engine-to-client"), {
|
|
49
43
|
log: (message) => console.log("OFFLINE-ENGINE", message),
|
|
@@ -91,51 +85,104 @@ export var OfflineEngineRenderer;
|
|
|
91
85
|
scheduleClipPlay(clipIds) { dispatcher.dispatchAndForget(this.scheduleClipPlay, clipIds); }
|
|
92
86
|
scheduleClipStop(trackIds) { dispatcher.dispatchAndForget(this.scheduleClipStop, trackIds); }
|
|
93
87
|
setupMIDI(port, buffer) { dispatcher.dispatchAndForget(this.setupMIDI, port, buffer); }
|
|
88
|
+
loadClickSound(index, data) { dispatcher.dispatchAndForget(this.loadClickSound, index, data); }
|
|
94
89
|
terminate() { dispatcher.dispatchAndForget(this.terminate); }
|
|
95
90
|
});
|
|
96
91
|
channel.port2.start();
|
|
97
92
|
progressChannel.port2.start();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
abortSignal.onabort = () => {
|
|
101
|
-
engineCommands.stop(true);
|
|
102
|
-
protocol.stop();
|
|
103
|
-
terminator.terminate();
|
|
104
|
-
worker.terminate();
|
|
105
|
-
cancelled = true;
|
|
106
|
-
reject(Errors.AbortError);
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
progressChannel.port2.onmessage = (event) => progress(event.data.frames / sampleRate);
|
|
93
|
+
terminator.own(source.liveStreamReceiver.connect(engineMessenger.channel("engine-live-data")));
|
|
94
|
+
const { port, sab } = terminator.own(MIDIReceiver.create(() => 0, (deviceId, data, relativeTimeInMs) => source.receivedMIDIFromEngine(deviceId, data, relativeTimeInMs)));
|
|
110
95
|
await protocol.initialize(channel.port1, progressChannel.port1, {
|
|
111
96
|
sampleRate,
|
|
112
97
|
numberOfChannels,
|
|
113
98
|
processorsUrl: AudioWorklets.processorsUrl,
|
|
114
99
|
syncStreamBuffer,
|
|
115
100
|
controlFlagsBuffer,
|
|
116
|
-
project:
|
|
101
|
+
project: source.toArrayBuffer(),
|
|
117
102
|
exportConfiguration: optExportConfiguration.unwrapOrUndefined()
|
|
118
103
|
});
|
|
119
|
-
engineCommands.
|
|
120
|
-
protocol.
|
|
104
|
+
engineCommands.setupMIDI(port, sab);
|
|
105
|
+
return new OfflineEngineRenderer(worker, protocol, engineCommands, terminator, progressChannel.port2, sampleRate, numberOfChannels);
|
|
106
|
+
}
|
|
107
|
+
static async start(source, optExportConfiguration, progress, abortSignal, sampleRate = 48_000) {
|
|
108
|
+
const { timelineBox: { loopArea: { enabled } }, boxGraph } = source;
|
|
109
|
+
const wasEnabled = enabled.getValue();
|
|
110
|
+
boxGraph.beginTransaction();
|
|
111
|
+
enabled.setValue(false);
|
|
112
|
+
boxGraph.endTransaction();
|
|
113
|
+
const renderer = await this.create(source, optExportConfiguration, sampleRate);
|
|
114
|
+
const result = await renderer.render({}, progress, abortSignal);
|
|
115
|
+
boxGraph.beginTransaction();
|
|
116
|
+
enabled.setValue(wasEnabled);
|
|
117
|
+
boxGraph.endTransaction();
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
#worker;
|
|
121
|
+
#protocol;
|
|
122
|
+
#engineCommands;
|
|
123
|
+
#terminator;
|
|
124
|
+
#progressPort;
|
|
125
|
+
#sampleRate;
|
|
126
|
+
#numberOfChannels;
|
|
127
|
+
#totalFrames = 0;
|
|
128
|
+
constructor(worker, protocol, engineCommands, terminator, progressPort, sampleRate, numberOfChannels) {
|
|
129
|
+
this.#worker = worker;
|
|
130
|
+
this.#protocol = protocol;
|
|
131
|
+
this.#engineCommands = engineCommands;
|
|
132
|
+
this.#terminator = terminator;
|
|
133
|
+
this.#progressPort = progressPort;
|
|
134
|
+
this.#sampleRate = sampleRate;
|
|
135
|
+
this.#numberOfChannels = numberOfChannels;
|
|
136
|
+
}
|
|
137
|
+
get sampleRate() { return this.#sampleRate; }
|
|
138
|
+
get numberOfChannels() { return this.#numberOfChannels; }
|
|
139
|
+
get totalFrames() { return this.#totalFrames; }
|
|
140
|
+
play() {
|
|
141
|
+
this.#engineCommands.play();
|
|
142
|
+
}
|
|
143
|
+
stop() {
|
|
144
|
+
this.#engineCommands.stop(true);
|
|
145
|
+
this.#protocol.stop();
|
|
146
|
+
}
|
|
147
|
+
terminate() {
|
|
148
|
+
this.#terminator.terminate();
|
|
149
|
+
this.#worker.terminate();
|
|
150
|
+
}
|
|
151
|
+
async step(samples) {
|
|
152
|
+
const channels = await this.#protocol.step(samples);
|
|
153
|
+
this.#totalFrames += samples;
|
|
154
|
+
return channels;
|
|
155
|
+
}
|
|
156
|
+
async render(config, progress, abortSignal) {
|
|
157
|
+
const { promise, reject, resolve } = Promise.withResolvers();
|
|
158
|
+
let cancelled = false;
|
|
159
|
+
if (isDefined(abortSignal)) {
|
|
160
|
+
abortSignal.onabort = () => {
|
|
161
|
+
this.stop();
|
|
162
|
+
this.terminate();
|
|
163
|
+
cancelled = true;
|
|
164
|
+
reject(Errors.AbortError);
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
this.#progressPort.onmessage = (event) => progress(event.data.frames / this.#sampleRate);
|
|
168
|
+
this.play();
|
|
169
|
+
this.#protocol.render(config).then(channels => {
|
|
121
170
|
if (cancelled) {
|
|
122
171
|
return;
|
|
123
172
|
}
|
|
124
|
-
|
|
125
|
-
worker.terminate();
|
|
173
|
+
this.terminate();
|
|
126
174
|
const numberOfFrames = channels[0].length;
|
|
127
|
-
const audioData = AudioData.create(sampleRate, numberOfFrames, numberOfChannels);
|
|
128
|
-
for (let channelIndex = 0; channelIndex < numberOfChannels; channelIndex++) {
|
|
175
|
+
const audioData = AudioData.create(this.#sampleRate, numberOfFrames, this.#numberOfChannels);
|
|
176
|
+
for (let channelIndex = 0; channelIndex < this.#numberOfChannels; channelIndex++) {
|
|
129
177
|
audioData.frames[channelIndex].set(channels[channelIndex]);
|
|
130
178
|
}
|
|
131
179
|
resolve(audioData);
|
|
132
180
|
}).catch(reason => {
|
|
133
181
|
if (!cancelled) {
|
|
134
|
-
|
|
135
|
-
worker.terminate();
|
|
182
|
+
this.terminate();
|
|
136
183
|
reject(reason);
|
|
137
184
|
}
|
|
138
185
|
});
|
|
139
186
|
return promise;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenDAWHeaders.d.ts","sourceRoot":"","sources":["../src/OpenDAWHeaders.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,QAAkC,CAAA;AAChE,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"OpenDAWHeaders.d.ts","sourceRoot":"","sources":["../src/OpenDAWHeaders.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,QAAkC,CAAA;AAChE,eAAO,MAAM,cAAc,EAAE,WAG5B,CAAA"}
|
package/dist/OpenDAWHeaders.js
CHANGED
|
@@ -3,6 +3,5 @@ const password = "prototype";
|
|
|
3
3
|
export const base64Credentials = btoa(`${username}:${password}`);
|
|
4
4
|
export const OpenDAWHeaders = {
|
|
5
5
|
method: "GET",
|
|
6
|
-
headers: { "Authorization": `Basic ${base64Credentials}` }
|
|
7
|
-
credentials: "include"
|
|
6
|
+
headers: { "Authorization": `Basic ${base64Credentials}` }
|
|
8
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,GAAG,EAEH,QAAQ,EACR,MAAM,EAGN,YAAY,EACZ,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,SAAS,EAAW,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAC,KAAK,EAAc,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAEH,UAAU,EACV,YAAY,EACZ,iBAAiB,EAEpB,MAAM,0BAA0B,CAAA;AAMjC,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU,EAAE,YAAY;;IAGtF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAkB;gBAa/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;IAuBhE,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAE3C,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAEvB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAE/B,IAAI,cAAc,IAAI,GAAG,CAA6C;IACtE,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAoB;IACjD,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAA6E;IACvG,IAAI,KAAK,IAAI,iBAAiB,CAAqB;IAEnD,UAAU,IAAI,IAAI;IAElB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAQ9D,SAAS,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,GAAG,EAEH,QAAQ,EACR,MAAM,EAGN,YAAY,EACZ,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,SAAS,EAAW,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAC,KAAK,EAAc,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAEH,UAAU,EACV,YAAY,EACZ,iBAAiB,EAEpB,MAAM,0BAA0B,CAAA;AAMjC,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU,EAAE,YAAY;;IAGtF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAkB;gBAa/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;IAuBhE,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAE3C,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAEvB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAE/B,IAAI,cAAc,IAAI,GAAG,CAA6C;IACtE,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAoB;IACjD,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAA6E;IACvG,IAAI,KAAK,IAAI,iBAAiB,CAAqB;IAEnD,UAAU,IAAI,IAAI;IAElB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAQ9D,SAAS,IAAI,IAAI;IAMjB,QAAQ,IAAI,MAAM;CAqCrB"}
|
package/dist/RecordingWorklet.js
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
export declare const StudioPreferences: import("@opendaw/lib-fusion").PreferencesHost<{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"footer-show-fps-meter": boolean;
|
|
9
|
-
"footer-show-samples-memory": boolean;
|
|
10
|
-
"footer-show-build-infos": boolean;
|
|
11
|
-
"normalize-mouse-wheel": boolean;
|
|
2
|
+
visibility: {
|
|
3
|
+
"visible-help-hints": boolean;
|
|
4
|
+
"enable-history-buttons": boolean;
|
|
5
|
+
"auto-open-clips": boolean;
|
|
6
|
+
"scrollbar-padding": boolean;
|
|
7
|
+
};
|
|
12
8
|
"time-display": {
|
|
13
9
|
musical: boolean;
|
|
14
10
|
absolute: boolean;
|
|
15
11
|
details: boolean;
|
|
16
12
|
fps: 30 | 24 | 25 | 29.97;
|
|
17
13
|
};
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
engine: {
|
|
15
|
+
"note-audition-while-editing": boolean;
|
|
16
|
+
"auto-create-output-compressor": boolean;
|
|
17
|
+
};
|
|
18
|
+
pointer: {
|
|
19
|
+
"dragging-use-pointer-lock": boolean;
|
|
20
|
+
"modifying-controls-wheel": boolean;
|
|
21
|
+
"normalize-mouse-wheel": boolean;
|
|
22
|
+
};
|
|
23
|
+
debug: {
|
|
24
|
+
"footer-show-fps-meter": boolean;
|
|
25
|
+
"footer-show-samples-memory": boolean;
|
|
26
|
+
"footer-show-build-infos": boolean;
|
|
27
|
+
"enable-beta-features": boolean;
|
|
28
|
+
"enable-debug-menu": boolean;
|
|
29
|
+
};
|
|
20
30
|
}>;
|
|
21
31
|
//# sourceMappingURL=StudioPreferences.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudioPreferences.d.ts","sourceRoot":"","sources":["../src/StudioPreferences.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"StudioPreferences.d.ts","sourceRoot":"","sources":["../src/StudioPreferences.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwD,CAAA"}
|
package/dist/StudioSettings.d.ts
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const FpsOptions: readonly [24, 25, 29.97, 30];
|
|
3
3
|
export declare const StudioSettingsSchema: z.ZodObject<{
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"footer-show-fps-meter": z.ZodDefault<z.ZodBoolean>;
|
|
11
|
-
"footer-show-samples-memory": z.ZodDefault<z.ZodBoolean>;
|
|
12
|
-
"footer-show-build-infos": z.ZodDefault<z.ZodBoolean>;
|
|
13
|
-
"normalize-mouse-wheel": z.ZodDefault<z.ZodBoolean>;
|
|
4
|
+
visibility: z.ZodDefault<z.ZodObject<{
|
|
5
|
+
"visible-help-hints": z.ZodBoolean;
|
|
6
|
+
"enable-history-buttons": z.ZodBoolean;
|
|
7
|
+
"auto-open-clips": z.ZodBoolean;
|
|
8
|
+
"scrollbar-padding": z.ZodBoolean;
|
|
9
|
+
}, z.core.$strip>>;
|
|
14
10
|
"time-display": z.ZodDefault<z.ZodObject<{
|
|
15
11
|
musical: z.ZodBoolean;
|
|
16
12
|
absolute: z.ZodBoolean;
|
|
17
13
|
details: z.ZodBoolean;
|
|
18
14
|
fps: z.ZodUnion<z.ZodLiteral<30 | 24 | 25 | 29.97>[]>;
|
|
19
15
|
}, z.core.$strip>>;
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
engine: z.ZodDefault<z.ZodObject<{
|
|
17
|
+
"note-audition-while-editing": z.ZodBoolean;
|
|
18
|
+
"auto-create-output-compressor": z.ZodBoolean;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
pointer: z.ZodDefault<z.ZodObject<{
|
|
21
|
+
"dragging-use-pointer-lock": z.ZodBoolean;
|
|
22
|
+
"modifying-controls-wheel": z.ZodBoolean;
|
|
23
|
+
"normalize-mouse-wheel": z.ZodBoolean;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
debug: z.ZodDefault<z.ZodObject<{
|
|
26
|
+
"footer-show-fps-meter": z.ZodBoolean;
|
|
27
|
+
"footer-show-samples-memory": z.ZodBoolean;
|
|
28
|
+
"footer-show-build-infos": z.ZodBoolean;
|
|
29
|
+
"enable-beta-features": z.ZodBoolean;
|
|
30
|
+
"enable-debug-menu": z.ZodBoolean;
|
|
31
|
+
}, z.core.$strip>>;
|
|
22
32
|
}, z.core.$strip>;
|
|
23
33
|
export type StudioSettings = z.infer<typeof StudioSettingsSchema>;
|
|
24
34
|
//# sourceMappingURL=StudioSettings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StudioSettings.d.ts","sourceRoot":"","sources":["../src/StudioSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"StudioSettings.d.ts","sourceRoot":"","sources":["../src/StudioSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAGrB,eAAO,MAAM,UAAU,8BAA+B,CAAA;AAEtD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+C/B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
package/dist/StudioSettings.js
CHANGED
|
@@ -1,22 +1,51 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { Browser } from "@opendaw/lib-dom";
|
|
2
3
|
export const FpsOptions = [24, 25, 29.97, 30];
|
|
3
4
|
export const StudioSettingsSchema = z.object({
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
"visibility": z.object({
|
|
6
|
+
"visible-help-hints": z.boolean(),
|
|
7
|
+
"enable-history-buttons": z.boolean(),
|
|
8
|
+
"auto-open-clips": z.boolean(),
|
|
9
|
+
"scrollbar-padding": z.boolean()
|
|
10
|
+
}).default({
|
|
11
|
+
"visible-help-hints": true,
|
|
12
|
+
"enable-history-buttons": navigator.maxTouchPoints > 0,
|
|
13
|
+
"auto-open-clips": true,
|
|
14
|
+
"scrollbar-padding": Browser.isWindows()
|
|
15
|
+
}),
|
|
14
16
|
"time-display": z.object({
|
|
15
17
|
"musical": z.boolean(),
|
|
16
18
|
"absolute": z.boolean(),
|
|
17
19
|
"details": z.boolean(),
|
|
18
20
|
"fps": z.union(FpsOptions.map(value => z.literal(value)))
|
|
19
21
|
}).default({ musical: true, absolute: false, details: false, fps: 25 }),
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
+
"engine": z.object({
|
|
23
|
+
"note-audition-while-editing": z.boolean(),
|
|
24
|
+
"auto-create-output-compressor": z.boolean()
|
|
25
|
+
}).default({
|
|
26
|
+
"note-audition-while-editing": true,
|
|
27
|
+
"auto-create-output-compressor": true
|
|
28
|
+
}),
|
|
29
|
+
"pointer": z.object({
|
|
30
|
+
"dragging-use-pointer-lock": z.boolean(),
|
|
31
|
+
"modifying-controls-wheel": z.boolean(),
|
|
32
|
+
"normalize-mouse-wheel": z.boolean()
|
|
33
|
+
}).default({
|
|
34
|
+
"dragging-use-pointer-lock": false,
|
|
35
|
+
"modifying-controls-wheel": false,
|
|
36
|
+
"normalize-mouse-wheel": true
|
|
37
|
+
}),
|
|
38
|
+
"debug": z.object({
|
|
39
|
+
"footer-show-fps-meter": z.boolean(),
|
|
40
|
+
"footer-show-samples-memory": z.boolean(),
|
|
41
|
+
"footer-show-build-infos": z.boolean(),
|
|
42
|
+
"enable-beta-features": z.boolean(),
|
|
43
|
+
"enable-debug-menu": z.boolean()
|
|
44
|
+
}).default({
|
|
45
|
+
"footer-show-fps-meter": false,
|
|
46
|
+
"footer-show-samples-memory": false,
|
|
47
|
+
"footer-show-build-infos": false,
|
|
48
|
+
"enable-beta-features": false,
|
|
49
|
+
"enable-debug-menu": false
|
|
50
|
+
})
|
|
22
51
|
});
|
package/dist/WavFile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WavFile.d.ts","sourceRoot":"","sources":["../src/WavFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAQ,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAE1C,yBAAiB,OAAO,CAAC;IAMd,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,
|
|
1
|
+
{"version":3,"file":"WavFile.d.ts","sourceRoot":"","sources":["../src/WavFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,GAAG,EAAQ,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAE1C,yBAAiB,OAAO,CAAC;IAMd,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,SAgElD,CAAA;IAEM,MAAM,YAAY,GAAI,OAAO,SAAS,GAAG,WAAW,EAAE,YAAW,GAA6B,KAAG,WAwCvG,CAAA;CACJ"}
|