1 |
- {"ast":null,"code":"import { Tools } from \"../Misc/tools.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * Class used to work with sound analyzer using fast fourier transform (FFT)\n * @see https://doc.babylonjs.com/features/featuresDeepDive/audio/playingSoundsMusic\n */\nexport class Analyser {\n /**\n * Creates a new analyser\n * @param scene defines hosting scene\n */\n constructor(scene) {\n /**\n * Gets or sets the smoothing\n * @ignorenaming\n */\n this.SMOOTHING = 0.75;\n /**\n * Gets or sets the FFT table size\n * @ignorenaming\n */\n this.FFT_SIZE = 512;\n /**\n * Gets or sets the bar graph amplitude\n * @ignorenaming\n */\n this.BARGRAPHAMPLITUDE = 256;\n /**\n * Gets or sets the position of the debug canvas\n * @ignorenaming\n */\n this.DEBUGCANVASPOS = {\n x: 20,\n y: 20\n };\n /**\n * Gets or sets the debug canvas size\n * @ignorenaming\n */\n this.DEBUGCANVASSIZE = {\n width: 320,\n height: 200\n };\n scene = scene || EngineStore.LastCreatedScene;\n if (!scene) {\n return;\n }\n this._scene = scene;\n if (!AbstractEngine.audioEngine) {\n Tools.Warn(\"No audio engine initialized, failed to create an audio analyser\");\n return;\n }\n this._audioEngine = AbstractEngine.audioEngine;\n if (this._audioEngine.canUseWebAudio && this._audioEngine.audioContext) {\n this._webAudioAnalyser = this._audioEngine.audioContext.createAnalyser();\n this._webAudioAnalyser.minDecibels = -140;\n this._webAudioAnalyser.maxDecibels = 0;\n this._byteFreqs = new Uint8Array(this._webAudioAnalyser.frequencyBinCount);\n this._byteTime = new Uint8Array(this._webAudioAnalyser.frequencyBinCount);\n this._floatFreqs = new Float32Array(this._webAudioAnalyser.frequencyBinCount);\n }\n }\n /**\n * Get the number of data values you will have to play with for the visualization\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount\n * @returns a number\n */\n getFrequencyBinCount() {\n if (this._audioEngine.canUseWebAudio) {\n return this._webAudioAnalyser.frequencyBinCount;\n } else {\n return 0;\n }\n }\n /**\n * Gets the current frequency data as a byte array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData\n * @returns a Uint8Array\n */\n getByteFrequencyData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getByteFrequencyData(this._byteFreqs);\n }\n return this._byteFreqs;\n }\n /**\n * Gets the current waveform as a byte array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteTimeDomainData\n * @returns a Uint8Array\n */\n getByteTimeDomainData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getByteTimeDomainData(this._byteTime);\n }\n return this._byteTime;\n }\n /**\n * Gets the current frequency data as a float array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData\n * @returns a Float32Array\n */\n getFloatFrequencyData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getFloatFrequencyData(this._floatFreqs);\n }\n return this._floatFreqs;\n }\n /**\n * Renders the debug canvas\n */\n drawDebugCanvas() {\n if (this._audioEngine.canUseWebAudio) {\n if (!this._debugCanvas) {\n this._debugCanvas = document.createElement(\"canvas\");\n this._debugCanvas.width = this.DEBUGCANVASSIZE.width;\n this._debugCanvas.height = this.DEBUGCANVASSIZE.height;\n this._debugCanvas.style.position = \"absolute\";\n this._debugCanvas.style.top = this.DEBUGCANVASPOS.y + \"px\";\n this._debugCanvas.style.left = this.DEBUGCANVASPOS.x + \"px\";\n this._debugCanvasContext = this._debugCanvas.getContext(\"2d\");\n document.body.appendChild(this._debugCanvas);\n this._registerFunc = () => {\n this.drawDebugCanvas();\n };\n this._scene.registerBeforeRender(this._registerFunc);\n }\n if (this._registerFunc && this._debugCanvasContext) {\n const workingArray = this.getByteFrequencyData();\n this._debugCanvasContext.fillStyle = \"rgb(0, 0, 0)\";\n this._debugCanvasContext.fillRect(0, 0, this.DEBUGCANVASSIZE.width, this.DEBUGCANVASSIZE.height);\n // Draw the frequency domain chart.\n for (let i = 0; i < this.getFrequencyBinCount(); i++) {\n const value = workingArray[i];\n const percent = value / this.BARGRAPHAMPLITUDE;\n const height = this.DEBUGCANVASSIZE.height * percent;\n const offset = this.DEBUGCANVASSIZE.height - height - 1;\n const barWidth = this.DEBUGCANVASSIZE.width / this.getFrequencyBinCount();\n const hue = i / this.getFrequencyBinCount() * 360;\n this._debugCanvasContext.fillStyle = \"hsl(\" + hue + \", 100%, 50%)\";\n this._debugCanvasContext.fillRect(i * barWidth, offset, barWidth, height);\n }\n }\n }\n }\n /**\n * Stops rendering the debug canvas and removes it\n */\n stopDebugCanvas() {\n if (this._debugCanvas) {\n if (this._registerFunc) {\n this._scene.unregisterBeforeRender(this._registerFunc);\n this._registerFunc = null;\n }\n document.body.removeChild(this._debugCanvas);\n this._debugCanvas = null;\n this._debugCanvasContext = null;\n }\n }\n /**\n * Connects two audio nodes\n * @param inputAudioNode defines first node to connect\n * @param outputAudioNode defines second node to connect\n */\n connectAudioNodes(inputAudioNode, outputAudioNode) {\n if (this._audioEngine.canUseWebAudio) {\n inputAudioNode.connect(this._webAudioAnalyser);\n this._webAudioAnalyser.connect(outputAudioNode);\n }\n }\n /**\n * Releases all associated resources\n */\n dispose() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.disconnect();\n }\n }\n}","map":{"version":3,"names":["Tools","EngineStore","AbstractEngine","Analyser","constructor","scene","SMOOTHING","FFT_SIZE","BARGRAPHAMPLITUDE","DEBUGCANVASPOS","x","y","DEBUGCANVASSIZE","width","height","LastCreatedScene","_scene","audioEngine","Warn","_audioEngine","canUseWebAudio","audioContext","_webAudioAnalyser","createAnalyser","minDecibels","maxDecibels","_byteFreqs","Uint8Array","frequencyBinCount","_byteTime","_floatFreqs","Float32Array","getFrequencyBinCount","getByteFrequencyData","smoothingTimeConstant","fftSize","getByteTimeDomainData","getFloatFrequencyData","drawDebugCanvas","_debugCanvas","document","createElement","style","position","top","left","_debugCanvasContext","getContext","body","appendChild","_registerFunc","registerBeforeRender","workingArray","fillStyle","fillRect","i","value","percent","offset","barWidth","hue","stopDebugCanvas","unregisterBeforeRender","removeChild","connectAudioNodes","inputAudioNode","outputAudioNode","connect","dispose","disconnect"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Audio/analyser.js"],"sourcesContent":["import { Tools } from \"../Misc/tools.js\";\nimport { EngineStore } from \"../Engines/engineStore.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * Class used to work with sound analyzer using fast fourier transform (FFT)\n * @see https://doc.babylonjs.com/features/featuresDeepDive/audio/playingSoundsMusic\n */\nexport class Analyser {\n /**\n * Creates a new analyser\n * @param scene defines hosting scene\n */\n constructor(scene) {\n /**\n * Gets or sets the smoothing\n * @ignorenaming\n */\n this.SMOOTHING = 0.75;\n /**\n * Gets or sets the FFT table size\n * @ignorenaming\n */\n this.FFT_SIZE = 512;\n /**\n * Gets or sets the bar graph amplitude\n * @ignorenaming\n */\n this.BARGRAPHAMPLITUDE = 256;\n /**\n * Gets or sets the position of the debug canvas\n * @ignorenaming\n */\n this.DEBUGCANVASPOS = { x: 20, y: 20 };\n /**\n * Gets or sets the debug canvas size\n * @ignorenaming\n */\n this.DEBUGCANVASSIZE = { width: 320, height: 200 };\n scene = scene || EngineStore.LastCreatedScene;\n if (!scene) {\n return;\n }\n this._scene = scene;\n if (!AbstractEngine.audioEngine) {\n Tools.Warn(\"No audio engine initialized, failed to create an audio analyser\");\n return;\n }\n this._audioEngine = AbstractEngine.audioEngine;\n if (this._audioEngine.canUseWebAudio && this._audioEngine.audioContext) {\n this._webAudioAnalyser = this._audioEngine.audioContext.createAnalyser();\n this._webAudioAnalyser.minDecibels = -140;\n this._webAudioAnalyser.maxDecibels = 0;\n this._byteFreqs = new Uint8Array(this._webAudioAnalyser.frequencyBinCount);\n this._byteTime = new Uint8Array(this._webAudioAnalyser.frequencyBinCount);\n this._floatFreqs = new Float32Array(this._webAudioAnalyser.frequencyBinCount);\n }\n }\n /**\n * Get the number of data values you will have to play with for the visualization\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount\n * @returns a number\n */\n getFrequencyBinCount() {\n if (this._audioEngine.canUseWebAudio) {\n return this._webAudioAnalyser.frequencyBinCount;\n }\n else {\n return 0;\n }\n }\n /**\n * Gets the current frequency data as a byte array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData\n * @returns a Uint8Array\n */\n getByteFrequencyData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getByteFrequencyData(this._byteFreqs);\n }\n return this._byteFreqs;\n }\n /**\n * Gets the current waveform as a byte array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteTimeDomainData\n * @returns a Uint8Array\n */\n getByteTimeDomainData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getByteTimeDomainData(this._byteTime);\n }\n return this._byteTime;\n }\n /**\n * Gets the current frequency data as a float array\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData\n * @returns a Float32Array\n */\n getFloatFrequencyData() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.smoothingTimeConstant = this.SMOOTHING;\n this._webAudioAnalyser.fftSize = this.FFT_SIZE;\n this._webAudioAnalyser.getFloatFrequencyData(this._floatFreqs);\n }\n return this._floatFreqs;\n }\n /**\n * Renders the debug canvas\n */\n drawDebugCanvas() {\n if (this._audioEngine.canUseWebAudio) {\n if (!this._debugCanvas) {\n this._debugCanvas = document.createElement(\"canvas\");\n this._debugCanvas.width = this.DEBUGCANVASSIZE.width;\n this._debugCanvas.height = this.DEBUGCANVASSIZE.height;\n this._debugCanvas.style.position = \"absolute\";\n this._debugCanvas.style.top = this.DEBUGCANVASPOS.y + \"px\";\n this._debugCanvas.style.left = this.DEBUGCANVASPOS.x + \"px\";\n this._debugCanvasContext = this._debugCanvas.getContext(\"2d\");\n document.body.appendChild(this._debugCanvas);\n this._registerFunc = () => {\n this.drawDebugCanvas();\n };\n this._scene.registerBeforeRender(this._registerFunc);\n }\n if (this._registerFunc && this._debugCanvasContext) {\n const workingArray = this.getByteFrequencyData();\n this._debugCanvasContext.fillStyle = \"rgb(0, 0, 0)\";\n this._debugCanvasContext.fillRect(0, 0, this.DEBUGCANVASSIZE.width, this.DEBUGCANVASSIZE.height);\n // Draw the frequency domain chart.\n for (let i = 0; i < this.getFrequencyBinCount(); i++) {\n const value = workingArray[i];\n const percent = value / this.BARGRAPHAMPLITUDE;\n const height = this.DEBUGCANVASSIZE.height * percent;\n const offset = this.DEBUGCANVASSIZE.height - height - 1;\n const barWidth = this.DEBUGCANVASSIZE.width / this.getFrequencyBinCount();\n const hue = (i / this.getFrequencyBinCount()) * 360;\n this._debugCanvasContext.fillStyle = \"hsl(\" + hue + \", 100%, 50%)\";\n this._debugCanvasContext.fillRect(i * barWidth, offset, barWidth, height);\n }\n }\n }\n }\n /**\n * Stops rendering the debug canvas and removes it\n */\n stopDebugCanvas() {\n if (this._debugCanvas) {\n if (this._registerFunc) {\n this._scene.unregisterBeforeRender(this._registerFunc);\n this._registerFunc = null;\n }\n document.body.removeChild(this._debugCanvas);\n this._debugCanvas = null;\n this._debugCanvasContext = null;\n }\n }\n /**\n * Connects two audio nodes\n * @param inputAudioNode defines first node to connect\n * @param outputAudioNode defines second node to connect\n */\n connectAudioNodes(inputAudioNode, outputAudioNode) {\n if (this._audioEngine.canUseWebAudio) {\n inputAudioNode.connect(this._webAudioAnalyser);\n this._webAudioAnalyser.connect(outputAudioNode);\n }\n }\n /**\n * Releases all associated resources\n */\n dispose() {\n if (this._audioEngine.canUseWebAudio) {\n this._webAudioAnalyser.disconnect();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|