The real parameter represents an array of cosine terms (traditionally the A terms). In audio terminology, the first element (index 0) is the DC-offset of the periodic waveform and is usually set to zero. The second element (index 1) represents the fundamental frequency. The third element represents the first overtone, and so on.
<span>var audioContext = new AudioContext(); </span><span>var osc = audioContext.createOscillator(); </span> <span>var real = new Float32Array([0,0.4,0.4,1,1,1,0.3,0.7,0.6,0.5,0.9,0.8]); </span> <span>var imag = new Float32Array(real.length); </span><span>var hornTable = audioContext.createPeriodicWave(real, imag); </span> osc <span>= audioContext.createOscillator(); </span>osc<span>.setPeriodicWave(hornTable); </span>osc<span>.frequency.value = 160; </span>osc<span>.connect(audioContext.destination); </span>osc<span>.start(0);</span>请参阅Pen自定义振荡器:Seb Molines(@clafou)的horn of codepen。
并不是完全舒缓的声音,而是非常接近录制的声音。当然,声音综合远远超出了单独的频谱,特别是信封是音色同样重要的方面。 从信号数据到傅立叶表 像我们刚刚一样手工创建傅立叶系数是很不寻常的(很少有声音像我们的喇叭声一样简单,它仅由谐波部分组成,即F的倍数)。通常,通过将真实信号数据馈入逆FFT(快速傅立叶变换)算法来计算傅立叶表。 您可以在铬存储库中找到用于选择声音的傅立叶系数,其中包括下面播放的器官声音:
美国警察警报器在低频和高频之间振荡。通过连接两个振荡器,我们可以使用Web音频API实现这一目标。第一个(低频振荡器或LFO)调节第二个产生可听见声波的第二个频率。 与以前一样,为了解构真实的东西,我们从同一录音中拍摄了警察警报声的光谱仪。
现在,我们看到一个鲨鱼鳍状波形,代表了警笛的节奏调制。标准振荡器仅支持正弦,方形,锯齿和三角形波形,因此我们不能依靠这些波形来模仿这种特定的波形。但是我们可以再次创建一个自定义振荡器。 首先,我们需要代表所需曲线的值数组。以下功能会产生这样的值,我们将其塞入一个名为Sharkfinvalues的数组中。The real parameter represents an array of cosine terms (traditionally the A terms). In audio terminology, the first element (index 0) is the DC-offset of the periodic waveform and is usually set to zero. The second element (index 1) represents the fundamental frequency. The third element represents the first overtone, and so on.最后,我们创建第二个振荡器,并通过增益节点将LFO输出的增益节点连接到其频率。我们的光谱仪显示波形持续约380ms,因此我们将LFO的频率设置为1/0.380。它还向我们表明,警笛的基本音调范围从约750Hz的低点到高约1650Hz(中位数为1200Hz±450Hz),因此我们将振荡器的频率设置为1200,LFO的增益为450。 现在,我们可以启动两个振荡器,以听到我们的警察。
<span>var audioContext = new AudioContext(); </span><span>var osc = audioContext.createOscillator(); </span> <span>var real = new Float32Array([0,0.4,0.4,1,1,1,0.3,0.7,0.6,0.5,0.9,0.8]); </span> <span>var imag = new Float32Array(real.length); </span><span>var hornTable = audioContext.createPeriodicWave(real, imag); </span> osc <span>= audioContext.createOscillator(); </span>osc<span>.setPeriodicWave(hornTable); </span>osc<span>.frequency.value = 160; </span>osc<span>.connect(audioContext.destination); </span>osc<span>.start(0);</span>
请参阅Codepen上的Seb Molines(@clafou)的笔警笛。
对于更多的现实主义,我们还可以将自定义波形应用于第二个振荡器,正如我们用喇叭声所显示的那样。> Web Audio API是用于处理和合成Web应用程序中音频的高级JavaScript API。它允许开发人员选择音频源,为音频添加效果,创建音频可视化,应用空间效果(例如平移)等等。它通过创建音频上下文来起作用,可以从中创建各种音频节点并将其连接在一起以形成音频路由图。每个节点都执行特定的音频函数,例如产生声音,更改音量或应用音频效果。
Web Audio API? Web音频API通常用于Web应用程序中的各种目的。其中包括播放和控制音频,在游戏中添加声音效果,创建音频可视化,在虚拟现实应用程序中应用空间效果,等等。它提供了一种强大而灵活的方式,可以在Web应用程序中使用音频。 Web Audio API API的某些限制是什么?强大而灵活,它确实有一些局限性。例如,它需要一个支持API的现代浏览器,用于更高级的音频处理任务可能很复杂。此外,由于它是高级API,因此与低级API相比,它可能无法提供某些应用所需的控制级别。 >有许多资源可用于了解有关Web音频API的更多信息。 Mozilla开发人员网络(MDN)提供了有关API的全面文档,包括指南和教程。在Codecademy,Udemy和Coursera等网站上也有许多在线教程和课程。此外,还有几本关于该主题的书籍,例如Boris Smus的“ Web Audio API”。>如何使用Web Audio API控制音频的播放?这包括启动和停止音频,调整播放率并寻求音频不同部分的能力。这通常是使用AudioBufferSourcenode接口完成的,该接口代表由内存音频数据组成的音频源。
我可以使用Web Audio API记录音频吗?是的,可以使用Web音频API记录音频,尽管这不是其主要目的。这通常是使用MediaStreamAudioSourCenode接口完成的,该接口代表由媒体流组成的音频源(例如来自麦克风或其他音频输入设备)。
>我如何了解有关Web Audio API的更多信息? 🎜>
以上是使用Web音频API使用傅立叶变换的详细内容。更多信息请关注PHP中文网其他相关文章!