codecamp

three.js AudioAnalyser

创建AudioAnalyser对象, 使用AnalyserNode 去分析音频数据.

使用了 Web Audio API.

代码示例

// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );

// create an Audio source
const sound = new THREE.Audio( listener );

// load a sound and set it as the Audio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
	sound.setBuffer( buffer );
	sound.setLoop(true);
	sound.setVolume(0.5);
	sound.play();
});

// create an AudioAnalyser, passing in the sound and desired fftSize
const analyser = new THREE.AudioAnalyser( sound, 32 );

// get the average frequency of the sound
const data = analyser.getAverageFrequency();

例子

webaudio / sandbox

webaudio / visualizer

构造函数

AudioAnalyser( audio, fftSize )

创建AudioAnalyser.

属性

.analyser : AnalyserNode

AnalyserNode用来分析音频数据.

.fftSize : Integer

2的幂次方最高为2048, 用来表示确定频域的FFT (傅立叶变换)大小. 这个page有详细信息.

.data : Uint8Array

用来分析数据的Uint8Array的大小由analyser.frequencyBinCount 确定.

方法

.getFrequencyData () : Uint8Array

使用网络音频的getByteFrequencyData 方法. 看这个页面.

.getAverageFrequency () : Number

通过方法getFrequencyData获取平均频率.

源码

src/audio/AudioAnalyser.js


three.js Audio
three.js AudioContext
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

参考

核心 / BufferAttributes

渲染器 / WebXR

开发者参考

WebGL渲染器

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }