react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
54 lines (45 loc) • 1.62 kB
text/typescript
import BaseAudioContext from './BaseAudioContext.web';
import { ChannelCountMode, ChannelInterpretation } from '../types';
import AudioParam from './AudioParam.web';
export default class AudioNode {
readonly context: BaseAudioContext;
readonly numberOfInputs: number;
readonly numberOfOutputs: number;
readonly channelCount: number;
readonly channelCountMode: ChannelCountMode;
readonly channelInterpretation: ChannelInterpretation;
readonly node: globalThis.AudioNode;
constructor(context: BaseAudioContext, node: globalThis.AudioNode) {
this.context = context;
this.node = node;
this.numberOfInputs = this.node.numberOfInputs;
this.numberOfOutputs = this.node.numberOfOutputs;
this.channelCount = this.node.channelCount;
this.channelCountMode = this.node.channelCountMode;
this.channelInterpretation = this.node.channelInterpretation;
}
public connect(destination: AudioNode | AudioParam): AudioNode | AudioParam {
if (this.context !== destination.context) {
throw new Error(
'Source and destination are from different BaseAudioContexts'
);
}
if (destination instanceof AudioParam) {
this.node.connect(destination.param);
} else {
this.node.connect(destination.node);
}
return destination;
}
public disconnect(destination?: AudioNode | AudioParam): void {
if (destination === undefined) {
this.node.disconnect();
return;
}
if (destination instanceof AudioParam) {
this.node.disconnect(destination.param);
return;
}
this.node.disconnect(destination.node);
}
}