我是Web音频API的新手,我正在尝试更改声音的播放率,而不必停止/暂停。当前,此代码作品(打字稿(:我加载了这样的声音:
private init(): void {
const tmpLoop: Audio = this.engineLoop = new Audio(this.cameraManager.listener);
const idleLoader: AudioLoader = new AudioLoader();
idleLoader.load("../../assets/sounds/engine.ogg",
(buffer: AudioBuffer) => {
tmpLoop.setBuffer(buffer);
tmpLoop.setLoop(true);
tmpLoop.setVolume(0.5);
},
() => { },
() => { });
}
然后我更改这样的播放架:
public modifyPlayBackSpeed(rpm: number): void {
if(rpm > 800)
{
this.engineLoop.pause();
this.engineLoop.playbackRate = (2/4700)*(rpm-800)+1;
this.engineLoop.play();
}
,但它远不及我想要的流畅,因为它会一直在每个框架上剪裁样品。
我希望声音在更改播放速度时连续播放,例如此引擎声音。
您可以为此使用SoundTouchj。文档有点少,因此您必须查看源,但是您可以调整一个"速率"属性,可以减慢/加速音频源节点的播放率。在UI中提供滑块或其他内容,并将其值附加到Onchange事件中的"费率"属性。
threethjs doc包含:audio.setplaybackrate((,它正是您需要的!
(而且很光滑,我没有从我刚刚测试的内容中删除(