react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
44 lines (40 loc) • 1.35 kB
text/typescript
import { IPeriodicWave } from '../jsi-interfaces';
import type BaseAudioContext from './BaseAudioContext';
import { PeriodicWaveOptions } from '../types';
import { PeriodicWaveOptionsValidator } from '../options-validators';
export function generateRealAndImag(
options?: PeriodicWaveOptions
): PeriodicWaveOptions {
let real: Float32Array | undefined;
let imag: Float32Array | undefined;
if (!options || (!options.real && !options.imag)) {
real = new Float32Array(2);
imag = new Float32Array(2);
imag[1] = 1;
} else {
real = options.real;
imag = options.imag;
PeriodicWaveOptionsValidator.validate(options);
if (real && !imag) {
imag = new Float32Array(real.length);
} else if (!real && imag) {
real = new Float32Array(imag.length);
}
}
const norm: boolean = options?.disableNormalization
? options.disableNormalization
: false;
return { real, imag, disableNormalization: norm };
}
export default class PeriodicWave {
/** @internal */
public readonly periodicWave: IPeriodicWave;
constructor(context: BaseAudioContext, options?: PeriodicWaveOptions) {
const finalOptions = generateRealAndImag(options);
this.periodicWave = context.context.createPeriodicWave(
finalOptions.real!,
finalOptions.imag!,
finalOptions.disableNormalization!
);
}
}