@opendaw/studio-adapters 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/RingBuffer.d.ts +3 -3
- package/dist/RingBuffer.d.ts.map +1 -1
- package/dist/RingBuffer.js +8 -8
- package/package.json +10 -10
package/dist/RingBuffer.d.ts
CHANGED
@@ -3,7 +3,7 @@ export declare namespace RingBuffer {
|
|
3
3
|
interface Config {
|
4
4
|
sab: SharedArrayBuffer;
|
5
5
|
numChunks: int;
|
6
|
-
|
6
|
+
numberOfChannels: int;
|
7
7
|
bufferSize: int;
|
8
8
|
}
|
9
9
|
interface Writer {
|
@@ -12,8 +12,8 @@ export declare namespace RingBuffer {
|
|
12
12
|
interface Reader {
|
13
13
|
stop(): void;
|
14
14
|
}
|
15
|
-
const reader: ({ sab, numChunks,
|
16
|
-
const writer: ({ sab, numChunks,
|
15
|
+
const reader: ({ sab, numChunks, numberOfChannels, bufferSize }: Config, append: Procedure<Array<Float32Array>>) => Reader;
|
16
|
+
const writer: ({ sab, numChunks, numberOfChannels, bufferSize }: Config) => Writer;
|
17
17
|
}
|
18
18
|
export declare const mergeChunkPlanes: (chunks: ReadonlyArray<ReadonlyArray<Float32Array>>, bufferSize: int, maxFrames?: int) => ReadonlyArray<Float32Array>;
|
19
19
|
//# sourceMappingURL=RingBuffer.d.ts.map
|
package/dist/RingBuffer.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../src/RingBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAS,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAItE,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,GAAG,EAAE,iBAAiB,CAAA;QACtB,SAAS,EAAE,GAAG,CAAA;QACd,
|
1
|
+
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../src/RingBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAS,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAItE,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,GAAG,EAAE,iBAAiB,CAAA;QACtB,SAAS,EAAE,GAAG,CAAA;QACd,gBAAgB,EAAE,GAAG,CAAA;QACrB,UAAU,EAAE,GAAG,CAAA;KAClB;IAED,UAAiB,MAAM;QAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;KAAC;IAE5E,UAAiB,MAAM;QAAE,IAAI,IAAI,IAAI,CAAA;KAAC;IAE/B,MAAM,MAAM,GAAI,kDAKG,MAAM,EAAE,QAAQ,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAG,MAqC1E,CAAA;IAEM,MAAM,MAAM,GAAI,kDAAgD,MAAM,KAAG,MAqB/E,CAAA;CACJ;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAClD,YAAY,GAAG,EACf,YAAW,GAA6B,KAAG,aAAa,CAAC,YAAY,CAkBrG,CAAA"}
|
package/dist/RingBuffer.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
import { Arrays, assert, panic } from "@opendaw/lib-std";
|
2
2
|
export var RingBuffer;
|
3
3
|
(function (RingBuffer) {
|
4
|
-
RingBuffer.reader = ({ sab, numChunks,
|
4
|
+
RingBuffer.reader = ({ sab, numChunks, numberOfChannels, bufferSize }, append) => {
|
5
5
|
let running = true;
|
6
6
|
const pointers = new Int32Array(sab, 0, 2);
|
7
7
|
const audio = new Float32Array(sab, 8);
|
8
|
-
const planarChunk = new Float32Array(
|
8
|
+
const planarChunk = new Float32Array(numberOfChannels * bufferSize);
|
9
9
|
const canBlock = typeof document === "undefined"; // for usage in workers
|
10
10
|
const step = () => {
|
11
11
|
if (!running) {
|
@@ -24,10 +24,10 @@ export var RingBuffer;
|
|
24
24
|
writePtr = Atomics.load(pointers, 0);
|
25
25
|
}
|
26
26
|
while (readPtr !== writePtr) {
|
27
|
-
const offset = readPtr *
|
28
|
-
planarChunk.set(audio.subarray(offset, offset +
|
27
|
+
const offset = readPtr * numberOfChannels * bufferSize;
|
28
|
+
planarChunk.set(audio.subarray(offset, offset + numberOfChannels * bufferSize));
|
29
29
|
const channels = [];
|
30
|
-
for (let channel = 0; channel <
|
30
|
+
for (let channel = 0; channel < numberOfChannels; channel++) {
|
31
31
|
const start = channel * bufferSize;
|
32
32
|
const end = start + bufferSize;
|
33
33
|
channels.push(planarChunk.slice(start, end));
|
@@ -44,12 +44,12 @@ export var RingBuffer;
|
|
44
44
|
step();
|
45
45
|
return { stop: () => running = false };
|
46
46
|
};
|
47
|
-
RingBuffer.writer = ({ sab, numChunks,
|
47
|
+
RingBuffer.writer = ({ sab, numChunks, numberOfChannels, bufferSize }) => {
|
48
48
|
const pointers = new Int32Array(sab, 0, 2);
|
49
49
|
const audio = new Float32Array(sab, 8);
|
50
50
|
return Object.freeze({
|
51
51
|
write: (channels) => {
|
52
|
-
if (channels.length !==
|
52
|
+
if (channels.length !== numberOfChannels) {
|
53
53
|
// We ignore this. This can happen in the worklet setup phase.
|
54
54
|
return;
|
55
55
|
}
|
@@ -59,7 +59,7 @@ export var RingBuffer;
|
|
59
59
|
}
|
60
60
|
}
|
61
61
|
const writePtr = Atomics.load(pointers, 0);
|
62
|
-
const offset = writePtr *
|
62
|
+
const offset = writePtr * numberOfChannels * bufferSize;
|
63
63
|
channels.forEach((channel, index) => audio.set(channel, offset + index * bufferSize));
|
64
64
|
Atomics.store(pointers, 0, (writePtr + 1) % numChunks);
|
65
65
|
Atomics.notify(pointers, 0);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@opendaw/studio-adapters",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.8",
|
4
4
|
"license": "LGPL-3.0-or-later",
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
@@ -23,16 +23,16 @@
|
|
23
23
|
"test": "echo \"No tests to run\""
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@opendaw/lib-box": "^0.0.
|
27
|
-
"@opendaw/lib-dsp": "^0.0.
|
28
|
-
"@opendaw/lib-runtime": "^0.0.
|
29
|
-
"@opendaw/lib-std": "^0.0.
|
30
|
-
"@opendaw/studio-boxes": "^0.0.
|
31
|
-
"@opendaw/studio-enums": "^0.0.
|
26
|
+
"@opendaw/lib-box": "^0.0.8",
|
27
|
+
"@opendaw/lib-dsp": "^0.0.8",
|
28
|
+
"@opendaw/lib-runtime": "^0.0.8",
|
29
|
+
"@opendaw/lib-std": "^0.0.8",
|
30
|
+
"@opendaw/studio-boxes": "^0.0.8",
|
31
|
+
"@opendaw/studio-enums": "^0.0.8"
|
32
32
|
},
|
33
33
|
"devDependencies": {
|
34
|
-
"@opendaw/eslint-config": "^0.0.
|
35
|
-
"@opendaw/typescript-config": "^0.0.
|
34
|
+
"@opendaw/eslint-config": "^0.0.8",
|
35
|
+
"@opendaw/typescript-config": "^0.0.8"
|
36
36
|
},
|
37
|
-
"gitHead": "
|
37
|
+
"gitHead": "752dd75794d8c9bbd0202a906b23e14113909085"
|
38
38
|
}
|