javascript - 如何在 Web Audio API 中为 OscillatorNode 设置相位偏移?

标签 javascript audio webkit web-audio-api

我正在尝试实现立体声相位,如下所述:http://www.image-line.com/support/FLHelp/html/plugins/3x%20OSC.htm

“立体声相位 (SP) - 允许您为发生器的左右声道设置不同的相位偏移。偏移导致振荡器从振荡器形状的不同点开始(例如,从最高点开始正弦函数的值而不是零点)。立体声相位偏移增加了所产生声音的丰富度和立体声全景。”

我正在尝试为 OscillatorNode 实现此目的。我唯一的想法是使用 createPeriodicWave ( https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#dfn-createPeriodicWave ) 但是,规范中关于创建周期波的描述超出了我的理解范围,我还没有通过 Google 找到任何示例。

任何有助于破译 createPeriodicWave 描述的帮助以及关于如何实现此效果的任何其他想法都会有所帮助。

谢谢!

最佳答案

麦克莱伦等人,

这个答案帮助了我,随后让我进入了傅立叶的世界。在a page on the subject的帮助下和一些维基百科,我想我已经记下了方形和锯齿形图案,但三 Angular 形图案仍然让我望而却步。有人知道吗?

它确实给了你相移的能力,如this article by Nick Thompson explains (虽然他调用AudioContext方法的方式不同,但是原理是一样的)。

就方形和锯齿形图案而言:

var n = 4096;
var real = new Float32Array(n);
var imag = new Float32Array(n);
var ac = new AudioContext();
var osc = ac.createOscillator();

/* Pick a wave pattern */

/* Sine 
imag[1] = 1; */

/* Sawtooth 
for(x=1;x<n;x++)
    imag[x] = 2.0 / (Math.pow(-1, x) * Math.PI * x); */

/* Square */
for(x=1;x<n;x+=2)
    imag[x] = 4.0 / (Math.PI * x);

var wave = ac.createPeriodicWave(real, imag);

osc.setPeriodicWave(wave);  
osc.connect(ac.destination);
osc.start();
osc.stop(2); /* Have it stop after 2 seconds */

这将播放激活的图案,在本例中为方形图案。三 Angular 形公式会是什么样子?

关于javascript - 如何在 Web Audio API 中为 OscillatorNode 设置相位偏移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513722/

相关文章:

javascript - 访问类中自定义元素的内容选择器

ios - 使用MPMoviePlayerController流音频

javascript - 如何在 Safari 中使用scrollTop 属性

javascript - CSS -webkit-filter 在 Chrome 22.0 中不起作用

特定于浏览器的 CSS 样式

javascript - 替换移动浏览器的 getUserMedia()

javascript - ES6 Promise.all() promise 数组的奇怪解析

javascript - Mootools 破坏了我的全局变量!!!谷歌地图 + Mootools

javascript - 可以使用 Web Audio API 和 createMediaElementSource 分析来自 Icecast 的流音频吗?

javascript - 可能使用 JS 从 html iframe 中静音音频源