【问题标题】:Arbitrary wave table for a custom oscillator自定义振荡器的任意波表
【发布时间】:2014-09-04 19:04:01
【问题描述】:

我需要为振荡器创建一个特定的自定义波形以用于 Web Audio API。

我有一个 Javascript 函数来输出所需的波形(为任何给定的 x 计算介于 -1 和 1 之间的 y),绘制的结果如下所示:

但是,Web Audio API documentation 仅允许您通过 createPeriodicWave 函数基于谐波表创建自定义波表,然后可用于通过 setPeriodicWave 配置自定义振荡器。是否有通用技术可用于根据我的波形函数计算谐波表?

【问题讨论】:

    标签: fft web-audio-api sound-synthesis


    【解决方案1】:

    长度恰好是自定义波形一个周期的 DFT(或 FFT)将生成谐波表。只需低通滤波器并对波形进行 2^N 次采样,然后将其提供给通用库 FFT。 (选择足够大的 2^N 至少是低通滤波器或波形固有最高频率内容的 2 倍以上)。 FFT 产生的复数箱的幅度将是您的谐波功率电平。

    【讨论】:

    • 谢谢!我找到了dsp.js,但我有两个问题:1)我需要为我的输入提供一个采样率,但是我正在为振荡器构建一个波表并且我没有采样率,这不像我处理来自记录输入的信号,以及 2) 它输出一个表,但 Web Audio createPeriodicWave 函数需要两个数组(实数和图像),而不是一个!
    • 采样率是采样数除以波形周期,但不需要,因为您将使用原始 FFT bin 输出,而不是每个 bin 表示的频率值。要使用真实数据的复数输入 FFT,只需将虚部或数组设置为零。
    • 顺便说一下,我之前评论的第二点是不正确的,dsp.js 确实输出了两个(实数和虚数)数组。
    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 2022-07-08
    • 2015-11-30
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多