@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
85 lines • 2.82 kB
JavaScript
import { _AudioAnalyzerSubNode } from "../../abstractAudio/subNodes/audioAnalyzerSubNode.js";
import { _GetEmptyByteFrequencyData, _GetEmptyFloatFrequencyData } from "../../abstractAudio/subProperties/audioAnalyzer.js";
/** @internal */
export async function _CreateAudioAnalyzerSubNodeAsync(engine) {
return new _WebAudioAnalyzerSubNode(engine);
}
/** @internal */
export class _WebAudioAnalyzerSubNode extends _AudioAnalyzerSubNode {
/** @internal */
constructor(engine) {
super(engine);
this._byteFrequencyData = null;
this._floatFrequencyData = null;
this._analyzerNode = new AnalyserNode(engine._audioContext);
}
/** @internal */
get fftSize() {
return this._analyzerNode.fftSize;
}
set fftSize(value) {
if (value === this._analyzerNode.fftSize) {
return;
}
this._analyzerNode.fftSize = value;
this._clearArrays();
}
/** @internal */
get _inNode() {
return this._analyzerNode;
}
/** @internal */
get minDecibels() {
return this._analyzerNode.minDecibels;
}
set minDecibels(value) {
this._analyzerNode.minDecibels = value;
}
/** @internal */
get maxDecibels() {
return this._analyzerNode.maxDecibels;
}
set maxDecibels(value) {
this._analyzerNode.maxDecibels = value;
}
/** @internal */
get smoothing() {
return this._analyzerNode.smoothingTimeConstant;
}
set smoothing(value) {
this._analyzerNode.smoothingTimeConstant = value;
}
/** @internal */
dispose() {
super.dispose();
this._clearArrays();
this._byteFrequencyData = null;
this._floatFrequencyData = null;
this._analyzerNode.disconnect();
}
/** @internal */
getClassName() {
return "_WebAudioAnalyzerSubNode";
}
/** @internal */
getByteFrequencyData() {
if (!this._byteFrequencyData || this._byteFrequencyData.length === 0) {
this._byteFrequencyData = new Uint8Array(this._analyzerNode.frequencyBinCount);
}
this._analyzerNode.getByteFrequencyData(this._byteFrequencyData);
return this._byteFrequencyData;
}
/** @internal */
getFloatFrequencyData() {
if (!this._floatFrequencyData || this._floatFrequencyData.length === 0) {
this._floatFrequencyData = new Float32Array(this._analyzerNode.frequencyBinCount);
}
this._analyzerNode.getFloatFrequencyData(this._floatFrequencyData);
return this._floatFrequencyData;
}
_clearArrays() {
this._byteFrequencyData?.set(_GetEmptyByteFrequencyData());
this._floatFrequencyData?.set(_GetEmptyFloatFrequencyData());
}
}
//# sourceMappingURL=webAudioAnalyzerSubNode.js.map