react-native-audio-api 0.6.2-rc.6 → 0.6.2
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/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +25 -0
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +13 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +60 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +5 -67
- package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +26 -56
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +9 -0
- package/common/cpp/audioapi/HostObjects/CustomProcessorNodeHostObject.h +54 -0
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +9 -0
- package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
- package/common/cpp/audioapi/core/effects/CustomProcessorNode.cpp +173 -0
- package/common/cpp/audioapi/core/effects/CustomProcessorNode.h +186 -0
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +104 -0
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +54 -0
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +12 -129
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +8 -37
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +4 -93
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +4 -30
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -11
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +2 -3
- package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +0 -5
- package/common/cpp/audioapi/core/sources/OscillatorNode.h +0 -1
- package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +3 -1
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +1 -1
- package/ios/audioapi/ios/system/AudioEngine.h +1 -0
- package/ios/audioapi/ios/system/AudioEngine.mm +14 -3
- package/ios/audioapi/ios/system/AudioSessionManager.h +1 -0
- package/ios/audioapi/ios/system/AudioSessionManager.mm +10 -0
- package/ios/audioapi/ios/system/NotificationManager.mm +2 -4
- package/lib/commonjs/api.js +7 -0
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js +29 -0
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -0
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js +5 -22
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferSourceNode.js +4 -21
- package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +4 -0
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/CustomProcessorNode.js +23 -0
- package/lib/commonjs/core/CustomProcessorNode.js.map +1 -0
- package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -4
- package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/api.js +1 -0
- package/lib/module/api.js.map +1 -1
- package/lib/module/core/AudioBufferBaseSourceNode.js +23 -0
- package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -0
- package/lib/module/core/AudioBufferQueueSourceNode.js +5 -22
- package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +4 -21
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +4 -0
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/CustomProcessorNode.js +17 -0
- package/lib/module/core/CustomProcessorNode.js.map +1 -0
- package/lib/module/web-core/AudioScheduledSourceNode.js +1 -4
- package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/typescript/api.d.ts +1 -0
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +13 -0
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +3 -12
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +2 -11
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +2 -2
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +2 -0
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/CustomProcessorNode.d.ts +12 -0
- package/lib/typescript/core/CustomProcessorNode.d.ts.map +1 -0
- package/lib/typescript/events/types.d.ts +2 -7
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +16 -13
- 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/web-core/AudioScheduledSourceNode.d.ts +2 -1
- package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +1 -0
- package/src/core/AudioBufferBaseSourceNode.ts +33 -0
- package/src/core/AudioBufferQueueSourceNode.ts +3 -35
- package/src/core/AudioBufferSourceNode.ts +10 -33
- package/src/core/AudioScheduledSourceNode.ts +2 -2
- package/src/core/BaseAudioContext.ts +8 -0
- package/src/core/CustomProcessorNode.ts +28 -0
- package/src/events/types.ts +2 -8
- package/src/interfaces.ts +25 -23
- package/src/types.ts +2 -0
- package/src/web-core/AudioScheduledSourceNode.tsx +3 -6
|
@@ -13,26 +13,15 @@ namespace audioapi {
|
|
|
13
13
|
AudioBufferSourceNode::AudioBufferSourceNode(
|
|
14
14
|
BaseAudioContext *context,
|
|
15
15
|
bool pitchCorrection)
|
|
16
|
-
:
|
|
16
|
+
: AudioBufferBaseSourceNode(context),
|
|
17
17
|
loop_(false),
|
|
18
|
+
loopSkip_(false),
|
|
18
19
|
loopStart_(0),
|
|
19
20
|
loopEnd_(0),
|
|
20
|
-
pitchCorrection_(pitchCorrection)
|
|
21
|
-
vReadIndex_(0.0) {
|
|
21
|
+
pitchCorrection_(pitchCorrection) {
|
|
22
22
|
buffer_ = std::shared_ptr<AudioBuffer>(nullptr);
|
|
23
23
|
alignedBus_ = std::shared_ptr<AudioBus>(nullptr);
|
|
24
24
|
|
|
25
|
-
detuneParam_ = std::make_shared<AudioParam>(
|
|
26
|
-
0.0, MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT, context);
|
|
27
|
-
playbackRateParam_ = std::make_shared<AudioParam>(
|
|
28
|
-
1.0, MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT, context);
|
|
29
|
-
|
|
30
|
-
playbackRateBus_ = std::make_shared<AudioBus>(
|
|
31
|
-
RENDER_QUANTUM_SIZE * 3, channelCount_, context_->getSampleRate());
|
|
32
|
-
|
|
33
|
-
stretch_ =
|
|
34
|
-
std::make_shared<signalsmith::stretch::SignalsmithStretch<float>>();
|
|
35
|
-
|
|
36
25
|
isInitialized_ = true;
|
|
37
26
|
}
|
|
38
27
|
|
|
@@ -59,15 +48,6 @@ double AudioBufferSourceNode::getLoopEnd() const {
|
|
|
59
48
|
return loopEnd_;
|
|
60
49
|
}
|
|
61
50
|
|
|
62
|
-
std::shared_ptr<AudioParam> AudioBufferSourceNode::getDetuneParam() const {
|
|
63
|
-
return detuneParam_;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
std::shared_ptr<AudioParam> AudioBufferSourceNode::getPlaybackRateParam()
|
|
67
|
-
const {
|
|
68
|
-
return playbackRateParam_;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
51
|
std::shared_ptr<AudioBuffer> AudioBufferSourceNode::getBuffer() const {
|
|
72
52
|
return buffer_;
|
|
73
53
|
}
|
|
@@ -144,34 +124,6 @@ void AudioBufferSourceNode::disable() {
|
|
|
144
124
|
alignedBus_.reset();
|
|
145
125
|
}
|
|
146
126
|
|
|
147
|
-
std::mutex &AudioBufferSourceNode::getBufferLock() {
|
|
148
|
-
return bufferLock_;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
void AudioBufferSourceNode::sendOnPositionChangedEvent() {
|
|
152
|
-
if (onPositionChangedTime_ > onPositionChangedInterval_) {
|
|
153
|
-
std::unordered_map<std::string, EventValue> body = {
|
|
154
|
-
{"value", getStopTime()}};
|
|
155
|
-
|
|
156
|
-
context_->audioEventHandlerRegistry_->invokeHandlerWithEventBody(
|
|
157
|
-
"positionChanged", onPositionChangedCallbackId_, body);
|
|
158
|
-
|
|
159
|
-
onPositionChangedTime_ = 0;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
onPositionChangedTime_ += RENDER_QUANTUM_SIZE;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
void AudioBufferSourceNode::setOnPositionChangedInterval(int interval) {
|
|
166
|
-
onPositionChangedInterval_ = static_cast<int>(
|
|
167
|
-
context_->getSampleRate() * static_cast<float>(interval) / 1000);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
void AudioBufferSourceNode::setOnPositionChangedCallbackId(
|
|
171
|
-
uint64_t callbackId) {
|
|
172
|
-
onPositionChangedCallbackId_ = callbackId;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
127
|
void AudioBufferSourceNode::processNode(
|
|
176
128
|
const std::shared_ptr<AudioBus> &processingBus,
|
|
177
129
|
int framesToProcess) {
|
|
@@ -195,7 +147,7 @@ void AudioBufferSourceNode::processNode(
|
|
|
195
147
|
}
|
|
196
148
|
}
|
|
197
149
|
|
|
198
|
-
double AudioBufferSourceNode::
|
|
150
|
+
double AudioBufferSourceNode::getCurrentPosition() const {
|
|
199
151
|
return dsp::sampleFrameToTime(
|
|
200
152
|
static_cast<int>(vReadIndex_), buffer_->getSampleRate());
|
|
201
153
|
}
|
|
@@ -227,47 +179,6 @@ void AudioBufferSourceNode::processWithoutPitchCorrection(
|
|
|
227
179
|
}
|
|
228
180
|
}
|
|
229
181
|
|
|
230
|
-
void AudioBufferSourceNode::processWithPitchCorrection(
|
|
231
|
-
const std::shared_ptr<AudioBus> &processingBus,
|
|
232
|
-
int framesToProcess) {
|
|
233
|
-
size_t startOffset = 0;
|
|
234
|
-
size_t offsetLength = 0;
|
|
235
|
-
|
|
236
|
-
auto time = context_->getCurrentTime();
|
|
237
|
-
auto playbackRate = std::clamp(
|
|
238
|
-
playbackRateParam_->processKRateParam(framesToProcess, time), 0.0f, 3.0f);
|
|
239
|
-
auto detune = std::clamp(
|
|
240
|
-
detuneParam_->processKRateParam(framesToProcess, time) / 100.0f,
|
|
241
|
-
-12.0f,
|
|
242
|
-
12.0f);
|
|
243
|
-
|
|
244
|
-
playbackRateBus_->zero();
|
|
245
|
-
|
|
246
|
-
auto framesNeededToStretch =
|
|
247
|
-
static_cast<int>(playbackRate * static_cast<float>(framesToProcess));
|
|
248
|
-
|
|
249
|
-
updatePlaybackInfo(
|
|
250
|
-
playbackRateBus_, framesNeededToStretch, startOffset, offsetLength);
|
|
251
|
-
|
|
252
|
-
if (playbackRate == 0.0f || (!isPlaying() && !isStopScheduled())) {
|
|
253
|
-
processingBus->zero();
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
processWithoutInterpolation(
|
|
258
|
-
playbackRateBus_, startOffset, offsetLength, playbackRate);
|
|
259
|
-
|
|
260
|
-
stretch_->process(
|
|
261
|
-
playbackRateBus_.get()[0],
|
|
262
|
-
framesNeededToStretch,
|
|
263
|
-
processingBus.get()[0],
|
|
264
|
-
framesToProcess);
|
|
265
|
-
|
|
266
|
-
if (detune != 0.0f) {
|
|
267
|
-
stretch_->setTransposeSemitones(detune);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
182
|
void AudioBufferSourceNode::processWithoutInterpolation(
|
|
272
183
|
const std::shared_ptr<AudioBus> &processingBus,
|
|
273
184
|
size_t startOffset,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/sources/AudioBuffer.h>
|
|
4
|
-
#include <audioapi/core/sources/
|
|
4
|
+
#include <audioapi/core/sources/AudioBufferBaseSourceNode.h>
|
|
5
5
|
#include <audioapi/libs/signalsmith-stretch/signalsmith-stretch.h>
|
|
6
6
|
|
|
7
7
|
#include <memory>
|
|
@@ -14,7 +14,7 @@ namespace audioapi {
|
|
|
14
14
|
class AudioBus;
|
|
15
15
|
class AudioParam;
|
|
16
16
|
|
|
17
|
-
class AudioBufferSourceNode : public
|
|
17
|
+
class AudioBufferSourceNode : public AudioBufferBaseSourceNode {
|
|
18
18
|
public:
|
|
19
19
|
explicit AudioBufferSourceNode(BaseAudioContext *context, bool pitchCorrection);
|
|
20
20
|
~AudioBufferSourceNode() override;
|
|
@@ -23,8 +23,6 @@ class AudioBufferSourceNode : public AudioScheduledSourceNode {
|
|
|
23
23
|
[[nodiscard]] bool getLoopSkip() const;
|
|
24
24
|
[[nodiscard]] double getLoopStart() const;
|
|
25
25
|
[[nodiscard]] double getLoopEnd() const;
|
|
26
|
-
[[nodiscard]] std::shared_ptr<AudioParam> getDetuneParam() const;
|
|
27
|
-
[[nodiscard]] std::shared_ptr<AudioParam> getPlaybackRateParam() const;
|
|
28
26
|
[[nodiscard]] std::shared_ptr<AudioBuffer> getBuffer() const;
|
|
29
27
|
|
|
30
28
|
void setLoop(bool loop);
|
|
@@ -36,14 +34,9 @@ class AudioBufferSourceNode : public AudioScheduledSourceNode {
|
|
|
36
34
|
void start(double when, double offset, double duration = -1);
|
|
37
35
|
void disable() override;
|
|
38
36
|
|
|
39
|
-
void setOnPositionChangedCallbackId(uint64_t callbackId);
|
|
40
|
-
void setOnPositionChangedInterval(int interval);
|
|
41
|
-
void sendOnPositionChangedEvent();
|
|
42
|
-
|
|
43
37
|
protected:
|
|
44
|
-
std::mutex &getBufferLock();
|
|
45
38
|
void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
|
|
46
|
-
double
|
|
39
|
+
double getCurrentPosition() const override;
|
|
47
40
|
|
|
48
41
|
private:
|
|
49
42
|
// Looping related properties
|
|
@@ -51,41 +44,22 @@ class AudioBufferSourceNode : public AudioScheduledSourceNode {
|
|
|
51
44
|
bool loopSkip_;
|
|
52
45
|
double loopStart_;
|
|
53
46
|
double loopEnd_;
|
|
54
|
-
std::mutex bufferLock_;
|
|
55
47
|
|
|
56
48
|
// pitch correction
|
|
57
49
|
bool pitchCorrection_;
|
|
58
|
-
std::shared_ptr<signalsmith::stretch::SignalsmithStretch<float>> stretch_;
|
|
59
|
-
|
|
60
|
-
// k-rate params
|
|
61
|
-
std::shared_ptr<AudioParam> detuneParam_;
|
|
62
|
-
std::shared_ptr<AudioParam> playbackRateParam_;
|
|
63
|
-
|
|
64
|
-
std::shared_ptr<AudioBus> playbackRateBus_;
|
|
65
|
-
|
|
66
|
-
// internal helper
|
|
67
|
-
double vReadIndex_;
|
|
68
50
|
|
|
69
51
|
// User provided buffer
|
|
70
52
|
std::shared_ptr<AudioBuffer> buffer_;
|
|
71
53
|
std::shared_ptr<AudioBus> alignedBus_;
|
|
72
54
|
|
|
73
|
-
// positionChanged event props: callbackId, update interval in frames, time since last update in frames
|
|
74
|
-
uint64_t onPositionChangedCallbackId_ = 0;
|
|
75
|
-
int onPositionChangedInterval_;
|
|
76
|
-
int onPositionChangedTime_ = 0;
|
|
77
|
-
|
|
78
55
|
void processWithoutPitchCorrection(const std::shared_ptr<AudioBus> &processingBus,
|
|
79
56
|
int framesToProcess);
|
|
80
57
|
|
|
81
|
-
void processWithPitchCorrection(const std::shared_ptr<AudioBus> &processingBus,
|
|
82
|
-
int framesToProcess);
|
|
83
|
-
|
|
84
58
|
void processWithoutInterpolation(
|
|
85
59
|
const std::shared_ptr<AudioBus>& processingBus,
|
|
86
60
|
size_t startOffset,
|
|
87
61
|
size_t offsetLength,
|
|
88
|
-
float playbackRate);
|
|
62
|
+
float playbackRate) override;
|
|
89
63
|
|
|
90
64
|
void processWithInterpolation(
|
|
91
65
|
const std::shared_ptr<AudioBus>& processingBus,
|
|
@@ -143,18 +143,8 @@ void AudioScheduledSourceNode::updatePlaybackInfo(
|
|
|
143
143
|
void AudioScheduledSourceNode::disable() {
|
|
144
144
|
AudioNode::disable();
|
|
145
145
|
|
|
146
|
-
std::string state = "stopped";
|
|
147
|
-
|
|
148
|
-
// if it has not been stopped, it is ended
|
|
149
|
-
if (stopTime_ < 0) {
|
|
150
|
-
state = "ended";
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
std::unordered_map<std::string, EventValue> body = {
|
|
154
|
-
{"value", getStopTime()}, {"state", state}};
|
|
155
|
-
|
|
156
146
|
context_->audioEventHandlerRegistry_->invokeHandlerWithEventBody(
|
|
157
|
-
"ended", onEndedCallbackId_,
|
|
147
|
+
"ended", onEndedCallbackId_, {});
|
|
158
148
|
}
|
|
159
149
|
|
|
160
150
|
void AudioScheduledSourceNode::handleStopScheduled() {
|
|
@@ -39,7 +39,6 @@ class AudioScheduledSourceNode : public AudioNode {
|
|
|
39
39
|
|
|
40
40
|
void setOnEndedCallbackId(uint64_t callbackId);
|
|
41
41
|
|
|
42
|
-
virtual double getStopTime() const = 0;
|
|
43
42
|
void disable() override;
|
|
44
43
|
|
|
45
44
|
protected:
|
|
@@ -48,6 +47,8 @@ class AudioScheduledSourceNode : public AudioNode {
|
|
|
48
47
|
|
|
49
48
|
PlaybackState playbackState_;
|
|
50
49
|
|
|
50
|
+
uint64_t onEndedCallbackId_ = 0;
|
|
51
|
+
|
|
51
52
|
void updatePlaybackInfo(
|
|
52
53
|
const std::shared_ptr<AudioBus>& processingBus,
|
|
53
54
|
int framesToProcess,
|
|
@@ -55,8 +56,6 @@ class AudioScheduledSourceNode : public AudioNode {
|
|
|
55
56
|
size_t &nonSilentFramesToProcess);
|
|
56
57
|
|
|
57
58
|
void handleStopScheduled();
|
|
58
|
-
|
|
59
|
-
uint64_t onEndedCallbackId_ = 0;
|
|
60
59
|
};
|
|
61
60
|
|
|
62
61
|
} // namespace audioapi
|
|
@@ -25,7 +25,6 @@ class OscillatorNode : public AudioScheduledSourceNode {
|
|
|
25
25
|
|
|
26
26
|
protected:
|
|
27
27
|
void processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
|
|
28
|
-
double getStopTime() const override;
|
|
29
28
|
|
|
30
29
|
private:
|
|
31
30
|
std::shared_ptr<AudioParam> frequencyParam_;
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
namespace audioapi {
|
|
6
6
|
|
|
7
|
-
AudioNodeDestructor::AudioNodeDestructor()
|
|
7
|
+
AudioNodeDestructor::AudioNodeDestructor() {
|
|
8
|
+
isExiting_ = false;
|
|
9
|
+
nodesForDeconstruction_.reserve(10);
|
|
8
10
|
thread_ = std::thread(&AudioNodeDestructor::process, this);
|
|
9
11
|
}
|
|
10
12
|
|
|
@@ -98,7 +98,7 @@ void AudioNodeManager::settlePendingConnections() {
|
|
|
98
98
|
|
|
99
99
|
void AudioNodeManager::cleanupNode(const std::shared_ptr<AudioNode> &node) {
|
|
100
100
|
nodeDeconstructor_.addNodeForDeconstruction(node);
|
|
101
|
-
node
|
|
101
|
+
node->cleanup();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
void AudioNodeManager::prepareNodesForDestruction() {
|
|
@@ -59,14 +59,25 @@ static AudioEngine *_sharedInstance = nil;
|
|
|
59
59
|
[self.audioEngine connect:sourceNode to:self.audioEngine.mainMixerNode format:format];
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
if (self.inputNode) {
|
|
63
|
+
[self.audioEngine attachNode:self.inputNode];
|
|
64
|
+
[self.audioEngine connect:self.audioEngine.inputNode to:self.inputNode format:nil];
|
|
65
|
+
}
|
|
64
66
|
|
|
65
|
-
[self
|
|
67
|
+
[self startIfNecessary];
|
|
66
68
|
|
|
67
69
|
return true;
|
|
68
70
|
}
|
|
69
71
|
|
|
72
|
+
- (bool)restartAudioEngine
|
|
73
|
+
{
|
|
74
|
+
if ([self.audioEngine isRunning]) {
|
|
75
|
+
[self.audioEngine stop];
|
|
76
|
+
}
|
|
77
|
+
self.audioEngine = [[AVAudioEngine alloc] init];
|
|
78
|
+
return [self rebuildAudioEngine];
|
|
79
|
+
}
|
|
80
|
+
|
|
70
81
|
- (void)startEngine
|
|
71
82
|
{
|
|
72
83
|
NSLog(@"[AudioEngine] startEngine");
|
|
@@ -195,6 +195,16 @@
|
|
|
195
195
|
return true;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
- (bool)reconfigureAudioSession
|
|
199
|
+
{
|
|
200
|
+
self.hasDirtySettings = true;
|
|
201
|
+
if (self.isActive) {
|
|
202
|
+
self.isActive = false;
|
|
203
|
+
return [self setActive:true];
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
|
|
198
208
|
- (void)requestRecordingPermissions:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
|
|
199
209
|
{
|
|
200
210
|
if (@available(iOS 17, *)) {
|
|
@@ -164,10 +164,8 @@ static NSString *VolumeObservationContext = @"VolumeObservationContext";
|
|
|
164
164
|
AudioEngine *audioEngine = self.audioAPIModule.audioEngine;
|
|
165
165
|
AudioSessionManager *audioSessionManager = self.audioAPIModule.audioSessionManager;
|
|
166
166
|
|
|
167
|
-
[
|
|
168
|
-
[
|
|
169
|
-
[self configureNotifications];
|
|
170
|
-
[audioEngine rebuildAudioEngine];
|
|
167
|
+
[audioSessionManager reconfigureAudioSession];
|
|
168
|
+
[audioEngine restartAudioEngine];
|
|
171
169
|
}
|
|
172
170
|
|
|
173
171
|
- (void)handleEngineConfigurationChange:(NSNotification *)notification
|
package/lib/commonjs/api.js
CHANGED
|
@@ -105,6 +105,12 @@ Object.defineProperty(exports, "ContextState", {
|
|
|
105
105
|
return _types.ContextState;
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
|
+
Object.defineProperty(exports, "CustomProcessorNode", {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () {
|
|
111
|
+
return _CustomProcessorNode.default;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
108
114
|
Object.defineProperty(exports, "GainNode", {
|
|
109
115
|
enumerable: true,
|
|
110
116
|
get: function () {
|
|
@@ -196,6 +202,7 @@ var _AudioParam = _interopRequireDefault(require("./core/AudioParam"));
|
|
|
196
202
|
var _AudioScheduledSourceNode = _interopRequireDefault(require("./core/AudioScheduledSourceNode"));
|
|
197
203
|
var _BaseAudioContext = _interopRequireDefault(require("./core/BaseAudioContext"));
|
|
198
204
|
var _BiquadFilterNode = _interopRequireDefault(require("./core/BiquadFilterNode"));
|
|
205
|
+
var _CustomProcessorNode = _interopRequireDefault(require("./core/CustomProcessorNode"));
|
|
199
206
|
var _GainNode = _interopRequireDefault(require("./core/GainNode"));
|
|
200
207
|
var _OscillatorNode = _interopRequireDefault(require("./core/OscillatorNode"));
|
|
201
208
|
var _StereoPannerNode = _interopRequireDefault(require("./core/StereoPannerNode"));
|
package/lib/commonjs/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_specs","require","_AudioBuffer","_interopRequireDefault","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_system","_useSytemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_specs","require","_AudioBuffer","_interopRequireDefault","_AudioBufferSourceNode","_AudioBufferQueueSourceNode","_AudioContext","_OfflineAudioContext","_AudioDestinationNode","_AudioNode","_AnalyserNode","_AudioParam","_AudioScheduledSourceNode","_BaseAudioContext","_BiquadFilterNode","_CustomProcessorNode","_GainNode","_OscillatorNode","_StereoPannerNode","_AudioRecorder","_system","_useSytemVolume","_types","_errors","e","__esModule","default","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","NativeAudioAPIModule","Error","install"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AA0CA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,2BAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,aAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,oBAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,qBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,UAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,aAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,WAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,yBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,iBAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,iBAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,oBAAA,GAAAZ,sBAAA,CAAAF,OAAA;AACA,IAAAe,SAAA,GAAAb,sBAAA,CAAAF,OAAA;AACA,IAAAgB,eAAA,GAAAd,sBAAA,CAAAF,OAAA;AACA,IAAAiB,iBAAA,GAAAf,sBAAA,CAAAF,OAAA;AACA,IAAAkB,cAAA,GAAAhB,sBAAA,CAAAF,OAAA;AACA,IAAAmB,OAAA,GAAAjB,sBAAA,CAAAF,OAAA;AACA,IAAAoB,eAAA,GAAAlB,sBAAA,CAAAF,OAAA;AAEA,IAAAqB,MAAA,GAAArB,OAAA;AAUA,IAAAsB,OAAA,GAAAtB,OAAA;AAMkB,SAAAE,uBAAAqB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AArElB;;AAgBA;;AAEA,IACEG,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,iBAAiB,IAAI,IAAI,EAChC;EACA,IAAI,CAACC,2BAAoB,EAAE;IACzB,MAAM,IAAIC,KAAK,CACb,iFACF,CAAC;EACH;EAEAD,2BAAoB,CAACE,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _AudioScheduledSourceNode = _interopRequireDefault(require("./AudioScheduledSourceNode"));
|
|
8
|
+
var _AudioParam = _interopRequireDefault(require("./AudioParam"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
class AudioBufferBaseSourceNode extends _AudioScheduledSourceNode.default {
|
|
11
|
+
constructor(context, node) {
|
|
12
|
+
super(context, node);
|
|
13
|
+
this.detune = new _AudioParam.default(node.detune, context);
|
|
14
|
+
this.playbackRate = new _AudioParam.default(node.playbackRate, context);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// eslint-disable-next-line accessor-pairs
|
|
18
|
+
set onPositionChanged(callback) {
|
|
19
|
+
const subscription = this.audioEventEmitter.addAudioEventListener('positionChanged', callback);
|
|
20
|
+
this.node.onPositionChanged = subscription.subscriptionId;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line accessor-pairs
|
|
24
|
+
set onPositionChangedInterval(value) {
|
|
25
|
+
this.node.onPositionChangedInterval = value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = AudioBufferBaseSourceNode;
|
|
29
|
+
//# sourceMappingURL=AudioBufferBaseSourceNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_AudioScheduledSourceNode","_interopRequireDefault","require","_AudioParam","e","__esModule","default","AudioBufferBaseSourceNode","AudioScheduledSourceNode","constructor","context","node","detune","AudioParam","playbackRate","onPositionChanged","callback","subscription","audioEventEmitter","addAudioEventListener","subscriptionId","onPositionChangedInterval","value","exports"],"sourceRoot":"../../../src","sources":["core/AudioBufferBaseSourceNode.ts"],"mappings":";;;;;;AACA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAsC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGvB,MAAMG,yBAAyB,SAASC,iCAAwB,CAAC;EAI9EC,WAAWA,CAACC,OAAyB,EAAEC,IAAgC,EAAE;IACvE,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IAEpB,IAAI,CAACC,MAAM,GAAG,IAAIC,mBAAU,CAACF,IAAI,CAACC,MAAM,EAAEF,OAAO,CAAC;IAClD,IAAI,CAACI,YAAY,GAAG,IAAID,mBAAU,CAACF,IAAI,CAACG,YAAY,EAAEJ,OAAO,CAAC;EAChE;;EAEA;EACA,IAAWK,iBAAiBA,CAACC,QAA6C,EAAE;IAC1E,MAAMC,YAAY,GAAG,IAAI,CAACC,iBAAiB,CAACC,qBAAqB,CAC/D,iBAAiB,EACjBH,QACF,CAAC;IAEA,IAAI,CAACL,IAAI,CAAgCI,iBAAiB,GACzDE,YAAY,CAACG,cAAc;EAC/B;;EAEA;EACA,IAAWC,yBAAyBA,CAACC,KAAa,EAAE;IACjD,IAAI,CAACX,IAAI,CAAgCU,yBAAyB,GAAGC,KAAK;EAC7E;AACF;AAACC,OAAA,CAAAjB,OAAA,GAAAC,yBAAA","ignoreList":[]}
|
|
@@ -4,18 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
8
|
-
var _AudioParam = _interopRequireDefault(require("./AudioParam"));
|
|
7
|
+
var _AudioBufferBaseSourceNode = _interopRequireDefault(require("./AudioBufferBaseSourceNode"));
|
|
9
8
|
var _errors = require("../errors");
|
|
10
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
-
class AudioBufferQueueSourceNode extends
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.detune = new _AudioParam.default(node.detune, context);
|
|
15
|
-
this.playbackRate = new _AudioParam.default(node.playbackRate, context);
|
|
16
|
-
}
|
|
17
|
-
enqueueBuffer(buffer, bufferId = 0, isLastBuffer = false) {
|
|
18
|
-
this.node.enqueueBuffer(buffer.buffer, bufferId, isLastBuffer);
|
|
10
|
+
class AudioBufferQueueSourceNode extends _AudioBufferBaseSourceNode.default {
|
|
11
|
+
enqueueBuffer(buffer, isLastBuffer = false) {
|
|
12
|
+
this.node.enqueueBuffer(buffer.buffer, isLastBuffer);
|
|
19
13
|
}
|
|
20
14
|
start(when = 0, offset) {
|
|
21
15
|
if (when < 0) {
|
|
@@ -26,7 +20,7 @@ class AudioBufferQueueSourceNode extends _AudioScheduledSourceNode.default {
|
|
|
26
20
|
throw new _errors.RangeError(`offset must be a finite non-negative number: ${offset}`);
|
|
27
21
|
}
|
|
28
22
|
}
|
|
29
|
-
this.node.start(when
|
|
23
|
+
this.node.start(when);
|
|
30
24
|
}
|
|
31
25
|
stop(when = 0) {
|
|
32
26
|
if (when < 0) {
|
|
@@ -37,17 +31,6 @@ class AudioBufferQueueSourceNode extends _AudioScheduledSourceNode.default {
|
|
|
37
31
|
pause() {
|
|
38
32
|
this.node.pause();
|
|
39
33
|
}
|
|
40
|
-
|
|
41
|
-
// eslint-disable-next-line accessor-pairs
|
|
42
|
-
set onPositionChanged(callback) {
|
|
43
|
-
const subscription = this.audioEventEmitter.addAudioEventListener('positionChanged', callback);
|
|
44
|
-
this.node.onPositionChanged = subscription.subscriptionId;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// eslint-disable-next-line accessor-pairs
|
|
48
|
-
set onPositionChangedInterval(value) {
|
|
49
|
-
this.node.onPositionChangedInterval = value;
|
|
50
|
-
}
|
|
51
34
|
}
|
|
52
35
|
exports.default = AudioBufferQueueSourceNode;
|
|
53
36
|
//# sourceMappingURL=AudioBufferQueueSourceNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_AudioBufferBaseSourceNode","_interopRequireDefault","require","_errors","e","__esModule","default","AudioBufferQueueSourceNode","AudioBufferBaseSourceNode","enqueueBuffer","buffer","isLastBuffer","node","start","when","offset","RangeError","stop","pause","exports"],"sourceRoot":"../../../src","sources":["core/AudioBufferQueueSourceNode.ts"],"mappings":";;;;;;AACA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAAuC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExB,MAAMG,0BAA0B,SAASC,kCAAyB,CAAC;EACzEC,aAAaA,CAClBC,MAAmB,EACnBC,YAAqB,GAAG,KAAK,EACvB;IACL,IAAI,CAACC,IAAI,CAAiCH,aAAa,CACtDC,MAAM,CAACA,MAAM,EACbC,YACF,CAAC;EACH;EAEgBE,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAe,EAAQ;IAC7D,IAAID,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIE,kBAAU,CAClB,8CAA8CF,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,EAAE;MACV,IAAIA,MAAM,GAAG,CAAC,EAAE;QACd,MAAM,IAAIC,kBAAU,CAClB,gDAAgDD,MAAM,EACxD,CAAC;MACH;IACF;IAEC,IAAI,CAACH,IAAI,CAAiCC,KAAK,CAACC,IAAI,CAAC;EACxD;EAEgBG,IAAIA,CAACH,IAAY,GAAG,CAAC,EAAQ;IAC3C,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIE,kBAAU,CAClB,8CAA8CF,IAAI,EACpD,CAAC;IACH;IAEC,IAAI,CAACF,IAAI,CAAiCK,IAAI,CAACH,IAAI,CAAC;EACvD;EAEOI,KAAKA,CAAA,EAAS;IAClB,IAAI,CAACN,IAAI,CAAiCM,KAAK,CAAC,CAAC;EACpD;AACF;AAACC,OAAA,CAAAb,OAAA,GAAAC,0BAAA","ignoreList":[]}
|
|
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _AudioBufferBaseSourceNode = _interopRequireDefault(require("./AudioBufferBaseSourceNode"));
|
|
8
8
|
var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
|
|
9
|
-
var _AudioParam = _interopRequireDefault(require("./AudioParam"));
|
|
10
9
|
var _errors = require("../errors");
|
|
11
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
class AudioBufferSourceNode extends
|
|
13
|
-
constructor(context, node) {
|
|
14
|
-
super(context, node);
|
|
15
|
-
this.detune = new _AudioParam.default(node.detune, context);
|
|
16
|
-
this.playbackRate = new _AudioParam.default(node.playbackRate, context);
|
|
17
|
-
}
|
|
11
|
+
class AudioBufferSourceNode extends _AudioBufferBaseSourceNode.default {
|
|
18
12
|
get buffer() {
|
|
19
13
|
const buffer = this.node.buffer;
|
|
20
14
|
if (!buffer) {
|
|
@@ -24,10 +18,10 @@ class AudioBufferSourceNode extends _AudioScheduledSourceNode.default {
|
|
|
24
18
|
}
|
|
25
19
|
set buffer(buffer) {
|
|
26
20
|
if (!buffer) {
|
|
27
|
-
this.node.
|
|
21
|
+
this.node.setBuffer(this.node, null);
|
|
28
22
|
return;
|
|
29
23
|
}
|
|
30
|
-
this.node.
|
|
24
|
+
this.node.setBuffer(this.node, buffer.buffer);
|
|
31
25
|
}
|
|
32
26
|
get loopSkip() {
|
|
33
27
|
return this.node.loopSkip;
|
|
@@ -69,17 +63,6 @@ class AudioBufferSourceNode extends _AudioScheduledSourceNode.default {
|
|
|
69
63
|
this.hasBeenStarted = true;
|
|
70
64
|
this.node.start(when, offset, duration);
|
|
71
65
|
}
|
|
72
|
-
|
|
73
|
-
// eslint-disable-next-line accessor-pairs
|
|
74
|
-
set onPositionChanged(callback) {
|
|
75
|
-
const subscription = this.audioEventEmitter.addAudioEventListener('positionChanged', callback);
|
|
76
|
-
this.node.onPositionChanged = subscription.subscriptionId;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// eslint-disable-next-line accessor-pairs
|
|
80
|
-
set onPositionChangedInterval(value) {
|
|
81
|
-
this.node.onPositionChangedInterval = value;
|
|
82
|
-
}
|
|
83
66
|
}
|
|
84
67
|
exports.default = AudioBufferSourceNode;
|
|
85
68
|
//# sourceMappingURL=AudioBufferSourceNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_AudioBufferBaseSourceNode","_interopRequireDefault","require","_AudioBuffer","_errors","e","__esModule","default","AudioBufferSourceNode","AudioBufferBaseSourceNode","buffer","node","AudioBuffer","setBuffer","loopSkip","value","loop","loopStart","loopEnd","start","when","offset","duration","RangeError","hasBeenStarted","InvalidStateError","exports"],"sourceRoot":"../../../src","sources":["core/AudioBufferSourceNode.ts"],"mappings":";;;;;;AACA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAA0D,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3C,MAAMG,qBAAqB,SAASC,kCAAyB,CAAC;EAC3E,IAAWC,MAAMA,CAAA,EAAuB;IACtC,MAAMA,MAAM,GAAI,IAAI,CAACC,IAAI,CAA4BD,MAAM;IAC3D,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,IAAIE,oBAAW,CAACF,MAAM,CAAC;EAChC;EAEA,IAAWA,MAAMA,CAACA,MAA0B,EAAE;IAC5C,IAAI,CAACA,MAAM,EAAE;MACV,IAAI,CAACC,IAAI,CAA4BE,SAAS,CAC7C,IAAI,CAACF,IAAI,EACT,IACF,CAAC;MACD;IACF;IAEC,IAAI,CAACA,IAAI,CAA4BE,SAAS,CAC7C,IAAI,CAACF,IAAI,EACTD,MAAM,CAACA,MACT,CAAC;EACH;EAEA,IAAWI,QAAQA,CAAA,EAAY;IAC7B,OAAQ,IAAI,CAACH,IAAI,CAA4BG,QAAQ;EACvD;EAEA,IAAWA,QAAQA,CAACC,KAAc,EAAE;IACjC,IAAI,CAACJ,IAAI,CAA4BG,QAAQ,GAAGC,KAAK;EACxD;EAEA,IAAWC,IAAIA,CAAA,EAAY;IACzB,OAAQ,IAAI,CAACL,IAAI,CAA4BK,IAAI;EACnD;EAEA,IAAWA,IAAIA,CAACD,KAAc,EAAE;IAC7B,IAAI,CAACJ,IAAI,CAA4BK,IAAI,GAAGD,KAAK;EACpD;EAEA,IAAWE,SAASA,CAAA,EAAW;IAC7B,OAAQ,IAAI,CAACN,IAAI,CAA4BM,SAAS;EACxD;EAEA,IAAWA,SAASA,CAACF,KAAa,EAAE;IACjC,IAAI,CAACJ,IAAI,CAA4BM,SAAS,GAAGF,KAAK;EACzD;EAEA,IAAWG,OAAOA,CAAA,EAAW;IAC3B,OAAQ,IAAI,CAACP,IAAI,CAA4BO,OAAO;EACtD;EAEA,IAAWA,OAAOA,CAACH,KAAa,EAAE;IAC/B,IAAI,CAACJ,IAAI,CAA4BO,OAAO,GAAGH,KAAK;EACvD;EAEOI,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAEC,MAAc,GAAG,CAAC,EAAEC,QAAiB,EAAQ;IAC1E,IAAIF,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIG,kBAAU,CAClB,8CAA8CH,IAAI,EACpD,CAAC;IACH;IAEA,IAAIC,MAAM,GAAG,CAAC,EAAE;MACd,MAAM,IAAIE,kBAAU,CAClB,gDAAgDF,MAAM,EACxD,CAAC;IACH;IAEA,IAAIC,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAC5B,MAAM,IAAIC,kBAAU,CAClB,kDAAkDD,QAAQ,EAC5D,CAAC;IACH;IAEA,IAAI,IAAI,CAACE,cAAc,EAAE;MACvB,MAAM,IAAIC,yBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACD,cAAc,GAAG,IAAI;IACzB,IAAI,CAACb,IAAI,CAA4BQ,KAAK,CAACC,IAAI,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EACrE;AACF;AAACI,OAAA,CAAAnB,OAAA,GAAAC,qBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AudioNode","_interopRequireDefault","require","_errors","_events","e","__esModule","default","AudioScheduledSourceNode","AudioNode","hasBeenStarted","audioEventEmitter","AudioEventEmitter","global","start","when","RangeError","InvalidStateError","node","stop","onended","callback","subscription","addAudioEventListener","subscriptionId","exports"],"sourceRoot":"../../../src","sources":["core/AudioScheduledSourceNode.ts"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/B,MAAMG,wBAAwB,SAASC,kBAAS,CAAC;EACpDC,cAAc,GAAY,KAAK;EACtBC,iBAAiB,GAAG,IAAIC,yBAAiB,CAC1DC,MAAM,CAACD,iBACT,CAAC;EAEME,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIC,kBAAU,CAClB,8CAA8CD,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACL,cAAc,EAAE;MACvB,MAAM,IAAIO,yBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACP,cAAc,GAAG,IAAI;IACzB,IAAI,CAACQ,IAAI,CAA+BJ,KAAK,CAACC,IAAI,CAAC;EACtD;EAEOI,IAAIA,CAACJ,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIC,kBAAU,CAClB,8CAA8CD,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACL,cAAc,EAAE;MACxB,MAAM,IAAIO,yBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACC,IAAI,CAA+BC,IAAI,CAACJ,IAAI,CAAC;EACrD;;EAEA;EACA,IAAWK,OAAOA,CAACC,
|
|
1
|
+
{"version":3,"names":["_AudioNode","_interopRequireDefault","require","_errors","_events","e","__esModule","default","AudioScheduledSourceNode","AudioNode","hasBeenStarted","audioEventEmitter","AudioEventEmitter","global","start","when","RangeError","InvalidStateError","node","stop","onended","callback","subscription","addAudioEventListener","subscriptionId","exports"],"sourceRoot":"../../../src","sources":["core/AudioScheduledSourceNode.ts"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/B,MAAMG,wBAAwB,SAASC,kBAAS,CAAC;EACpDC,cAAc,GAAY,KAAK;EACtBC,iBAAiB,GAAG,IAAIC,yBAAiB,CAC1DC,MAAM,CAACD,iBACT,CAAC;EAEME,KAAKA,CAACC,IAAY,GAAG,CAAC,EAAQ;IACnC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIC,kBAAU,CAClB,8CAA8CD,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,IAAI,CAACL,cAAc,EAAE;MACvB,MAAM,IAAIO,yBAAiB,CAAC,kCAAkC,CAAC;IACjE;IAEA,IAAI,CAACP,cAAc,GAAG,IAAI;IACzB,IAAI,CAACQ,IAAI,CAA+BJ,KAAK,CAACC,IAAI,CAAC;EACtD;EAEOI,IAAIA,CAACJ,IAAY,GAAG,CAAC,EAAQ;IAClC,IAAIA,IAAI,GAAG,CAAC,EAAE;MACZ,MAAM,IAAIC,kBAAU,CAClB,8CAA8CD,IAAI,EACpD,CAAC;IACH;IAEA,IAAI,CAAC,IAAI,CAACL,cAAc,EAAE;MACxB,MAAM,IAAIO,yBAAiB,CACzB,8CACF,CAAC;IACH;IAEC,IAAI,CAACC,IAAI,CAA+BC,IAAI,CAACJ,IAAI,CAAC;EACrD;;EAEA;EACA,IAAWK,OAAOA,CAACC,QAAyC,EAAE;IAC5D,MAAMC,YAAY,GAAG,IAAI,CAACX,iBAAiB,CAACY,qBAAqB,CAC/D,OAAO,EACPF,QACF,CAAC;IAEA,IAAI,CAACH,IAAI,CAA+BE,OAAO,GAC9CE,YAAY,CAACE,cAAc;EAC/B;AACF;AAACC,OAAA,CAAAlB,OAAA,GAAAC,wBAAA","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _AudioDestinationNode = _interopRequireDefault(require("./AudioDestinationNode"));
|
|
8
8
|
var _OscillatorNode = _interopRequireDefault(require("./OscillatorNode"));
|
|
9
|
+
var _CustomProcessorNode = _interopRequireDefault(require("./CustomProcessorNode"));
|
|
9
10
|
var _GainNode = _interopRequireDefault(require("./GainNode"));
|
|
10
11
|
var _StereoPannerNode = _interopRequireDefault(require("./StereoPannerNode"));
|
|
11
12
|
var _BiquadFilterNode = _interopRequireDefault(require("./BiquadFilterNode"));
|
|
@@ -31,6 +32,9 @@ class BaseAudioContext {
|
|
|
31
32
|
createOscillator() {
|
|
32
33
|
return new _OscillatorNode.default(this, this.context.createOscillator());
|
|
33
34
|
}
|
|
35
|
+
createCustomProcessor(identifier) {
|
|
36
|
+
return new _CustomProcessorNode.default(this, this.context.createCustomProcessor(identifier));
|
|
37
|
+
}
|
|
34
38
|
createGain() {
|
|
35
39
|
return new _GainNode.default(this, this.context.createGain());
|
|
36
40
|
}
|