首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Web中通过PeriodicWave播放缓冲区,我能设置像缓冲区一样响亮的增益吗?

在Web中通过PeriodicWave播放缓冲区,我能设置像缓冲区一样响亮的增益吗?
EN

Stack Overflow用户
提问于 2015-09-04 16:35:59
回答 2查看 198关注 0票数 0

我试着玩振荡器(缓冲器,->,FFT,->,PeriodicWave,->振荡器)。

代码语言:javascript
复制
// PeriodicWave (-> Oscillator)
var wave = fft(buffer), periodicwave = ctx.createPeriodicWave(wave[0], wave[1]);
function fft(input) {
    var n = input.length, theta = 2 * Math.PI / n,
        ar = new Float32Array(n), ai = new Float32Array(n),
        m, mh, i, j, k, irev,
        wr, wi, xr, xi,
        cos = Math.cos, sin = Math.sin;

    for(i=0; i<n; ++i) {
        ar[i] = input[i];
    }

    // scrambler
    i=0;
    for(j=1; j<n-1; ++j) {
        for(k = n>>1; k>(i ^= k); k>>=1);
        if(j<i) {
            xr = ar[j];
            xi = ai[j];
            ar[j] = ar[i];
            ai[j] = ai[i];
            ar[i] = xr;
            ai[i] = xi;
        }
    }
    for(mh=1; (m = mh << 1) <= n; mh=m) {
        irev = 0;
        for(i=0; i<n; i+=m) {
            wr = cos(theta * irev);
            wi = sin(theta * irev);
            for(k=n>>2; k > (irev ^= k); k>>=1);
            for(j=i; j<mh+i; ++j) {
                k = j + mh;
                xr = ar[j] - ar[k];
                xi = ai[j] - ai[k];
                ar[j] += ar[k];
                ai[j] += ai[k];
                ar[k] = wr * xr - wi * xi;
                ai[k] = wr * xi + wi * xr;
            }
        }
    }

    return [ar, ai];
}

这个码是好的,但是这个振荡器的增益是自动标准化的。我想设置增益和BufferSource (缓冲器-> AudioBuffer -> BufferSource)一样响亮,但是我尝试过使用AudioGainNode,参见这个测试代码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-04 17:57:30

createPeriodicWave自动缩放输出波形,使它的最大振幅为1。这意味着体积比你想象的要低。为了使振荡器输出与缓冲器输出容量相匹配,您必须对增益进行一些实验。尺度的大小取决于用于createPeriodicWave的波形。

然而,我认为beta (或金丝雀)版本的Chrome支持最近引入的参数disableNormalization: truecreatePeriodicWave禁用规范化。然后振荡器体积应该与缓冲器容量相匹配。

票数 1
EN

Stack Overflow用户

发布于 2015-09-04 17:56:06

您可以增加振荡器的增益;但是是的,PeriodicWave在默认情况下是正常化的。createPeriodicWave现在接受一个约束对象,使您能够禁用该规范化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32402804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档