如何在 iPad 上使用 HTML5/Javascript 合成音频

Posted

技术标签:

【中文标题】如何在 iPad 上使用 HTML5/Javascript 合成音频【英文标题】:How to synthesize audio using HTML5/Javascript on iPad 【发布时间】:2010-09-01 14:36:55 【问题描述】:

有没有人在 iPad 上的 Mobile Safari 上使用 html5/javascript 合成(和播放)音频的工作示例代码?我在网上找到了一些基于 javascript 的声音合成示例,但它们似乎都只适用于 Firefox。

【问题讨论】:

我所知道的 JS 音频样本可在 FF、Safari、Opera 中使用……但它们似乎不适用于 iPad 版本的 Safari。一般来说,我发现该浏览器对 HMTL5 的支持要么迟缓要么损坏——至少对于我尝试过的功能而言。 【参考方案1】:

最近我遇到了这个 js-library,我想这就是你想要的 -> https://github.com/oampo/Audiolet

【讨论】:

这听起来像是一个有趣的库;但是,它仅适用于 Firefox 和某些版本的 Chrome。我正在寻找适用于 iPad 移动 Safari 的东西。【参考方案2】:

这是一个适用于 iPad 的示例:

www.cse.usf.edu/~turnerr/sound_demo.html

您可以从http://www.cse.usf.edu/~turnerr/Downloads/Sound_Demo.zip下载文件

此演示在基于 Unix 的服务器上。但是我无法在 IIS 服务器上获得相同的代码。希望有人可以提供有关 IIS 的帮助。

【讨论】:

对不起,但这没有帮助。播放现有音频文件不是问题 - 我需要即时渲染新音频(例如正弦波)然后播放它【参考方案3】:

您可以使用统一长度的生成数据 URI,例如 0.1 秒。这将为您提供 1/10 秒的延迟,并且您将生成那么多“帧”的音频。我不完全确定 iPad 支持哪些格式,但我读到它支持未压缩的 WAV。这种文件格式的信息很容易获得,我记得很久以前用一些原始的字节操作方法生成 WAV 文件。

请回复详细信息!

【讨论】:

我一直在考虑类似的解决方案。问题是,iPad 顽固地拒绝自动播放任何类型的音频——用户必须每秒点击一个按钮 10 次才能获得连续的音频。 @jms:很有趣。我正在尝试自己实现一个合成器,但我想模拟乐器的限制。所以你是说如果用户点击一个按钮,dataUri 在技术上会起作用吗?如果这是真的,我可以在没有进一步输入的情况下为未来生成预期的声音,然后用对额外输入的新预测替换它。这对我有用,因为我首先只根据用户输入生成声音。你有什么想法吗(这是一个老话题,我只知道到目前为止在支持方面没有任何进展)?【参考方案4】:

我正在回答一个非常古老的问题...但是现代 webkit 浏览器现在支持 Web Audio API。我写了一个非常simple fiddle,它使用正弦波生成和弦。只有 4 种内置波形,但您可以使用傅立叶系数(数字数组)构建自己的波形。您必须为每个音符生成一个新的振荡器对象。它们是一次性物品。通过将多个振荡器连接到同一个目的地,您可以获得复音。

 let audio = new(window.AudioContext || window.webkitAudioContext)();
 let s1 = audio.createOscillator();
 let g1 = audio.createGain();
 s1.type = 'sine';
 s1.frequency.value = 600;
 s1.start();
 g1.gain.value = 0.5;
 g1.connect(audio.destination);
 s1.connect(g1);

【讨论】:

以上是关于如何在 iPad 上使用 HTML5/Javascript 合成音频的主要内容,如果未能解决你的问题,请参考以下文章

上传图像文件时如何禁用捕获(在 ipad 上使用 safari)

如何在 iPad 上关闭 UIImagePickerController?

如何在 iPad/iPhone 上使用 ICC 配置文件?

如何在 iPad 上使用 HTML5/Javascript 合成音频

如何在 Mac 上共享我的 iPad

如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?