- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个长周期的复杂周期性声音。我想尽可能准确地定义频率,因此我使用步骤 sampleRate*0.5/tableLen
。但我对大波表有一些问题。声音变得失真并失去高频。
这是一个约 440 Hz 正弦波的最小示例。当我使用长度为 8192 的表格时,生成的正弦波非常容易识别:
https://jsfiddle.net/zxqzntf0/
var gAudioCtx = new AudioContext();
var osc = gAudioCtx.createOscillator();
var tableSize = 8192;
var real = new Float32Array(tableSize);
var imag = new Float32Array(tableSize);
var freq = 440;
var step = gAudioCtx.sampleRate*0.5/tableSize;
real[Math.floor(freq/step)] = 1;
var wave = gAudioCtx.createPeriodicWave(real, imag, {disableNormalization: true});
osc.frequency.value = step;
osc.setPeriodicWave(wave);
osc.connect(gAudioCtx.destination);
osc.start();
但是当我增加表格大小时,我发现了一些奇怪的事情。结果根本不是正弦波!
https://jsfiddle.net/0cc75nnm/
此问题会在所有浏览器(Chrome、Firefox、Edge)中重现,因此它似乎不是浏览器错误。但我在文档中没有找到任何关于此的信息。
已添加
我发现,如果振荡器频率是整数 >= 2 Hz,则表大小为 16384 时,我在生成的声音中没有任何伪影。我认为这对于我目前的需求来说是完全可以接受的。但有一天我可能想创造更长的时间。如果有人向我解释为什么当步长小于 2 Hz 时会出现声音伪影,我会接受他的答案。
有一个我用 JavaScript 生成的复杂声音旋律的示例: https://jsfiddle.net/h9rfzrnL/1/
最佳答案
您错误地创建了周期波。填充周期波数组时,假设采样率为1。那么如果您想要频率为440 Hz的振荡器,请将振荡器频率设置为440 Hz。
因此,对于正弦波,实数数组应全为零,虚数数组应为 [0, 1]。 (您实际上正在创建一个余弦波,但这并不重要。)
关于javascript - 创建具有长周期波的自定义振荡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319093/
这是我的问题 1)我有动态y数组数据,使用该数组如何连续绘制波浪。 如果Y数组数据完整,则使用相同的y数组数据继续。 2)声音自动播放在该数组值是143.if我停止不停止。 这是我的代码:
网络上有太多使用 WiFi 或蓝牙传输数据的对讲机应用程序(至少我见过的所有应用程序),但没有一个使用内置天线通过 radio 波传输数据真正的对讲机设备。 是否有任何安全原因?还是限制作为发送器/接
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve this
我正在尝试着手研究 boost wave,但到目前为止,我的运气并不好。 我尝试了网站上的示例代码。如下: #include #include #include #include #inclu
我正在尝试使用 svg 编写一个 javascript 加载器。想法是,它是一个从下到上两侧均匀填充的圆圈,加载器的顶线是一个从左到右不断移动的正弦波。 我能够根据百分比为加载程序创建弧线,如下所示:
这个问题在这里已经有了答案: Is there a one-line function that generates a triangle wave? (8 个答案) 关闭 9 年前。 我试图用 A
当我在论坛中搜索时,我了解到要定位 GPS,我必须通过互联网连接或短信发送坐标。但据我所知,我们可以通过 radio 波进行通信,发送语音、图片、数据。我可以用它来获取数据吗? GPS 设备?因为业余
我是一名优秀的程序员,十分优秀!