stereopannernode 通过 pan 参数(-1 至 +1)调节立体声左右声道平衡:-1 为纯左,+1 为纯右,0 为居中;需创建后连接音频源与 destination,并支持 setvalueattime 和 linearramptovalueattime 实现平滑过渡。

使用 StereoPannerNode 调节左右声道平衡非常直接:它通过一个 pan 参数(范围 -1 到 +1)控制声音在立体声场中的位置,-1 表示纯左声道,+1 表示纯右声道,0 表示居中。
创建并连接 StereoPannerNode
你需要先创建 AudioContext 和一个音频源(如 OscillatorNode 或 AudioBufferSourceNode),再插入 StereoPannerNode 作为中间处理节点:
- 调用
audioContext.createStereoPanner()创建节点 - 将音频源的
connect()目标设为 panner,再把 panner 连到destination - 通过设置
panner.pan.value实时调整平衡(支持线性变化和自动化)
基础代码示例
以下是一个播放 440Hz 正弦波并控制声像的最小可运行片段:
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
const audioContext = new (window.AudioContext || window.webkitAudioContext)(); const oscillator = audioContext.createOscillator(); const panner = audioContext.createStereoPanner(); oscillator.connect(panner); panner.connect(audioContext.destination); oscillator.frequency.value = 440; oscillator.type = 'sine'; // 居中 panner.pan.value = 0; // 向左偏移 70% panner.pan.value = -0.7; // 向右偏移 100%(全右) panner.pan.value = 1; oscillator.start();
动态调节与平滑过渡
直接赋值 pan.value 是瞬时跳变,若需渐变效果,推荐使用 setValueAtTime() + linearRampToValueAtTime():
-
panner.pan.setValueAtTime(-0.5, audioContext.currentTime)设定起始点 -
panner.pan.linearRampToValueAtTime(0.5, audioContext.currentTime + 2)在 2 秒内线性扫到右端 - 也可用
exponentialRampToValueAtTime()实现对数式过渡(更符合人耳感知)
注意事项
StereoPannerNode 仅适用于双声道输出,输入必须是立体声或能升频为立体声的信号(单声道会被自动复制到左右);它不改变音量总和,只是重分配能量比例。若需更精细的空间控制(如 3D 定位),应考虑 PannerNode 配合 PositionalAudio。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










