@opendaw/studio-core 0.0.6 → 0.0.8
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/EngineWorklet.d.ts +0 -2
- package/dist/EngineWorklet.d.ts.map +1 -1
- package/dist/EngineWorklet.js +0 -4
- package/dist/MeterWorklet.d.ts +1 -4
- package/dist/MeterWorklet.d.ts.map +1 -1
- package/dist/MeterWorklet.js +1 -8
- package/dist/Project.d.ts +2 -2
- package/dist/Project.d.ts.map +1 -1
- package/dist/Project.js +1 -1
- package/dist/ProjectEnv.d.ts +2 -2
- package/dist/ProjectEnv.d.ts.map +1 -1
- package/dist/RecordingWorklet.d.ts +2 -5
- package/dist/RecordingWorklet.d.ts.map +1 -1
- package/dist/RecordingWorklet.js +2 -13
- package/dist/RenderQuantum.d.ts +2 -0
- package/dist/RenderQuantum.d.ts.map +1 -0
- package/dist/RenderQuantum.js +1 -0
- package/dist/WorkerAgents.d.ts +10 -0
- package/dist/WorkerAgents.d.ts.map +1 -0
- package/dist/WorkerAgents.js +45 -0
- package/dist/Worklets.d.ts +3 -9
- package/dist/Worklets.d.ts.map +1 -1
- package/dist/Worklets.js +13 -18
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/processors.js +6 -0
- package/dist/processors.js.map +7 -0
- package/dist/samples/MainThreadSampleLoader.d.ts +18 -0
- package/dist/samples/MainThreadSampleLoader.d.ts.map +1 -0
- package/dist/samples/MainThreadSampleLoader.js +122 -0
- package/dist/samples/MainThreadSampleManager.d.ts +13 -0
- package/dist/samples/MainThreadSampleManager.d.ts.map +1 -0
- package/dist/samples/MainThreadSampleManager.js +20 -0
- package/dist/samples/SamplePeaks.d.ts +6 -0
- package/dist/samples/SamplePeaks.d.ts.map +1 -0
- package/dist/samples/SamplePeaks.js +9 -0
- package/dist/samples/SampleProvider.d.ts +6 -0
- package/dist/samples/SampleProvider.d.ts.map +1 -0
- package/dist/samples/SampleProvider.js +1 -0
- package/dist/samples/SampleStorage.d.ts +13 -0
- package/dist/samples/SampleStorage.d.ts.map +1 -0
- package/dist/samples/SampleStorage.js +54 -0
- package/dist/workers.js +4 -0
- package/dist/workers.js.map +7 -0
- package/package.json +20 -21
- package/dist/WorkletFactory.d.ts +0 -8
- package/dist/WorkletFactory.d.ts.map +0 -1
- package/dist/WorkletFactory.js +0 -9
- package/dist/engine-processor.js +0 -6
- package/dist/engine-processor.js.map +0 -7
- package/dist/meter-processor.js +0 -2
- package/dist/meter-processor.js.map +0 -7
- package/dist/recording-processor.js +0 -4
- package/dist/recording-processor.js.map +0 -7
package/dist/EngineWorklet.d.ts
CHANGED
@@ -2,10 +2,8 @@ import { byte, DefaultObservableValue, int, MutableObservableValue, Nullable, Ob
|
|
2
2
|
import { ppqn } from "@opendaw/lib-dsp";
|
3
3
|
import { ClipNotification, ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
4
4
|
import { Project } from "./Project";
|
5
|
-
import { WorkletFactory } from "./WorkletFactory";
|
6
5
|
export declare class EngineWorklet extends AudioWorkletNode {
|
7
6
|
#private;
|
8
|
-
static bootFactory(context: BaseAudioContext, url: string): Promise<WorkletFactory<EngineWorklet>>;
|
9
7
|
static ID: int;
|
10
8
|
readonly id: number;
|
11
9
|
constructor(context: BaseAudioContext, project: Readonly<Project>, exportConfiguration?: ExportStemsConfiguration);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,IAAI,EACJ,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,QAAQ,EAER,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EAC3B,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;
|
1
|
+
{"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,IAAI,EACJ,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,QAAQ,EAER,YAAY,EAGZ,SAAS,EACT,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EAC3B,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,qBAAa,aAAc,SAAQ,gBAAgB;;IAC/C,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAgBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC1B,mBAAmB,CAAC,EAAE,wBAAwB;IA2G1D,IAAI,IAAI,IAAI;IASZ,KAAK,IAAI,IAAI;IACb,SAAS,IAAI,sBAAsB,CAAC,OAAO,CAAC;IAC5C,WAAW,IAAI,sBAAsB,CAAC,OAAO,CAAC;IAC9C,iBAAiB,IAAI,sBAAsB,CAAC,MAAM,CAAC;IACnD,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC;IACxC,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC;IACnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI;IACjE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI;IAC7C,gBAAgB,CAAC,GAAG,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAK9D,gBAAgB,CAAC,GAAG,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAG/D,eAAe,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAIrC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAQ7E,WAAW,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAInE,SAAS,IAAI,IAAI;CAKpB"}
|
package/dist/EngineWorklet.js
CHANGED
@@ -3,11 +3,7 @@ import { EngineStateSchema, ExportStemsConfiguration } from "@opendaw/studio-ada
|
|
3
3
|
import { SyncSource } from "@opendaw/lib-box";
|
4
4
|
import { AnimationFrame } from "@opendaw/lib-dom";
|
5
5
|
import { Communicator, Messenger } from "@opendaw/lib-runtime";
|
6
|
-
import { WorkletFactory } from "./WorkletFactory";
|
7
6
|
export class EngineWorklet extends AudioWorkletNode {
|
8
|
-
static bootFactory(context, url) {
|
9
|
-
return WorkletFactory.boot(context, url);
|
10
|
-
}
|
11
7
|
static ID = 0 | 0;
|
12
8
|
id = EngineWorklet.ID++;
|
13
9
|
#terminator = new Terminator();
|
package/dist/MeterWorklet.d.ts
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
import { int, Observer, Subscription, Terminable } from "@opendaw/lib-std";
|
2
|
-
import { WorkletFactory } from "./WorkletFactory";
|
3
2
|
export type PeakSchema = {
|
4
3
|
peak: Float32Array;
|
5
4
|
rms: Float32Array;
|
6
5
|
};
|
7
6
|
export declare class MeterWorklet extends AudioWorkletNode implements Terminable {
|
8
7
|
#private;
|
9
|
-
|
10
|
-
static create(factory: WorkletFactory<MeterWorklet>, numChannels: int): MeterWorklet;
|
11
|
-
private constructor();
|
8
|
+
constructor(context: BaseAudioContext, numberOfChannels: int);
|
12
9
|
subscribe(observer: Observer<PeakSchema>): Subscription;
|
13
10
|
terminate(): void;
|
14
11
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MeterWorklet.d.ts","sourceRoot":"","sources":["../src/MeterWorklet.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"MeterWorklet.d.ts","sourceRoot":"","sources":["../src/MeterWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAY,QAAQ,EAAU,YAAY,EAAc,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAIlH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAA;AAElE,qBAAa,YAAa,SAAQ,gBAAiB,YAAW,UAAU;;gBAIxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG;IAmB5D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAEvD,SAAS,IAAI,IAAI;CACpB"}
|
package/dist/MeterWorklet.js
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
import { Notifier, Schema, SyncStream, Terminator } from "@opendaw/lib-std";
|
2
2
|
import { AnimationFrame } from "@opendaw/lib-dom";
|
3
|
-
import { WorkletFactory } from "./WorkletFactory";
|
4
3
|
export class MeterWorklet extends AudioWorkletNode {
|
5
|
-
static async bootFactory(context, url) {
|
6
|
-
return WorkletFactory.boot(context, url);
|
7
|
-
}
|
8
|
-
static create(factory, numChannels) {
|
9
|
-
return factory.create(context => new MeterWorklet(context, numChannels));
|
10
|
-
}
|
11
4
|
#terminator = new Terminator();
|
12
5
|
#notifier = new Notifier();
|
13
6
|
constructor(context, numberOfChannels) {
|
@@ -15,7 +8,7 @@ export class MeterWorklet extends AudioWorkletNode {
|
|
15
8
|
peak: Schema.floats(numberOfChannels),
|
16
9
|
rms: Schema.floats(numberOfChannels)
|
17
10
|
})(), (data) => this.#notifier.notify(data));
|
18
|
-
super(context, "
|
11
|
+
super(context, "meter-processor", {
|
19
12
|
numberOfInputs: 1,
|
20
13
|
channelCount: numberOfChannels,
|
21
14
|
channelCountMode: "explicit",
|
package/dist/Project.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Terminable, TerminableOwner, Terminator } from "@opendaw/lib-std";
|
2
2
|
import { BoxGraph, Editing } from "@opendaw/lib-box";
|
3
3
|
import { AudioBusBox, AudioUnitBox, BoxIO, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
|
4
|
-
import {
|
4
|
+
import { SampleManager, BoxAdapters, BoxAdaptersContext, ClipSequencing, ParameterFieldAdapters, RootBoxAdapter, TimelineBoxAdapter, UserEditingManager, VertexSelection } from "@opendaw/studio-adapters";
|
5
5
|
import { LiveStreamBroadcaster, LiveStreamReceiver } from "@opendaw/lib-fusion";
|
6
6
|
import { ProjectEnv } from "./ProjectEnv";
|
7
7
|
import { Mixer } from "./Mixer";
|
@@ -29,7 +29,7 @@ export declare class Project implements BoxAdaptersContext, Terminable, Terminab
|
|
29
29
|
get bpm(): number;
|
30
30
|
get rootBoxAdapter(): RootBoxAdapter;
|
31
31
|
get timelineBoxAdapter(): TimelineBoxAdapter;
|
32
|
-
get audioManager():
|
32
|
+
get audioManager(): SampleManager;
|
33
33
|
get clipSequencing(): ClipSequencing;
|
34
34
|
get isAudioContext(): boolean;
|
35
35
|
get isMainThread(): boolean;
|
package/dist/Project.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../src/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,UAAU,EACV,eAAe,EACf,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAClD,OAAO,EACH,WAAW,EACX,YAAY,EACZ,KAAK,EAGL,OAAO,EACP,WAAW,EACX,gBAAgB,EAInB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,
|
1
|
+
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../src/Project.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,UAAU,EACV,eAAe,EACf,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAClD,OAAO,EACH,WAAW,EACX,YAAY,EACZ,KAAK,EAGL,OAAO,EACP,WAAW,EACX,gBAAgB,EAInB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACH,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,cAAc,EAGd,sBAAsB,EAEtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAI7B,qBAAa,OAAQ,YAAW,kBAAkB,EAAE,UAAU,EAAE,eAAe;;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAuCpC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO;IA8D/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IAEjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAA;IACvD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IAErB,OAAO;IA6BP,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAC5D,KAAK,IAAI,UAAU;IAEnB,IAAI,GAAG,IAAI,MAAM,CAAyC;IAC1D,IAAI,cAAc,IAAI,cAAc,CAAmE;IACvG,IAAI,kBAAkB,IAAI,kBAAkB,CAA2E;IACvH,IAAI,YAAY,IAAI,aAAa,CAAiC;IAClE,IAAI,cAAc,IAAI,cAAc,CAAkD;IACtF,IAAI,cAAc,IAAI,OAAO,CAAe;IAC5C,IAAI,YAAY,IAAI,OAAO,CAAc;IACzC,IAAI,qBAAqB,IAAI,qBAAqB,CAAkD;IAEpG,aAAa,IAAI,eAAe;IAiBhC,IAAI,IAAI,OAAO;IAEf,SAAS,IAAI,IAAI;CACpB"}
|
package/dist/Project.js
CHANGED
@@ -147,7 +147,7 @@ export class Project {
|
|
147
147
|
get bpm() { return this.timelineBox.bpm.getValue(); }
|
148
148
|
get rootBoxAdapter() { return this.boxAdapters.adapterFor(this.rootBox, RootBoxAdapter); }
|
149
149
|
get timelineBoxAdapter() { return this.boxAdapters.adapterFor(this.timelineBox, TimelineBoxAdapter); }
|
150
|
-
get audioManager() { return this.#env.
|
150
|
+
get audioManager() { return this.#env.sampleManager; }
|
151
151
|
get clipSequencing() { return panic("Only available in audio context"); }
|
152
152
|
get isAudioContext() { return false; }
|
153
153
|
get isMainThread() { return true; }
|
package/dist/ProjectEnv.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { SampleManager } from "@opendaw/studio-adapters";
|
2
2
|
export interface ProjectEnv {
|
3
|
-
|
3
|
+
sampleManager: SampleManager;
|
4
4
|
}
|
5
5
|
//# sourceMappingURL=ProjectEnv.d.ts.map
|
package/dist/ProjectEnv.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ProjectEnv.d.ts","sourceRoot":"","sources":["../src/ProjectEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"ProjectEnv.d.ts","sourceRoot":"","sources":["../src/ProjectEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAA;AAEtD,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,aAAa,CAAA;CAC/B"}
|
@@ -1,9 +1,6 @@
|
|
1
|
-
import {
|
2
|
-
import { WorkletFactory } from "./WorkletFactory";
|
1
|
+
import { RingBuffer } from "@opendaw/studio-adapters";
|
3
2
|
export declare class RecordingWorklet extends AudioWorkletNode {
|
4
3
|
#private;
|
5
|
-
|
6
|
-
static create(factory: WorkletFactory<RecordingWorklet>, numChannels: int, numChunks?: int): RecordingWorklet;
|
7
|
-
private constructor();
|
4
|
+
constructor(context: BaseAudioContext, config: RingBuffer.Config);
|
8
5
|
}
|
9
6
|
//# sourceMappingURL=RecordingWorklet.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAC,MAAM,0BAA0B,CAAA;AAIrE,qBAAa,gBAAiB,SAAQ,gBAAgB;;gBAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;CAuBnE"}
|
package/dist/RecordingWorklet.js
CHANGED
@@ -1,25 +1,14 @@
|
|
1
1
|
import { EmptyExec } from "@opendaw/lib-std";
|
2
2
|
import { Files } from "@opendaw/lib-dom";
|
3
3
|
import { mergeChunkPlanes, RingBuffer } from "@opendaw/studio-adapters";
|
4
|
-
import { WorkletFactory } from "./WorkletFactory";
|
5
4
|
import { encodeWavFloat } from "./Wav";
|
6
|
-
|
5
|
+
import { RenderQuantum } from "./RenderQuantum";
|
7
6
|
export class RecordingWorklet extends AudioWorkletNode {
|
8
|
-
static async bootFactory(context, url) {
|
9
|
-
return WorkletFactory.boot(context, url);
|
10
|
-
}
|
11
|
-
static create(factory, numChannels, numChunks = 64) {
|
12
|
-
const audioBytes = numChannels * numChunks * RenderQuantum * Float32Array.BYTES_PER_ELEMENT;
|
13
|
-
const pointerBytes = Int32Array.BYTES_PER_ELEMENT * 2;
|
14
|
-
const sab = new SharedArrayBuffer(audioBytes + pointerBytes);
|
15
|
-
const buffer = { sab, numChunks, numChannels, bufferSize: RenderQuantum };
|
16
|
-
return factory.create(context => new RecordingWorklet(context, buffer));
|
17
|
-
}
|
18
7
|
#reader;
|
19
8
|
constructor(context, config) {
|
20
9
|
super(context, "recording-processor", {
|
21
10
|
numberOfInputs: 1,
|
22
|
-
channelCount: config.
|
11
|
+
channelCount: config.numberOfChannels,
|
23
12
|
channelCountMode: "explicit",
|
24
13
|
processorOptions: config
|
25
14
|
});
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"RenderQuantum.d.ts","sourceRoot":"","sources":["../src/RenderQuantum.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,MAAM,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export const RenderQuantum = 128;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { Option } from "@opendaw/lib-std";
|
2
|
+
import type { OpfsProtocol, PeakProtocol } from "@opendaw/lib-fusion";
|
3
|
+
import { Messenger } from "@opendaw/lib-runtime";
|
4
|
+
export declare class WorkerAgents {
|
5
|
+
static install(workerURL: string): void;
|
6
|
+
static messenger: Option<Messenger>;
|
7
|
+
static get Peak(): PeakProtocol;
|
8
|
+
static get Opfs(): OpfsProtocol;
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=WorkerAgents.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"WorkerAgents.d.ts","sourceRoot":"","sources":["../src/WorkerAgents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAY,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,qBAAqB,CAAA;AAEnE,OAAO,EAAe,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAE5D,qBAAa,YAAY;IACrB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKvC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAc;IAGjD,MAAM,KAAK,IAAI,IAAI,YAAY,CAa9B;IAGD,MAAM,KAAK,IAAI,IAAI,YAAY,CAS9B;CACJ"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
+
};
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
9
|
+
};
|
10
|
+
import { Lazy, Option } from "@opendaw/lib-std";
|
11
|
+
import { Communicator, Messenger } from "@opendaw/lib-runtime";
|
12
|
+
export class WorkerAgents {
|
13
|
+
static install(workerURL) {
|
14
|
+
console.debug("workerURL", workerURL);
|
15
|
+
this.messenger = Option.wrap(Messenger.for(new Worker(workerURL, { type: "module" })));
|
16
|
+
}
|
17
|
+
static messenger = Option.None;
|
18
|
+
static get Peak() {
|
19
|
+
return Communicator
|
20
|
+
.sender(this.messenger.unwrap("WorkerAgents are not installed").channel("peaks"), router => new class {
|
21
|
+
async generateAsync(progress, shifts, frames, numFrames, numChannels) {
|
22
|
+
return router.dispatchAndReturn(this.generateAsync, progress, shifts, frames, numFrames, numChannels);
|
23
|
+
}
|
24
|
+
});
|
25
|
+
}
|
26
|
+
static get Opfs() {
|
27
|
+
return Communicator
|
28
|
+
.sender(this.messenger.unwrap("WorkerAgents are not installed").channel("opfs"), router => new class {
|
29
|
+
write(path, data) { return router.dispatchAndReturn(this.write, path, data); }
|
30
|
+
read(path) { return router.dispatchAndReturn(this.read, path); }
|
31
|
+
delete(path) { return router.dispatchAndReturn(this.delete, path); }
|
32
|
+
list(path) { return router.dispatchAndReturn(this.list, path); }
|
33
|
+
});
|
34
|
+
}
|
35
|
+
}
|
36
|
+
__decorate([
|
37
|
+
Lazy,
|
38
|
+
__metadata("design:type", Object),
|
39
|
+
__metadata("design:paramtypes", [])
|
40
|
+
], WorkerAgents, "Peak", null);
|
41
|
+
__decorate([
|
42
|
+
Lazy,
|
43
|
+
__metadata("design:type", Object),
|
44
|
+
__metadata("design:paramtypes", [])
|
45
|
+
], WorkerAgents, "Opfs", null);
|
package/dist/Worklets.d.ts
CHANGED
@@ -1,20 +1,14 @@
|
|
1
1
|
import { int } from "@opendaw/lib-std";
|
2
2
|
import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
|
3
|
-
import { WorkletFactory } from "./WorkletFactory";
|
4
3
|
import { EngineWorklet } from "./EngineWorklet";
|
5
4
|
import { MeterWorklet } from "./MeterWorklet";
|
6
5
|
import { RecordingWorklet } from "./RecordingWorklet";
|
7
6
|
import { Project } from "./Project";
|
8
|
-
export type WorkletUrls = {
|
9
|
-
meter: string;
|
10
|
-
engine: string;
|
11
|
-
recording: string;
|
12
|
-
};
|
13
7
|
export declare class Worklets {
|
14
8
|
#private;
|
15
|
-
static install(context:
|
16
|
-
static get(context:
|
17
|
-
constructor(
|
9
|
+
static install(context: BaseAudioContext, workletURL: string): Promise<Worklets>;
|
10
|
+
static get(context: BaseAudioContext): Worklets;
|
11
|
+
constructor(context: BaseAudioContext);
|
18
12
|
createMeter(numberOfChannels: int): MeterWorklet;
|
19
13
|
createEngine(project: Project, exportConfiguration?: ExportStemsConfiguration): EngineWorklet;
|
20
14
|
createRecording(numberOfChannels: int, numChunks: int): RecordingWorklet;
|
package/dist/Worklets.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Worklets.d.ts","sourceRoot":"","sources":["../src/Worklets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,wBAAwB,
|
1
|
+
{"version":3,"file":"Worklets.d.ts","sourceRoot":"","sources":["../src/Worklets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,wBAAwB,EAAa,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,QAAQ;;WACJ,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQtF,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,QAAQ;gBAMnC,OAAO,EAAE,gBAAgB;IAErC,WAAW,CAAC,gBAAgB,EAAE,GAAG,GAAG,YAAY;IAIhD,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,wBAAwB,GAAG,aAAa;IAI7F,eAAe,CAAC,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,gBAAgB;CAO3E"}
|
package/dist/Worklets.js
CHANGED
@@ -2,35 +2,30 @@ import { asDefined } from "@opendaw/lib-std";
|
|
2
2
|
import { EngineWorklet } from "./EngineWorklet";
|
3
3
|
import { MeterWorklet } from "./MeterWorklet";
|
4
4
|
import { RecordingWorklet } from "./RecordingWorklet";
|
5
|
+
import { RenderQuantum } from "./RenderQuantum";
|
5
6
|
export class Worklets {
|
6
|
-
static async install(context,
|
7
|
-
return
|
8
|
-
|
9
|
-
MeterWorklet.bootFactory(context, meter),
|
10
|
-
RecordingWorklet.bootFactory(context, recording)
|
11
|
-
]).then(([engine, meter, recording]) => {
|
12
|
-
const worklets = new Worklets(engine, meter, recording);
|
7
|
+
static async install(context, workletURL) {
|
8
|
+
return context.audioWorklet.addModule(workletURL).then(() => {
|
9
|
+
const worklets = new Worklets(context);
|
13
10
|
this.#map.set(context, worklets);
|
14
11
|
return worklets;
|
15
12
|
});
|
16
13
|
}
|
17
14
|
static get(context) { return asDefined(this.#map.get(context), "Worklets not installed"); }
|
18
15
|
static #map = new WeakMap();
|
19
|
-
#
|
20
|
-
|
21
|
-
#recording;
|
22
|
-
constructor(engine, meter, recording) {
|
23
|
-
this.#meter = meter;
|
24
|
-
this.#engine = engine;
|
25
|
-
this.#recording = recording;
|
26
|
-
}
|
16
|
+
#context;
|
17
|
+
constructor(context) { this.#context = context; }
|
27
18
|
createMeter(numberOfChannels) {
|
28
|
-
return MeterWorklet
|
19
|
+
return new MeterWorklet(this.#context, numberOfChannels);
|
29
20
|
}
|
30
21
|
createEngine(project, exportConfiguration) {
|
31
|
-
return
|
22
|
+
return new EngineWorklet(this.#context, project, exportConfiguration);
|
32
23
|
}
|
33
24
|
createRecording(numberOfChannels, numChunks) {
|
34
|
-
|
25
|
+
const audioBytes = numberOfChannels * numChunks * RenderQuantum * Float32Array.BYTES_PER_ELEMENT;
|
26
|
+
const pointerBytes = Int32Array.BYTES_PER_ELEMENT * 2;
|
27
|
+
const sab = new SharedArrayBuffer(audioBytes + pointerBytes);
|
28
|
+
const buffer = { sab, numChunks, numberOfChannels, bufferSize: RenderQuantum };
|
29
|
+
return new RecordingWorklet(this.#context, buffer);
|
35
30
|
}
|
36
31
|
}
|
package/dist/index.d.ts
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
export * from "./sync-log/Commit";
|
2
2
|
export * from "./sync-log/SyncLogReader";
|
3
3
|
export * from "./sync-log/SyncLogWriter";
|
4
|
+
export * from "./samples/SamplePeaks";
|
5
|
+
export * from "./samples/SampleStorage";
|
6
|
+
export * from "./samples/MainThreadSampleLoader";
|
7
|
+
export * from "./samples/MainThreadSampleManager";
|
8
|
+
export * from "./samples/SampleProvider";
|
4
9
|
export * from "./Engine";
|
5
10
|
export * from "./EngineFacade";
|
6
11
|
export * from "./EngineWorklet";
|
@@ -8,6 +13,6 @@ export * from "./Mixer";
|
|
8
13
|
export * from "./Project";
|
9
14
|
export * from "./ProjectEnv";
|
10
15
|
export * from "./Wav";
|
11
|
-
export * from "./
|
16
|
+
export * from "./WorkerAgents";
|
12
17
|
export * from "./Worklets";
|
13
18
|
//# sourceMappingURL=index.d.ts.map
|
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,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AAExC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
export * from "./sync-log/Commit";
|
2
2
|
export * from "./sync-log/SyncLogReader";
|
3
3
|
export * from "./sync-log/SyncLogWriter";
|
4
|
+
export * from "./samples/SamplePeaks";
|
5
|
+
export * from "./samples/SampleStorage";
|
6
|
+
export * from "./samples/MainThreadSampleLoader";
|
7
|
+
export * from "./samples/MainThreadSampleManager";
|
8
|
+
export * from "./samples/SampleProvider";
|
4
9
|
export * from "./Engine";
|
5
10
|
export * from "./EngineFacade";
|
6
11
|
export * from "./EngineWorklet";
|
@@ -8,5 +13,5 @@ export * from "./Mixer";
|
|
8
13
|
export * from "./Project";
|
9
14
|
export * from "./ProjectEnv";
|
10
15
|
export * from "./Wav";
|
11
|
-
export * from "./
|
16
|
+
export * from "./WorkerAgents";
|
12
17
|
export * from "./Worklets";
|