react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
159 lines (158 loc) • 6.34 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _errors = require("../errors");
var _utils = require("../utils");
var _AnalyserNode = _interopRequireDefault(require("./AnalyserNode"));
var _AudioBuffer = _interopRequireDefault(require("./AudioBuffer"));
var _AudioBufferQueueSourceNode = _interopRequireDefault(require("./AudioBufferQueueSourceNode"));
var _AudioBufferSourceNode = _interopRequireDefault(require("./AudioBufferSourceNode"));
var _AudioDecoder = require("./AudioDecoder");
var _AudioDestinationNode = _interopRequireDefault(require("./AudioDestinationNode"));
var _BiquadFilterNode = _interopRequireDefault(require("./BiquadFilterNode"));
var _ConstantSourceNode = _interopRequireDefault(require("./ConstantSourceNode"));
var _ConvolverNode = _interopRequireDefault(require("./ConvolverNode"));
var _DelayNode = _interopRequireDefault(require("./DelayNode"));
var _GainNode = _interopRequireDefault(require("./GainNode"));
var _IIRFilterNode = _interopRequireDefault(require("./IIRFilterNode"));
var _OscillatorNode = _interopRequireDefault(require("./OscillatorNode"));
var _PeriodicWave = _interopRequireDefault(require("./PeriodicWave"));
var _RecorderAdapterNode = _interopRequireDefault(require("./RecorderAdapterNode"));
var _StereoPannerNode = _interopRequireDefault(require("./StereoPannerNode"));
var _StreamerNode = _interopRequireDefault(require("./StreamerNode"));
var _WaveShaperNode = _interopRequireDefault(require("./WaveShaperNode"));
var _WorkletNode = _interopRequireDefault(require("./WorkletNode"));
var _WorkletProcessingNode = _interopRequireDefault(require("./WorkletProcessingNode"));
var _WorkletSourceNode = _interopRequireDefault(require("./WorkletSourceNode"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class BaseAudioContext {
constructor(context) {
this.context = context;
this.destination = new _AudioDestinationNode.default(this, context.destination);
this.sampleRate = context.sampleRate;
}
get currentTime() {
return this.context.currentTime;
}
get state() {
return this.context.state;
}
async decodeAudioData(input, fetchOptions) {
return await (0, _AudioDecoder.decodeAudioData)(input, this.sampleRate, fetchOptions);
}
async decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved = true) {
return await (0, _AudioDecoder.decodePCMInBase64)(base64String, inputSampleRate, inputChannelCount, isInterleaved);
}
createWorkletNode(callback, bufferLength, inputChannelCount, workletRuntime = 'AudioRuntime') {
if (inputChannelCount < 1 || inputChannelCount > 32) {
throw new _errors.NotSupportedError(`The number of input channels provided (${inputChannelCount}) can not be less than 1 or greater than 32`);
}
if (bufferLength < 1) {
throw new _errors.NotSupportedError(`The buffer length provided (${bufferLength}) can not be less than 1`);
}
(0, _utils.assertWorkletsEnabled)();
return new _WorkletNode.default(this, workletRuntime, callback, bufferLength, inputChannelCount);
}
createWorkletProcessingNode(callback, workletRuntime = 'AudioRuntime') {
(0, _utils.assertWorkletsEnabled)();
return new _WorkletProcessingNode.default(this, workletRuntime, callback);
}
createWorkletSourceNode(callback, workletRuntime = 'AudioRuntime') {
(0, _utils.assertWorkletsEnabled)();
return new _WorkletSourceNode.default(this, workletRuntime, callback);
}
createRecorderAdapter() {
return new _RecorderAdapterNode.default(this);
}
createOscillator() {
return new _OscillatorNode.default(this);
}
createStreamer(streamPath) {
return new _StreamerNode.default(this, {
streamPath
});
}
createConstantSource() {
return new _ConstantSourceNode.default(this);
}
createGain() {
return new _GainNode.default(this);
}
createDelay(maxDelayTime) {
if (maxDelayTime !== undefined) {
return new _DelayNode.default(this, {
maxDelayTime
});
} else {
return new _DelayNode.default(this);
}
}
createStereoPanner() {
return new _StereoPannerNode.default(this);
}
createBiquadFilter() {
return new _BiquadFilterNode.default(this);
}
createBufferSource(options) {
if (options !== undefined) {
return new _AudioBufferSourceNode.default(this, options);
} else {
return new _AudioBufferSourceNode.default(this);
}
}
createIIRFilter(feedforward, feedback) {
if (feedforward.length < 1 || feedforward.length > 20) {
throw new _errors.NotSupportedError(`The provided feedforward array has length (${feedforward.length}) outside the range [1, 20]`);
}
if (feedback.length < 1 || feedback.length > 20) {
throw new _errors.NotSupportedError(`The provided feedback array has length (${feedback.length}) outside the range [1, 20]`);
}
if (feedforward.every(value => value === 0)) {
throw new _errors.InvalidStateError(`Feedforward array must contain at least one non-zero value`);
}
if (feedback[0] === 0) {
throw new _errors.InvalidStateError(`First value of feedback array cannot be zero`);
}
return new _IIRFilterNode.default(this, {
feedforward,
feedback
});
}
createBufferQueueSource(options) {
if (options !== undefined) {
return new _AudioBufferQueueSourceNode.default(this, options);
} else {
return new _AudioBufferQueueSourceNode.default(this);
}
}
createBuffer(numberOfChannels, length, sampleRate) {
return new _AudioBuffer.default({
numberOfChannels,
length,
sampleRate
});
}
createPeriodicWave(real, imag, constraints) {
if (real.length !== imag.length) {
throw new _errors.InvalidAccessError(`The lengths of the real (${real.length}) and imaginary (${imag.length}) arrays must match.`);
}
return new _PeriodicWave.default(this, {
real,
imag,
...constraints
});
}
createAnalyser() {
return new _AnalyserNode.default(this);
}
createConvolver() {
return new _ConvolverNode.default(this);
}
createWaveShaper() {
return new _WaveShaperNode.default(this);
}
}
exports.default = BaseAudioContext;
//# sourceMappingURL=BaseAudioContext.js.map