Pac*_*Dev 6 javascript google-chrome html5-audio web-audio-api
var ctx = new webkitAudioContext();
pw = ctx.createWaveshaper();
Run Code Online (Sandbox Code Playgroud)
每次我在Google Chrome中使用CreatePeriodicWave()时,我都会得到
SyntaxError: Failed to construct 'PeriodicWave': invalid real array
Run Code Online (Sandbox Code Playgroud)
我应该在函数中放置什么来避免这个错误?
Tur*_*tle 17
要获得PeriodicWave,代码如下:
var context = new webkitAudioContext();
var realCoeffs = new Float32Array([0,0]); // No DC offset or cosine fundamental freq
var imagCoeffs = new Float32Array([0,1]); // sine of amplitude 1 at fundamental freq (First imaginary coeff is ignored)
var wave = context.createPeriodicWave(realCoeffs, imagCoeffs); // will be a simple sine wave
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用PeriodicWaveform wave在OscillatorNode:
var osc = context.createOscillator();
osc.setPeriodicWave(wave);
osc.frequency.value = 440;
osc.connect(context.destination);
osc.start(0);
Run Code Online (Sandbox Code Playgroud)
您可以通过查找"傅里叶级数"来了解有关系数的更多信息.缺点是:
让我们说f你的基本频率(相当于osc.frequency.value)
对于实系数,Kr:
Kr[0]是DC偏移(由cos(0 ft)创建的"波"的幅度)Kr[1]是基频处余弦波的幅度(cos(1 ft))Kr[2]是余弦波的在2振幅次谐波(COS(2 ft))的对于虚数系数它是相同的,除了它们是正弦波,而第0 个系数被忽略,因为它将是波的幅度,sin(0*t)对于所有t是0.
注意:如果你真的只想要一个锯齿,你可以通过将type振荡器节点中的属性设置为"锯齿" 来生成它,但如果假设该选项不可用,那么你可以这样做.
对于锯齿波,你可以在这里看到系数:http://mathworld.wolfram.com/FourierSeriesSawtoothWave.html
锯齿具有1/2的DC偏移(即第一实系数) - 实数系数的其余部分为0 - 以及形式1 /(nπ)的虚系数.因此,为了生产锯齿,您将更换线条
var realCoeffs = new Float32Array([0,0]);
var imagCoeffs = new Float32Array([0,1]);
Run Code Online (Sandbox Code Playgroud)
以上,具有以下内容:
var numCoeffs = 64; // The more coefficients you use, the better the approximation
var realCoeffs = new Float32Array(numCoeffs);
var imagCoeffs = new Float32Array(numCoeffs);
realCoeffs[0] = 0.5;
for (var i = 1; i < numCoeffs; i++) { // note i starts at 1
imagCoeffs[i] = 1 / (i * Math.PI);
}
Run Code Online (Sandbox Code Playgroud)
createPeriodicWave需要两个参数(都是Float32Array实例)来指定傅里叶级数的系数。第一个是real部分,它是余弦项的数组。第二个imag代表正弦项。
不过,您有想要解决的具体问题吗?我有一种感觉,仅仅知道参数可能Float32Array不会有那么大的帮助。
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |