react-native-audio-api 0.11.0-nightly-0a987bc-20251120 → 0.11.0-nightly-6dcac64-20251122
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/RNAudioAPI.podspec +7 -5
- package/android/build.gradle +8 -2
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +18 -1
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +32 -0
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.cpp +33 -0
- package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.h +20 -0
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +4 -0
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +15 -2
- package/common/cpp/audioapi/core/BaseAudioContext.h +4 -0
- package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +166 -0
- package/common/cpp/audioapi/core/effects/IIRFilterNode.h +75 -0
- package/common/cpp/audioapi/core/sources/StreamerNode.h +5 -5
- package/common/cpp/audioapi/core/utils/Constants.h +1 -0
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +2 -0
- package/common/cpp/test/CMakeLists.txt +1 -0
- package/common/cpp/test/src/IIRFilterTest.cpp +153 -0
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +12 -0
- package/lib/commonjs/core/BaseAudioContext.js +23 -1
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/IIRFilterNode.js +19 -0
- package/lib/commonjs/core/IIRFilterNode.js.map +1 -0
- package/lib/commonjs/plugin/withAudioAPI.js +46 -0
- package/lib/commonjs/plugin/withAudioAPI.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/IIRFilterNode.js +19 -0
- package/lib/commonjs/web-core/IIRFilterNode.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/core/BaseAudioContext.js +24 -2
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/IIRFilterNode.js +13 -0
- package/lib/module/core/IIRFilterNode.js.map +1 -0
- package/lib/module/plugin/withAudioAPI.js +47 -1
- package/lib/module/plugin/withAudioAPI.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/IIRFilterNode.js +13 -0
- package/lib/module/web-core/IIRFilterNode.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/core/BaseAudioContext.d.ts +3 -1
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/IIRFilterNode.d.ts +5 -0
- package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +5 -1
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/plugin/withAudioAPI.d.ts +1 -0
- package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +4 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +3 -1
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +3 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/IIRFilterNode.d.ts +5 -0
- package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +3 -1
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/BaseAudioContext.ts +44 -2
- package/src/core/IIRFilterNode.ts +25 -0
- package/src/interfaces.ts +13 -1
- package/src/plugin/withAudioAPI.ts +61 -0
- package/src/types.ts +5 -0
- package/src/web-core/AudioContext.tsx +9 -0
- package/src/web-core/BaseAudioContext.tsx +7 -1
- package/src/web-core/IIRFilterNode.tsx +25 -0
- package/src/web-core/OfflineAudioContext.tsx +9 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#include <audioapi/core/OfflineAudioContext.h>
|
|
2
|
+
#include <audioapi/core/effects/IIRFilterNode.h>
|
|
3
|
+
#include <audioapi/core/utils/worklets/SafeIncludes.h>
|
|
4
|
+
#include <gtest/gtest.h>
|
|
5
|
+
#include <test/src/MockAudioEventHandlerRegistry.h>
|
|
6
|
+
#include <algorithm>
|
|
7
|
+
#include <complex>
|
|
8
|
+
#include <memory>
|
|
9
|
+
#include <numbers>
|
|
10
|
+
#include <vector>
|
|
11
|
+
|
|
12
|
+
using namespace audioapi;
|
|
13
|
+
|
|
14
|
+
class IIRFilterTest : public ::testing::Test {
|
|
15
|
+
protected:
|
|
16
|
+
std::shared_ptr<MockAudioEventHandlerRegistry> eventRegistry;
|
|
17
|
+
std::unique_ptr<OfflineAudioContext> context;
|
|
18
|
+
static constexpr int sampleRate = 44100;
|
|
19
|
+
static constexpr float nyquistFrequency = sampleRate / 2.0f;
|
|
20
|
+
static constexpr float tolerance = 0.0001f;
|
|
21
|
+
|
|
22
|
+
void SetUp() override {
|
|
23
|
+
eventRegistry = std::make_shared<MockAudioEventHandlerRegistry>();
|
|
24
|
+
context = std::make_unique<OfflineAudioContext>(
|
|
25
|
+
2, 5 * sampleRate, sampleRate, eventRegistry, RuntimeRegistry{});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static std::complex<double>
|
|
29
|
+
evaluatePolynomial(std::span<const double> coefficients, std::complex<double> z, int order) {
|
|
30
|
+
// Use Horner's method to evaluate the polynomial P(z) = sum(coef[k]*z^k, k, 0, order);
|
|
31
|
+
std::complex<double> result = 0;
|
|
32
|
+
for (int k = order; k >= 0; --k)
|
|
33
|
+
result = result * z + std::complex<double>(coefficients[k]);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static void getFrequencyResponseChromium(
|
|
38
|
+
std::vector<float> feedforward,
|
|
39
|
+
std::vector<float> feedback,
|
|
40
|
+
unsigned length,
|
|
41
|
+
std::span<const float> frequency,
|
|
42
|
+
std::span<float> magResponse,
|
|
43
|
+
std::span<float> phaseResponse,
|
|
44
|
+
float nyquistFrequency) {
|
|
45
|
+
assert(!frequency.empty());
|
|
46
|
+
assert(!magResponse.empty());
|
|
47
|
+
assert(!phaseResponse.empty());
|
|
48
|
+
|
|
49
|
+
std::vector<double> m_feedforward(feedforward.begin(), feedforward.end());
|
|
50
|
+
std::vector<double> m_feedback(feedback.begin(), feedback.end());
|
|
51
|
+
|
|
52
|
+
std::vector<float> normalizedFreq(frequency.size());
|
|
53
|
+
for (size_t i = 0; i < frequency.size(); ++i) {
|
|
54
|
+
normalizedFreq[i] = frequency[i] / nyquistFrequency;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Evaluate the z-transform of the filter at the given normalized frequencies
|
|
58
|
+
// from 0 to 1. (One corresponds to the Nyquist frequency.)
|
|
59
|
+
//
|
|
60
|
+
// The z-tranform of the filter is
|
|
61
|
+
//
|
|
62
|
+
// H(z) = sum(b[k]*z^(-k), k, 0, M) / sum(a[k]*z^(-k), k, 0, N);
|
|
63
|
+
//
|
|
64
|
+
// The desired frequency response is H(exp(j*omega)), where omega is in [0,
|
|
65
|
+
// 1).
|
|
66
|
+
//
|
|
67
|
+
// Let P(x) = sum(c[k]*x^k, k, 0, P) be a polynomial of order P. Then each of
|
|
68
|
+
// the sums in H(z) is equivalent to evaluating a polynomial at the point
|
|
69
|
+
// 1/z.
|
|
70
|
+
|
|
71
|
+
for (unsigned k = 0; k < length; ++k) {
|
|
72
|
+
if (normalizedFreq[k] < 0 || normalizedFreq[k] > 1) {
|
|
73
|
+
// Out-of-bounds frequencies should return NaN.
|
|
74
|
+
magResponse[k] = std::nanf("");
|
|
75
|
+
phaseResponse[k] = std::nanf("");
|
|
76
|
+
} else {
|
|
77
|
+
// zRecip = 1/z = exp(-j*frequency)
|
|
78
|
+
double omega = -std::numbers::pi * normalizedFreq[k];
|
|
79
|
+
auto zRecip = std::complex<double>(cos(omega), sin(omega));
|
|
80
|
+
|
|
81
|
+
auto numerator = evaluatePolynomial(m_feedforward, zRecip, m_feedforward.size() - 1);
|
|
82
|
+
auto denominator = evaluatePolynomial(m_feedback, zRecip, m_feedback.size() - 1);
|
|
83
|
+
auto response = numerator / denominator;
|
|
84
|
+
magResponse[k] = static_cast<float>(std::abs(response));
|
|
85
|
+
phaseResponse[k] = static_cast<float>(atan2(imag(response), real(response)));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
TEST_F(IIRFilterTest, IIRFilterCanBeCreated) {
|
|
92
|
+
const std::vector<float> feedforward = {1.0};
|
|
93
|
+
const std::vector<float> feedback = {1.0};
|
|
94
|
+
auto node = context->createIIRFilter(feedforward, feedback);
|
|
95
|
+
ASSERT_NE(node, nullptr);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
TEST_F(IIRFilterTest, GetFrequencyResponse) {
|
|
99
|
+
const std::vector<float> feedforward = {0.0050662636, 0.0101325272, 0.0050662636};
|
|
100
|
+
const std::vector<float> feedback = {1.0632762845, -1.9797349456, 0.9367237155};
|
|
101
|
+
|
|
102
|
+
auto node = std::make_shared<IIRFilterNode>(context.get(), feedforward, feedback);
|
|
103
|
+
|
|
104
|
+
float frequency = 1000.0f;
|
|
105
|
+
float normalizedFrequency = frequency / nyquistFrequency;
|
|
106
|
+
|
|
107
|
+
std::vector<float> TestFrequencies = {
|
|
108
|
+
-0.0001f,
|
|
109
|
+
0.0f,
|
|
110
|
+
0.0001f,
|
|
111
|
+
0.25f * nyquistFrequency,
|
|
112
|
+
0.5f * nyquistFrequency,
|
|
113
|
+
0.75f * nyquistFrequency,
|
|
114
|
+
nyquistFrequency - 0.0001f,
|
|
115
|
+
nyquistFrequency,
|
|
116
|
+
nyquistFrequency + 0.0001f};
|
|
117
|
+
|
|
118
|
+
std::vector<float> magResponseNode(TestFrequencies.size());
|
|
119
|
+
std::vector<float> phaseResponseNode(TestFrequencies.size());
|
|
120
|
+
std::vector<float> magResponseExpected(TestFrequencies.size());
|
|
121
|
+
std::vector<float> phaseResponseExpected(TestFrequencies.size());
|
|
122
|
+
|
|
123
|
+
node->getFrequencyResponse(
|
|
124
|
+
TestFrequencies.data(),
|
|
125
|
+
magResponseNode.data(),
|
|
126
|
+
phaseResponseNode.data(),
|
|
127
|
+
TestFrequencies.size());
|
|
128
|
+
getFrequencyResponseChromium(
|
|
129
|
+
feedforward,
|
|
130
|
+
feedback,
|
|
131
|
+
TestFrequencies.size(),
|
|
132
|
+
TestFrequencies,
|
|
133
|
+
magResponseExpected,
|
|
134
|
+
phaseResponseExpected,
|
|
135
|
+
nyquistFrequency);
|
|
136
|
+
|
|
137
|
+
for (size_t i = 0; i < TestFrequencies.size(); ++i) {
|
|
138
|
+
float f = TestFrequencies[i];
|
|
139
|
+
if (std::isnan(magResponseExpected[i])) {
|
|
140
|
+
EXPECT_TRUE(std::isnan(magResponseNode[i])) << "Expected NaN at frequency " << f;
|
|
141
|
+
} else {
|
|
142
|
+
EXPECT_NEAR(magResponseNode[i], magResponseExpected[i], tolerance)
|
|
143
|
+
<< "Magnitude mismatch at " << f << " Hz";
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (std::isnan(phaseResponseExpected[i])) {
|
|
147
|
+
EXPECT_TRUE(std::isnan(phaseResponseNode[i])) << "Expected NaN at frequency " << f;
|
|
148
|
+
} else {
|
|
149
|
+
EXPECT_NEAR(phaseResponseNode[i], phaseResponseExpected[i], tolerance)
|
|
150
|
+
<< "Phase mismatch at " << f << " Hz";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
#include <audioapi/dsp/VectorMath.h>
|
|
10
10
|
#include <audioapi/libs/audio-stretch/stretch.h>
|
|
11
11
|
#include <audioapi/libs/base64/base64.h>
|
|
12
|
+
#if !RN_AUDIO_API_FFMPEG_DISABLED
|
|
12
13
|
#include <audioapi/libs/ffmpeg/FFmpegDecoding.h>
|
|
14
|
+
#endif // RN_AUDIO_API_FFMPEG_DISABLED
|
|
13
15
|
#include <audioapi/utils/AudioArray.h>
|
|
14
16
|
#include <audioapi/utils/AudioBus.h>
|
|
15
17
|
|
|
@@ -67,12 +69,17 @@ std::shared_ptr<AudioBuffer> AudioDecoder::decodeWithFilePath(
|
|
|
67
69
|
float sampleRate)
|
|
68
70
|
{
|
|
69
71
|
if (AudioDecoder::pathHasExtension(path, {".mp4", ".m4a", ".aac"})) {
|
|
72
|
+
#if !RN_AUDIO_API_FFMPEG_DISABLED
|
|
70
73
|
auto buffer = ffmpegdecoder::decodeWithFilePath(path, static_cast<int>(sampleRate));
|
|
71
74
|
if (buffer == nullptr) {
|
|
72
75
|
NSLog(@"Failed to decode with FFmpeg: %s", path.c_str());
|
|
73
76
|
return nullptr;
|
|
74
77
|
}
|
|
75
78
|
return buffer;
|
|
79
|
+
#else
|
|
80
|
+
NSLog(@"FFmpeg is disabled, cannot decode file: %s", path.c_str());
|
|
81
|
+
return nullptr;
|
|
82
|
+
#endif // RN_AUDIO_API_FFMPEG_DISABLED
|
|
76
83
|
}
|
|
77
84
|
ma_decoder decoder;
|
|
78
85
|
ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 0, static_cast<int>(sampleRate));
|
|
@@ -101,12 +108,17 @@ AudioDecoder::decodeWithMemoryBlock(const void *data, size_t size, float sampleR
|
|
|
101
108
|
{
|
|
102
109
|
const AudioFormat format = AudioDecoder::detectAudioFormat(data, size);
|
|
103
110
|
if (format == AudioFormat::MP4 || format == AudioFormat::M4A || format == AudioFormat::AAC) {
|
|
111
|
+
#if !RN_AUDIO_API_FFMPEG_DISABLED
|
|
104
112
|
auto buffer = ffmpegdecoder::decodeWithMemoryBlock(data, size, static_cast<int>(sampleRate));
|
|
105
113
|
if (buffer == nullptr) {
|
|
106
114
|
NSLog(@"Failed to decode with FFmpeg");
|
|
107
115
|
return nullptr;
|
|
108
116
|
}
|
|
109
117
|
return buffer;
|
|
118
|
+
#else
|
|
119
|
+
NSLog(@"FFmpeg is disabled, cannot decode memory block");
|
|
120
|
+
return nullptr;
|
|
121
|
+
#endif // RN_AUDIO_API_FFMPEG_DISABLED
|
|
110
122
|
}
|
|
111
123
|
ma_decoder decoder;
|
|
112
124
|
ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 0, static_cast<int>(sampleRate));
|
|
@@ -23,6 +23,7 @@ var _RecorderAdapterNode = _interopRequireDefault(require("./RecorderAdapterNode
|
|
|
23
23
|
var _StereoPannerNode = _interopRequireDefault(require("./StereoPannerNode"));
|
|
24
24
|
var _StreamerNode = _interopRequireDefault(require("./StreamerNode"));
|
|
25
25
|
var _WorkletNode = _interopRequireDefault(require("./WorkletNode"));
|
|
26
|
+
var _IIRFilterNode = _interopRequireDefault(require("./IIRFilterNode"));
|
|
26
27
|
var _AudioDecoder = require("./AudioDecoder");
|
|
27
28
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
28
29
|
class BaseAudioContext {
|
|
@@ -90,7 +91,11 @@ class BaseAudioContext {
|
|
|
90
91
|
return new _OscillatorNode.default(this, this.context.createOscillator());
|
|
91
92
|
}
|
|
92
93
|
createStreamer() {
|
|
93
|
-
|
|
94
|
+
const streamer = this.context.createStreamer();
|
|
95
|
+
if (!streamer) {
|
|
96
|
+
throw new _errors.NotSupportedError('StreamerNode requires FFmpeg build');
|
|
97
|
+
}
|
|
98
|
+
return new _StreamerNode.default(this, streamer);
|
|
94
99
|
}
|
|
95
100
|
createConstantSource() {
|
|
96
101
|
return new _ConstantSourceNode.default(this, this.context.createConstantSource());
|
|
@@ -104,6 +109,23 @@ class BaseAudioContext {
|
|
|
104
109
|
createBiquadFilter() {
|
|
105
110
|
return new _BiquadFilterNode.default(this, this.context.createBiquadFilter());
|
|
106
111
|
}
|
|
112
|
+
createIIRFilter(options) {
|
|
113
|
+
const feedforward = options.feedforward;
|
|
114
|
+
const feedback = options.feedback;
|
|
115
|
+
if (feedforward.length < 1 || feedforward.length > 20) {
|
|
116
|
+
throw new _errors.NotSupportedError(`The provided feedforward array has length (${feedforward.length}) outside the range [1, 20]`);
|
|
117
|
+
}
|
|
118
|
+
if (feedback.length < 1 || feedback.length > 20) {
|
|
119
|
+
throw new _errors.NotSupportedError(`The provided feedback array has length (${feedback.length}) outside the range [1, 20]`);
|
|
120
|
+
}
|
|
121
|
+
if (feedforward.every(value => value === 0)) {
|
|
122
|
+
throw new _errors.InvalidStateError(`Feedforward array must contain at least one non-zero value`);
|
|
123
|
+
}
|
|
124
|
+
if (feedback[0] === 0) {
|
|
125
|
+
throw new _errors.InvalidStateError(`First value of feedback array cannot be zero`);
|
|
126
|
+
}
|
|
127
|
+
return new _IIRFilterNode.default(this, this.context.createIIRFilter(feedforward, feedback));
|
|
128
|
+
}
|
|
107
129
|
createBufferSource(options) {
|
|
108
130
|
const pitchCorrection = options?.pitchCorrection ?? false;
|
|
109
131
|
return new _AudioBufferSourceNode.default(this, this.context.createBufferSource(pitchCorrection));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_ConvolverNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_ConstantSourceNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_AudioDecoder","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","decodeAudioData","input","ArrayBuffer","TypeError","decodePCMInBase64","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","NotSupportedError","assertWorkletsEnabled","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","
|
|
1
|
+
{"version":3,"names":["_errors","require","_utils","_WorkletSourceNode","_interopRequireDefault","_WorkletProcessingNode","_AnalyserNode","_AudioBuffer","_AudioBufferQueueSourceNode","_ConvolverNode","_AudioBufferSourceNode","_AudioDestinationNode","_BiquadFilterNode","_ConstantSourceNode","_GainNode","_OscillatorNode","_PeriodicWave","_RecorderAdapterNode","_StereoPannerNode","_StreamerNode","_WorkletNode","_IIRFilterNode","_AudioDecoder","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","decodeAudioData","input","ArrayBuffer","TypeError","decodePCMInBase64","base64String","inputSampleRate","inputChannelCount","isInterleaved","createWorkletNode","callback","bufferLength","workletRuntime","NotSupportedError","assertWorkletsEnabled","shareableWorklet","workletsModule","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","WorkletNode","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","WorkletProcessingNode","createWorkletSourceNode","startOffset","WorkletSourceNode","createRecorderAdapter","RecorderAdapterNode","createOscillator","OscillatorNode","createStreamer","streamer","StreamerNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createIIRFilter","options","feedforward","feedback","length","every","value","InvalidStateError","IIRFilterNode","createBufferSource","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","createConvolver","numberOfChannels","ConvolverNode","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _errors = require("../errors");
|
|
8
|
+
var _AudioNode = _interopRequireDefault(require("./AudioNode"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
class IIRFilterNode extends _AudioNode.default {
|
|
11
|
+
getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput) {
|
|
12
|
+
if (frequencyArray.length !== magResponseOutput.length || frequencyArray.length !== phaseResponseOutput.length) {
|
|
13
|
+
throw new _errors.NotSupportedError(`The lengths of the arrays are not the same frequencyArray: ${frequencyArray.length}, magResponseOutput: ${magResponseOutput.length}, phaseResponseOutput: ${phaseResponseOutput.length}`);
|
|
14
|
+
}
|
|
15
|
+
this.node.getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = IIRFilterNode;
|
|
19
|
+
//# sourceMappingURL=IIRFilterNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_AudioNode","_interopRequireDefault","e","__esModule","default","IIRFilterNode","AudioNode","getFrequencyResponse","frequencyArray","magResponseOutput","phaseResponseOutput","length","NotSupportedError","node","exports"],"sourceRoot":"../../../src","sources":["core/IIRFilterNode.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAoC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErB,MAAMG,aAAa,SAASC,kBAAS,CAAC;EAC5CC,oBAAoBA,CACzBC,cAA4B,EAC5BC,iBAA+B,EAC/BC,mBAAiC,EACjC;IACA,IACEF,cAAc,CAACG,MAAM,KAAKF,iBAAiB,CAACE,MAAM,IAClDH,cAAc,CAACG,MAAM,KAAKD,mBAAmB,CAACC,MAAM,EACpD;MACA,MAAM,IAAIC,yBAAiB,CACzB,8DAA8DJ,cAAc,CAACG,MAAM,wBAAwBF,iBAAiB,CAACE,MAAM,0BAA0BD,mBAAmB,CAACC,MAAM,EACzL,CAAC;IACH;IACC,IAAI,CAACE,IAAI,CAAoBN,oBAAoB,CAChDC,cAAc,EACdC,iBAAiB,EACjBC,mBACF,CAAC;EACH;AACF;AAACI,OAAA,CAAAV,OAAA,GAAAC,aAAA","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ const withDefaultOptions = options => {
|
|
|
12
12
|
androidPermissions: ['android.permission.FOREGROUND_SERVICE', 'android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK'],
|
|
13
13
|
androidForegroundService: true,
|
|
14
14
|
androidFSTypes: ['mediaPlayback'],
|
|
15
|
+
disableFFmpeg: false,
|
|
15
16
|
...options
|
|
16
17
|
};
|
|
17
18
|
};
|
|
@@ -56,6 +57,48 @@ const withForegroundService = (config, {
|
|
|
56
57
|
return mod;
|
|
57
58
|
});
|
|
58
59
|
};
|
|
60
|
+
const withFFmpegConfig = (config, options) => {
|
|
61
|
+
const iosConf = (0, _configPlugins.withPodfile)(config, mod => {
|
|
62
|
+
let contents = mod.modResults.contents;
|
|
63
|
+
const ffmpegRegex = /^.*ENV\['DISABLE_AUDIOAPI_FFMPEG'\].*$/gm;
|
|
64
|
+
const podfileString = options.disableFFmpeg ? `ENV['DISABLE_AUDIOAPI_FFMPEG'] = '1'` : '';
|
|
65
|
+
// No existing setting
|
|
66
|
+
if (contents.search(ffmpegRegex) === -1) {
|
|
67
|
+
if (options.disableFFmpeg) {
|
|
68
|
+
if (contents.endsWith('\n')) {
|
|
69
|
+
contents = `${contents}${podfileString}`;
|
|
70
|
+
} else {
|
|
71
|
+
contents = `${contents}\n${podfileString}`;
|
|
72
|
+
}
|
|
73
|
+
mod.modResults.contents = contents;
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
// Existing setting found, will replace
|
|
77
|
+
contents = contents.replace(ffmpegRegex, podfileString);
|
|
78
|
+
}
|
|
79
|
+
mod.modResults.contents = contents;
|
|
80
|
+
return mod;
|
|
81
|
+
});
|
|
82
|
+
const finalConf = (0, _configPlugins.withGradleProperties)(iosConf, mod => {
|
|
83
|
+
const gradleProperties = mod.modResults;
|
|
84
|
+
const existingIndex = gradleProperties.findIndex(prop => prop.type === 'property' && prop.key === 'disableAudioapiFFmpeg');
|
|
85
|
+
if (existingIndex !== -1) {
|
|
86
|
+
gradleProperties.splice(existingIndex, 1);
|
|
87
|
+
} else if (!options.disableFFmpeg) {
|
|
88
|
+
// No existing setting and FFmpeg is enabled, do nothing.
|
|
89
|
+
return mod;
|
|
90
|
+
}
|
|
91
|
+
if (options.disableFFmpeg) {
|
|
92
|
+
gradleProperties.push({
|
|
93
|
+
type: 'property',
|
|
94
|
+
key: 'disableAudioapiFFmpeg',
|
|
95
|
+
value: options.disableFFmpeg ? 'true' : 'false'
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return mod;
|
|
99
|
+
});
|
|
100
|
+
return finalConf;
|
|
101
|
+
};
|
|
59
102
|
const withAudioAPI = (config, optionsIn) => {
|
|
60
103
|
const options = withDefaultOptions(optionsIn ?? {});
|
|
61
104
|
if (options.iosBackgroundMode) {
|
|
@@ -68,6 +111,9 @@ const withAudioAPI = (config, optionsIn) => {
|
|
|
68
111
|
if (options.iosMicrophonePermission) {
|
|
69
112
|
config = withIosMicrophonePermission(config, options);
|
|
70
113
|
}
|
|
114
|
+
if (options.disableFFmpeg !== undefined) {
|
|
115
|
+
config = withFFmpegConfig(config, options);
|
|
116
|
+
}
|
|
71
117
|
return config;
|
|
72
118
|
};
|
|
73
119
|
var _default = exports.default = (0, _configPlugins.createRunOncePlugin)(withAudioAPI, pkg.name, pkg.version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","pkg","withDefaultOptions","options","iosBackgroundMode","androidPermissions","androidForegroundService","androidFSTypes","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withIosMicrophonePermission","iosMicrophonePermission","NSMicrophoneUsageDescription","withAndroidPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withAudioAPI","optionsIn","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","pkg","withDefaultOptions","options","iosBackgroundMode","androidPermissions","androidForegroundService","androidFSTypes","disableFFmpeg","withBackgroundAudio","config","withInfoPlist","iosConfig","modResults","UIBackgroundModes","Array","from","Set","withIosMicrophonePermission","iosMicrophonePermission","NSMicrophoneUsageDescription","withAndroidPermissions","AndroidConfig","Permissions","withPermissions","withForegroundService","withAndroidManifest","mod","manifest","mainApplication","Manifest","getMainApplicationOrThrow","SFTypes","join","serviceElement","$","intentFilter","service","push","withFFmpegConfig","iosConf","withPodfile","contents","ffmpegRegex","podfileString","search","endsWith","replace","finalConf","withGradleProperties","gradleProperties","existingIndex","findIndex","prop","type","key","splice","value","withAudioAPI","optionsIn","undefined","_default","exports","default","createRunOncePlugin","name","version"],"sourceRoot":"../../../src","sources":["plugin/withAudioAPI.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ var _AudioDestinationNode = _interopRequireDefault(require("./AudioDestinationNo
|
|
|
10
10
|
var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
|
|
11
11
|
var _AudioBufferSourceNode = _interopRequireDefault(require("./AudioBufferSourceNode"));
|
|
12
12
|
var _BiquadFilterNode = _interopRequireDefault(require("./BiquadFilterNode"));
|
|
13
|
+
var _IIRFilterNode = _interopRequireDefault(require("./IIRFilterNode"));
|
|
13
14
|
var _GainNode = _interopRequireDefault(require("./GainNode"));
|
|
14
15
|
var _OscillatorNode = _interopRequireDefault(require("./OscillatorNode"));
|
|
15
16
|
var _PeriodicWave = _interopRequireDefault(require("./PeriodicWave"));
|
|
@@ -50,6 +51,9 @@ class AudioContext {
|
|
|
50
51
|
createBiquadFilter() {
|
|
51
52
|
return new _BiquadFilterNode.default(this, this.context.createBiquadFilter());
|
|
52
53
|
}
|
|
54
|
+
createIIRFilter(options) {
|
|
55
|
+
return new _IIRFilterNode.default(this, this.context.createIIRFilter(options.feedforward, options.feedback));
|
|
56
|
+
}
|
|
53
57
|
createConvolver(options) {
|
|
54
58
|
if (options?.buffer) {
|
|
55
59
|
const numberOfChannels = options.buffer.numberOfChannels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_AnalyserNode","_interopRequireDefault","_AudioDestinationNode","_AudioBuffer","_AudioBufferSourceNode","_BiquadFilterNode","_GainNode","_OscillatorNode","_PeriodicWave","_StereoPannerNode","_ConvolverNode","_LoadCustomWasm","_ConstantSourceNode","e","__esModule","default","AudioContext","constructor","options","sampleRate","NotSupportedError","context","window","destination","AudioDestinationNode","currentTime","state","createOscillator","OscillatorNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createConvolver","buffer","numberOfChannels","disableNormalization","ConvolverNode","createBufferSource","pitchCorrection","AudioBufferSourceNode","globalWasmPromise","wasmStretch","globalTag","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","close","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["web-core/AudioContext.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_errors","require","_AnalyserNode","_interopRequireDefault","_AudioDestinationNode","_AudioBuffer","_AudioBufferSourceNode","_BiquadFilterNode","_IIRFilterNode","_GainNode","_OscillatorNode","_PeriodicWave","_StereoPannerNode","_ConvolverNode","_LoadCustomWasm","_ConstantSourceNode","e","__esModule","default","AudioContext","constructor","options","sampleRate","NotSupportedError","context","window","destination","AudioDestinationNode","currentTime","state","createOscillator","OscillatorNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createIIRFilter","IIRFilterNode","feedforward","feedback","createConvolver","buffer","numberOfChannels","disableNormalization","ConvolverNode","createBufferSource","pitchCorrection","AudioBufferSourceNode","globalWasmPromise","wasmStretch","globalTag","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","close","resume","suspend","exports"],"sourceRoot":"../../../src","sources":["web-core/AudioContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _errors = require("../errors");
|
|
8
|
+
var _AudioNode = _interopRequireDefault(require("./AudioNode"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
class IIRFilterNode extends _AudioNode.default {
|
|
11
|
+
getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput) {
|
|
12
|
+
if (frequencyArray.length !== magResponseOutput.length || frequencyArray.length !== phaseResponseOutput.length) {
|
|
13
|
+
throw new _errors.NotSupportedError(`The lengths of the arrays are not the same frequencyArray: ${frequencyArray.length}, magResponseOutput: ${magResponseOutput.length}, phaseResponseOutput: ${phaseResponseOutput.length}`);
|
|
14
|
+
}
|
|
15
|
+
this.node.getFrequencyResponse(frequencyArray, magResponseOutput, phaseResponseOutput);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = IIRFilterNode;
|
|
19
|
+
//# sourceMappingURL=IIRFilterNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_AudioNode","_interopRequireDefault","e","__esModule","default","IIRFilterNode","AudioNode","getFrequencyResponse","frequencyArray","magResponseOutput","phaseResponseOutput","length","NotSupportedError","node","exports"],"sourceRoot":"../../../src","sources":["web-core/IIRFilterNode.tsx"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAoC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErB,MAAMG,aAAa,SAASC,kBAAS,CAAC;EAC5CC,oBAAoBA,CACzBC,cAA4B,EAC5BC,iBAA+B,EAC/BC,mBAAiC,EACjC;IACA,IACEF,cAAc,CAACG,MAAM,KAAKF,iBAAiB,CAACE,MAAM,IAClDH,cAAc,CAACG,MAAM,KAAKD,mBAAmB,CAACC,MAAM,EACpD;MACA,MAAM,IAAIC,yBAAiB,CACzB,8DAA8DJ,cAAc,CAACG,MAAM,wBAAwBF,iBAAiB,CAACE,MAAM,0BAA0BD,mBAAmB,CAACC,MAAM,EACzL,CAAC;IACH;IAEC,IAAI,CAACE,IAAI,CAA8BN,oBAAoB,CAC1DC,cAAc,EACdC,iBAAiB,EACjBC,mBACF,CAAC;EACH;AACF;AAACI,OAAA,CAAAV,OAAA,GAAAC,aAAA","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ var _AudioDestinationNode = _interopRequireDefault(require("./AudioDestinationNo
|
|
|
10
10
|
var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
|
|
11
11
|
var _AudioBufferSourceNode = _interopRequireDefault(require("./AudioBufferSourceNode"));
|
|
12
12
|
var _BiquadFilterNode = _interopRequireDefault(require("./BiquadFilterNode"));
|
|
13
|
+
var _IIRFilterNode = _interopRequireDefault(require("./IIRFilterNode"));
|
|
13
14
|
var _GainNode = _interopRequireDefault(require("./GainNode"));
|
|
14
15
|
var _OscillatorNode = _interopRequireDefault(require("./OscillatorNode"));
|
|
15
16
|
var _PeriodicWave = _interopRequireDefault(require("./PeriodicWave"));
|
|
@@ -51,6 +52,9 @@ class OfflineAudioContext {
|
|
|
51
52
|
createBiquadFilter() {
|
|
52
53
|
return new _BiquadFilterNode.default(this, this.context.createBiquadFilter());
|
|
53
54
|
}
|
|
55
|
+
createIIRFilter(options) {
|
|
56
|
+
return new _IIRFilterNode.default(this, this.context.createIIRFilter(options.feedforward, options.feedback));
|
|
57
|
+
}
|
|
54
58
|
createConvolver(options) {
|
|
55
59
|
if (options?.buffer) {
|
|
56
60
|
const numberOfChannels = options.buffer.numberOfChannels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_AnalyserNode","_interopRequireDefault","_AudioDestinationNode","_AudioBuffer","_AudioBufferSourceNode","_BiquadFilterNode","_GainNode","_OscillatorNode","_PeriodicWave","_StereoPannerNode","_ConstantSourceNode","_LoadCustomWasm","_ConvolverNode","e","__esModule","default","OfflineAudioContext","constructor","arg0","arg1","arg2","context","window","NotSupportedError","sampleRate","destination","AudioDestinationNode","currentTime","state","createOscillator","OscillatorNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","
|
|
1
|
+
{"version":3,"names":["_errors","require","_AnalyserNode","_interopRequireDefault","_AudioDestinationNode","_AudioBuffer","_AudioBufferSourceNode","_BiquadFilterNode","_IIRFilterNode","_GainNode","_OscillatorNode","_PeriodicWave","_StereoPannerNode","_ConstantSourceNode","_LoadCustomWasm","_ConvolverNode","e","__esModule","default","OfflineAudioContext","constructor","arg0","arg1","arg2","context","window","NotSupportedError","sampleRate","destination","AudioDestinationNode","currentTime","state","createOscillator","OscillatorNode","createConstantSource","ConstantSourceNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createIIRFilter","options","IIRFilterNode","feedforward","feedback","createConvolver","buffer","numberOfChannels","disableNormalization","ConvolverNode","createBufferSource","pitchCorrection","AudioBufferSourceNode","globalWasmPromise","wasmStretch","globalTag","createBuffer","numOfChannels","length","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","source","arrayBuffer","fetch","then","response","decodeAudioData","startRendering","resume","suspend","suspendTime","exports"],"sourceRoot":"../../../src","sources":["web-core/OfflineAudioContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { InvalidAccessError, NotSupportedError } from "../errors/index.js";
|
|
3
|
+
import { InvalidAccessError, InvalidStateError, NotSupportedError } from "../errors/index.js";
|
|
4
4
|
import { assertWorkletsEnabled, workletsModule } from "../utils/index.js";
|
|
5
5
|
import WorkletSourceNode from "./WorkletSourceNode.js";
|
|
6
6
|
import WorkletProcessingNode from "./WorkletProcessingNode.js";
|
|
@@ -19,6 +19,7 @@ import RecorderAdapterNode from "./RecorderAdapterNode.js";
|
|
|
19
19
|
import StereoPannerNode from "./StereoPannerNode.js";
|
|
20
20
|
import StreamerNode from "./StreamerNode.js";
|
|
21
21
|
import WorkletNode from "./WorkletNode.js";
|
|
22
|
+
import IIRFilterNode from "./IIRFilterNode.js";
|
|
22
23
|
import { decodeAudioData, decodePCMInBase64 } from "./AudioDecoder.js";
|
|
23
24
|
export default class BaseAudioContext {
|
|
24
25
|
constructor(context) {
|
|
@@ -85,7 +86,11 @@ export default class BaseAudioContext {
|
|
|
85
86
|
return new OscillatorNode(this, this.context.createOscillator());
|
|
86
87
|
}
|
|
87
88
|
createStreamer() {
|
|
88
|
-
|
|
89
|
+
const streamer = this.context.createStreamer();
|
|
90
|
+
if (!streamer) {
|
|
91
|
+
throw new NotSupportedError('StreamerNode requires FFmpeg build');
|
|
92
|
+
}
|
|
93
|
+
return new StreamerNode(this, streamer);
|
|
89
94
|
}
|
|
90
95
|
createConstantSource() {
|
|
91
96
|
return new ConstantSourceNode(this, this.context.createConstantSource());
|
|
@@ -99,6 +104,23 @@ export default class BaseAudioContext {
|
|
|
99
104
|
createBiquadFilter() {
|
|
100
105
|
return new BiquadFilterNode(this, this.context.createBiquadFilter());
|
|
101
106
|
}
|
|
107
|
+
createIIRFilter(options) {
|
|
108
|
+
const feedforward = options.feedforward;
|
|
109
|
+
const feedback = options.feedback;
|
|
110
|
+
if (feedforward.length < 1 || feedforward.length > 20) {
|
|
111
|
+
throw new NotSupportedError(`The provided feedforward array has length (${feedforward.length}) outside the range [1, 20]`);
|
|
112
|
+
}
|
|
113
|
+
if (feedback.length < 1 || feedback.length > 20) {
|
|
114
|
+
throw new NotSupportedError(`The provided feedback array has length (${feedback.length}) outside the range [1, 20]`);
|
|
115
|
+
}
|
|
116
|
+
if (feedforward.every(value => value === 0)) {
|
|
117
|
+
throw new InvalidStateError(`Feedforward array must contain at least one non-zero value`);
|
|
118
|
+
}
|
|
119
|
+
if (feedback[0] === 0) {
|
|
120
|
+
throw new InvalidStateError(`First value of feedback array cannot be zero`);
|
|
121
|
+
}
|
|
122
|
+
return new IIRFilterNode(this, this.context.createIIRFilter(feedforward, feedback));
|
|
123
|
+
}
|
|
102
124
|
createBufferSource(options) {
|
|
103
125
|
const pitchCorrection = options?.pitchCorrection ?? false;
|
|
104
126
|
return new AudioBufferSourceNode(this, this.context.createBufferSource(pitchCorrection));
|