react-native-audio-api 0.8.3-nightly-e918179-20251003 → 0.8.3-nightly-ea268f4-20251005
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/common/cpp/audioapi/AudioAPIModuleInstaller.h +31 -14
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +74 -4
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +3 -0
- package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +18 -0
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +20 -1
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +3 -0
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +19 -0
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +21 -0
- package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +18 -0
- package/common/cpp/audioapi/core/AudioContext.cpp +2 -2
- package/common/cpp/audioapi/core/AudioContext.h +2 -2
- package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +32 -3
- package/common/cpp/audioapi/core/BaseAudioContext.h +9 -4
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +2 -2
- package/common/cpp/audioapi/core/OfflineAudioContext.h +2 -2
- package/common/cpp/audioapi/core/effects/WorkletNode.cpp +4 -3
- package/common/cpp/audioapi/core/effects/WorkletNode.h +4 -3
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +89 -0
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +52 -0
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +1 -6
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +30 -0
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +6 -0
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -6
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +51 -0
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +26 -0
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +82 -0
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +47 -0
- package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +12 -6
- package/common/cpp/audioapi/core/utils/Constants.h +5 -0
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +7 -0
- package/common/cpp/audioapi/core/utils/worklets/{UiWorkletsRunner.cpp → WorkletsRunner.cpp} +2 -2
- package/common/cpp/audioapi/core/utils/worklets/{UiWorkletsRunner.h → WorkletsRunner.h} +2 -2
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +2 -1
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +23 -27
- package/common/cpp/audioapi/jsi/JsiPromise.h +10 -1
- package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -0
- package/common/cpp/test/AudioParamTest.cpp +204 -0
- package/common/cpp/test/CMakeLists.txt +3 -0
- package/common/cpp/test/GainTest.cpp +2 -1
- package/common/cpp/test/OscillatorTest.cpp +2 -1
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +2 -1
- package/lib/commonjs/api.js +27 -0
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +8 -0
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js +1 -6
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferSourceNode.js +15 -0
- package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js +10 -1
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +35 -2
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/ConstantSourceNode.js +17 -0
- package/lib/commonjs/core/ConstantSourceNode.js.map +1 -0
- package/lib/commonjs/core/OfflineAudioContext.js +11 -2
- package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/core/WorkletProcessingNode.js +11 -0
- package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -0
- package/lib/commonjs/core/WorkletSourceNode.js +11 -0
- package/lib/commonjs/core/WorkletSourceNode.js.map +1 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +4 -0
- package/lib/commonjs/web-core/AudioContext.js.map +1 -1
- package/lib/commonjs/web-core/ConstantSourceNode.js +17 -0
- package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js +4 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/api.js +4 -1
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +1 -0
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
- package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferQueueSourceNode.js +1 -6
- package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +15 -0
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioContext.js +10 -1
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +35 -2
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/ConstantSourceNode.js +11 -0
- package/lib/module/core/ConstantSourceNode.js.map +1 -0
- package/lib/module/core/OfflineAudioContext.js +11 -2
- package/lib/module/core/OfflineAudioContext.js.map +1 -1
- package/lib/module/core/WorkletProcessingNode.js +5 -0
- package/lib/module/core/WorkletProcessingNode.js.map +1 -0
- package/lib/module/core/WorkletSourceNode.js +5 -0
- package/lib/module/core/WorkletSourceNode.js.map +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +4 -0
- package/lib/module/web-core/AudioContext.js.map +1 -1
- package/lib/module/web-core/ConstantSourceNode.js +11 -0
- package/lib/module/web-core/ConstantSourceNode.js.map +1 -0
- package/lib/module/web-core/OfflineAudioContext.js +4 -0
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/typescript/api.d.ts +6 -3
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +1 -0
- package/lib/typescript/api.web.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +4 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioContext.d.ts +1 -0
- package/lib/typescript/core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +8 -2
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/ConstantSourceNode.d.ts +9 -0
- package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/OfflineAudioContext.d.ts +1 -0
- package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/WorkletProcessingNode.d.ts +4 -0
- package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -0
- package/lib/typescript/core/WorkletSourceNode.d.ts +4 -0
- package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -0
- package/lib/typescript/events/types.d.ts +1 -0
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +16 -2
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +1 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +1 -0
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +2 -0
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/ConstantSourceNode.d.ts +8 -0
- package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +2 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +10 -2
- package/src/api.web.ts +1 -0
- package/src/core/AudioBufferBaseSourceNode.ts +9 -9
- package/src/core/AudioBufferQueueSourceNode.ts +1 -9
- package/src/core/AudioBufferSourceNode.ts +28 -0
- package/src/core/AudioContext.ts +12 -1
- package/src/core/BaseAudioContext.ts +90 -1
- package/src/core/ConstantSourceNode.ts +13 -0
- package/src/core/OfflineAudioContext.ts +18 -2
- package/src/core/WorkletProcessingNode.ts +3 -0
- package/src/core/WorkletSourceNode.ts +3 -0
- package/src/events/types.ts +1 -0
- package/src/interfaces.ts +42 -2
- package/src/types.ts +2 -0
- package/src/utils/index.ts +3 -0
- package/src/web-core/AudioContext.tsx +5 -0
- package/src/web-core/BaseAudioContext.tsx +2 -0
- package/src/web-core/ConstantSourceNode.tsx +12 -0
- package/src/web-core/OfflineAudioContext.tsx +5 -0
package/src/interfaces.ts
CHANGED
|
@@ -8,11 +8,30 @@ import {
|
|
|
8
8
|
WindowType,
|
|
9
9
|
} from './types';
|
|
10
10
|
|
|
11
|
-
export type
|
|
12
|
-
|
|
11
|
+
export type WorkletNodeCallback = (
|
|
12
|
+
audioData: Array<ArrayBuffer>,
|
|
13
13
|
channelCount: number
|
|
14
14
|
) => void;
|
|
15
15
|
|
|
16
|
+
export type WorkletSourceNodeCallback = (
|
|
17
|
+
audioData: Array<ArrayBuffer>,
|
|
18
|
+
framesToProcess: number,
|
|
19
|
+
currentTime: number,
|
|
20
|
+
startOffset: number
|
|
21
|
+
) => void;
|
|
22
|
+
|
|
23
|
+
export type WorkletProcessingNodeCallback = (
|
|
24
|
+
inputData: Array<ArrayBuffer>,
|
|
25
|
+
outputData: Array<ArrayBuffer>,
|
|
26
|
+
framesToProcess: number,
|
|
27
|
+
currentTime: number
|
|
28
|
+
) => void;
|
|
29
|
+
|
|
30
|
+
export type ShareableWorkletCallback =
|
|
31
|
+
| WorkletNodeCallback
|
|
32
|
+
| WorkletSourceNodeCallback
|
|
33
|
+
| WorkletProcessingNodeCallback;
|
|
34
|
+
|
|
16
35
|
export interface IBaseAudioContext {
|
|
17
36
|
readonly destination: IAudioDestinationNode;
|
|
18
37
|
readonly state: ContextState;
|
|
@@ -20,12 +39,22 @@ export interface IBaseAudioContext {
|
|
|
20
39
|
readonly currentTime: number;
|
|
21
40
|
|
|
22
41
|
createRecorderAdapter(): IRecorderAdapterNode;
|
|
42
|
+
createWorkletSourceNode(
|
|
43
|
+
shareableWorklet: ShareableWorkletCallback,
|
|
44
|
+
shouldUseUiRuntime: boolean
|
|
45
|
+
): IWorkletSourceNode;
|
|
23
46
|
createWorkletNode(
|
|
24
47
|
shareableWorklet: ShareableWorkletCallback,
|
|
48
|
+
shouldUseUiRuntime: boolean,
|
|
25
49
|
bufferLength: number,
|
|
26
50
|
inputChannelCount: number
|
|
27
51
|
): IWorkletNode;
|
|
52
|
+
createWorkletProcessingNode(
|
|
53
|
+
shareableWorklet: ShareableWorkletCallback,
|
|
54
|
+
shouldUseUiRuntime: boolean
|
|
55
|
+
): IWorkletProcessingNode;
|
|
28
56
|
createOscillator(): IOscillatorNode;
|
|
57
|
+
createConstantSource(): IConstantSourceNode;
|
|
29
58
|
createGain(): IGainNode;
|
|
30
59
|
createStereoPanner(): IStereoPannerNode;
|
|
31
60
|
createBiquadFilter: () => IBiquadFilterNode;
|
|
@@ -131,6 +160,10 @@ export interface IStreamerNode extends IAudioNode {
|
|
|
131
160
|
initialize(streamPath: string): boolean;
|
|
132
161
|
}
|
|
133
162
|
|
|
163
|
+
export interface IConstantSourceNode extends IAudioScheduledSourceNode {
|
|
164
|
+
readonly offset: IAudioParam;
|
|
165
|
+
}
|
|
166
|
+
|
|
134
167
|
export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
|
|
135
168
|
buffer: IAudioBuffer | null;
|
|
136
169
|
loop: boolean;
|
|
@@ -140,6 +173,9 @@ export interface IAudioBufferSourceNode extends IAudioBufferBaseSourceNode {
|
|
|
140
173
|
|
|
141
174
|
start: (when?: number, offset?: number, duration?: number) => void;
|
|
142
175
|
setBuffer: (audioBuffer: IAudioBuffer | null) => void;
|
|
176
|
+
|
|
177
|
+
// passing subscriptionId(uint_64 in cpp, string in js) to the cpp
|
|
178
|
+
onLoopEnded: string;
|
|
143
179
|
}
|
|
144
180
|
|
|
145
181
|
export interface IAudioBufferQueueSourceNode
|
|
@@ -214,6 +250,10 @@ export interface IRecorderAdapterNode extends IAudioNode {}
|
|
|
214
250
|
|
|
215
251
|
export interface IWorkletNode extends IAudioNode {}
|
|
216
252
|
|
|
253
|
+
export interface IWorkletSourceNode extends IAudioScheduledSourceNode {}
|
|
254
|
+
|
|
255
|
+
export interface IWorkletProcessingNode extends IAudioNode {}
|
|
256
|
+
|
|
217
257
|
export interface IAudioRecorder {
|
|
218
258
|
start: () => void;
|
|
219
259
|
stop: () => void;
|
package/src/types.ts
CHANGED
package/src/utils/index.ts
CHANGED
|
@@ -4,6 +4,9 @@ interface SimplifiedWorkletModule {
|
|
|
4
4
|
makeShareableCloneRecursive: (
|
|
5
5
|
workletCallback: ShareableWorkletCallback
|
|
6
6
|
) => ShareableWorkletCallback;
|
|
7
|
+
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
createWorkletRuntime: (options?: any) => any;
|
|
7
10
|
}
|
|
8
11
|
|
|
9
12
|
export function clamp(value: number, min: number, max: number): number {
|
|
@@ -17,6 +17,7 @@ import PeriodicWave from './PeriodicWave';
|
|
|
17
17
|
import StereoPannerNode from './StereoPannerNode';
|
|
18
18
|
|
|
19
19
|
import { globalWasmPromise, globalTag } from './custom/LoadCustomWasm';
|
|
20
|
+
import ConstantSourceNode from './ConstantSourceNode';
|
|
20
21
|
|
|
21
22
|
export default class AudioContext implements BaseAudioContext {
|
|
22
23
|
readonly context: globalThis.AudioContext;
|
|
@@ -53,6 +54,10 @@ export default class AudioContext implements BaseAudioContext {
|
|
|
53
54
|
return new OscillatorNode(this, this.context.createOscillator());
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
createConstantSource(): ConstantSourceNode {
|
|
58
|
+
return new ConstantSourceNode(this, this.context.createConstantSource());
|
|
59
|
+
}
|
|
60
|
+
|
|
56
61
|
createGain(): GainNode {
|
|
57
62
|
return new GainNode(this, this.context.createGain());
|
|
58
63
|
}
|
|
@@ -8,6 +8,7 @@ import GainNode from './GainNode';
|
|
|
8
8
|
import OscillatorNode from './OscillatorNode';
|
|
9
9
|
import PeriodicWave from './PeriodicWave';
|
|
10
10
|
import StereoPannerNode from './StereoPannerNode';
|
|
11
|
+
import ConstantSourceNode from './ConstantSourceNode';
|
|
11
12
|
|
|
12
13
|
export default interface BaseAudioContext {
|
|
13
14
|
readonly context: globalThis.BaseAudioContext;
|
|
@@ -18,6 +19,7 @@ export default interface BaseAudioContext {
|
|
|
18
19
|
get currentTime(): number;
|
|
19
20
|
get state(): ContextState;
|
|
20
21
|
createOscillator(): OscillatorNode;
|
|
22
|
+
createConstantSource(): ConstantSourceNode;
|
|
21
23
|
createGain(): GainNode;
|
|
22
24
|
createStereoPanner(): StereoPannerNode;
|
|
23
25
|
createBiquadFilter(): BiquadFilterNode;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import AudioParam from './AudioParam';
|
|
2
|
+
import AudioScheduledSourceNode from './AudioScheduledSourceNode';
|
|
3
|
+
import BaseAudioContext from './BaseAudioContext';
|
|
4
|
+
|
|
5
|
+
export default class ConstantSourceNode extends AudioScheduledSourceNode {
|
|
6
|
+
readonly offset: AudioParam;
|
|
7
|
+
|
|
8
|
+
constructor(context: BaseAudioContext, node: globalThis.ConstantSourceNode) {
|
|
9
|
+
super(context, node);
|
|
10
|
+
this.offset = new AudioParam(node.offset, context);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -15,6 +15,7 @@ import GainNode from './GainNode';
|
|
|
15
15
|
import OscillatorNode from './OscillatorNode';
|
|
16
16
|
import PeriodicWave from './PeriodicWave';
|
|
17
17
|
import StereoPannerNode from './StereoPannerNode';
|
|
18
|
+
import ConstantSourceNode from './ConstantSourceNode';
|
|
18
19
|
|
|
19
20
|
import { globalWasmPromise, globalTag } from './custom/LoadCustomWasm';
|
|
20
21
|
|
|
@@ -59,6 +60,10 @@ export default class OfflineAudioContext implements BaseAudioContext {
|
|
|
59
60
|
return new OscillatorNode(this, this.context.createOscillator());
|
|
60
61
|
}
|
|
61
62
|
|
|
63
|
+
createConstantSource(): ConstantSourceNode {
|
|
64
|
+
return new ConstantSourceNode(this, this.context.createConstantSource());
|
|
65
|
+
}
|
|
66
|
+
|
|
62
67
|
createGain(): GainNode {
|
|
63
68
|
return new GainNode(this, this.context.createGain());
|
|
64
69
|
}
|