@opendaw/studio-core 0.0.7 → 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/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/Worklets.d.ts +3 -9
- package/dist/Worklets.d.ts.map +1 -1
- package/dist/Worklets.js +13 -18
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/processors.js +6 -0
- package/dist/processors.js.map +7 -0
- package/package.json +20 -24
- 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",
|
@@ -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;
|
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
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,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,
|
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"}
|