WebAudio规范为两通道L / R平移(StereoPannerNode)和3D空间平移(PannerNode)提供了API调用。尽管如此,我找不到在iOS上可行的方法。
关于正常L / R平移,MDN says表示2D audioContext.createStereoPanner()未在iOS中实现。 (或者在台式机Safari上。)也许您可以通过直接调用PannerNode constructor来创建一个,但是我怀疑至少在iOS上能行得通。
AudioContext panning audio of playing media显示了一种使用通道合并和通道分离器而无需StereoPannerNode进行L / R平移的方法。但是,iOS上未实现createChannelMerger的MDN says。也许您可以直接致电ChannelMergeNode constructor,但我也怀疑至少在iOS上可以使用。
对于3D平移,MDN says iOS不支持audioContext.createPanner。 (而桌面Safari则是。)同样,也许您可以直接使用PannerNode构造函数,但我对此表示怀疑。因此,我认为3D平移也不起作用。
答案 0 :(得分:1)
在StereoPannerNode
是尚不可用,但3D PannerNode
应该正常工作(未作为构造还,但使用.createPanner()
方法)。例如,这是你如何能实现立体声声像与iOS上的3D声像:
var pan = -1; // This should be in range [-1, 1]
if (context.createStereoPanner) {
var panner = context.createPanner();
panner.pan.value = pan;
} else {
var panner = context.createPanner();
panner.panningModel = 'equalpower';
panner.setPosition(pan, 0, 1 - Math.abs(pan));
}
someSource.connect(panner);
panner.connect(context.destination);
我认为MDN支持表不准确或有点过时。在PannerNode docs at MDN中查找,支持表的外观与您链接的表不同。