three.js AudioAnalyser、AudioContext、AudioListener、PositionalAudio

AudioAnalyser

// 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();

构造函数

AudioAnalyser( audio, fftSize )

创建AudioAnalyser.

属性

.analyser : AnalyserNode

AnalyserNode用来分析音频数据.

.fftSize : Integer

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

.data : Uint8Array

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

方法

.getFrequencyData () : Uint8Array

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

.getAverageFrequency () : Number

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

AudioContext

包含用来设置AudioContext的方法.

在AudioListener和AudioLoader 类中被使用.

使用了 Web Audio API.

方法

.getContext () : AudioContext

如果定义了,返回给外部context的值, 否则创建一个新的AudioContext.

.setContext ( value : AudioContext ) : AudioContext

外部用来设置 context 的值.

AudioListener

AudioListener 用一个虚拟的listener表示在场景中所有的位置和非位置相关的音效.
一个three.js程序通常创建一个AudioListener. 它是音频实体构造函数的必须参数,比如 Audio and PositionalAudio.
大多数情况下, listener对象是camera的子对象. Camera的3D变换表示了listener的3D变换.

// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create a global 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();
});

构造函数

AudioListener( )

创建一个新的AudioListener.

属性

.context : AudioContext

listener构造函数中的AudioContext.

.gain : GainNode

使用AudioContext.createGain()创建 GainNode.

.filter : AudioNode

默认为null.

.timeDelta : Number

Time delta value for audio entities. Use in context of AudioParam.linearRampToValueAtTimeDefault(). Default is 0.

方法

.getInput () : GainNode

返回gainNode.

.removeFilter () : AudioListener

设置filter属性为null.

.getFilter () : AudioNode

返回filter属性的值.

.setFilter ( value : AudioNode ) : AudioListener

设置filter 属性的值.

.getMasterVolume () : Float

返回音量.

.setMasterVolume ( value : Number ) : AudioListener

设置音量.

PositionalAudio

// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create the PositionalAudio object (passing in the listener)
const sound = new THREE.PositionalAudio( listener );
// load a sound and set it as the PositionalAudio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/song.ogg', function( buffer ) {
  sound.setBuffer( buffer );
  sound.setRefDistance( 20 );
  sound.play();
});
// create an object for the sound to play from
const sphere = new THREE.SphereGeometry( 20, 32, 16 );
const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
const mesh = new THREE.Mesh( sphere, material );
scene.add( mesh );
// finally add the sound to the mesh
mesh.add( sound );

构造函数

PositionalAudio( listener : AudioListener )

listener — (必须) AudioListener 实例.

属性

Audio类的继承属性.

.panner : PannerNode

位置相关音频的PannerNode.

方法

Audio类的继承方法.

.getOutput () : PannerNode

返回panner.

.getRefDistance () : Float

返回panner.refDistance的值.

.setRefDistance ( value : Float ) : PositionalAudio

设置panner.refDistance的值.

.getRolloffFactor () : Float

返回panner.rolloffFactor的值.

.setRolloffFactor ( value : Float ) : PositionalAudio

设置panner.rolloffFactor的值.

.getDistanceModel () : String

返回panner.distanceModel的值.

.setDistanceModel ( value : String ) : PositionalAudio

设置panner.distanceModel的值.

.getMaxDistance () : Float

返回panner.maxDistance的值.

.setMaxDistance ( value : Float ) : PositionalAudio

设置panner.maxDistance的值.

.setDirectionalCone ( coneInnerAngle : Float, coneOuterAngle : Float, coneOuterGain : Float ) : PositionalAudio

这个方法用来把环绕声音转换为定向声音directional sound.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值