Javascript 加载许多小音频文件的良好实践

Javascript 加载许多小音频文件的良好实践,javascript,html,Javascript,Html,处理许多小音频文件(wav、mp3…)的负载的好方法是什么?我想制作一架88键的网络钢琴。每个键都与一个微小的wav文件相关联。我知道用88个请求攻击服务器是不好的。我正在考虑将它们捆绑(文件连接或单个音频文件)并用javascript将它们拆分。这是一种常见做法吗?有javascript库吗?只是一些一般性的评论: 我打赌你已经决定,你真的需要一个单独的文件为每个关键点,为现实的原因? 否则,你可能会考虑,例如,采样每一个倍频程的C键,改变音高,以减少内存消耗。大量的真实感也伴随着动态,这意味

处理许多小音频文件(wav、mp3…)的负载的好方法是什么?我想制作一架88键的网络钢琴。每个键都与一个微小的wav文件相关联。我知道用88个请求攻击服务器是不好的。我正在考虑将它们捆绑(文件连接或单个音频文件)并用javascript将它们拆分。这是一种常见做法吗?有javascript库吗?

只是一些一般性的评论:

我打赌你已经决定,你真的需要一个单独的文件为每个关键点,为现实的原因? 否则,你可能会考虑,例如,采样每一个倍频程的C键,改变音高,以减少内存消耗。大量的真实感也伴随着动态,这意味着按键的速度。对于真实的声音,应该有不同速度范围的单独样本。使用按键采样的方法,您将消耗大量RAM


如果你坚持你原来的计划,也许你可以尝试创建一个大的WAV文件,其中每个键都是连续播放的。然后,您可以找到每个音符的索引(示例开始/停止编号/索引),并仅回放相应的范围。对于压缩格式,此方法的可行性将取决于您使用的播放库。

为什么不使用来制作声音并避免下载声音文件?这一页上有一个钢琴例子:合成钢琴声音容易吗?我认为这可能是最好的解决方案。@neilsimp1是对的-它相对简单,是减少加载时间的一个很好的方法。@neilsimp1,brod Web Audio API似乎不支持IE 11。对不起,我应该提到跨浏览器兼容性。您可以将它们压缩到一个文件中,然后在JS中解压。改变音高是否意味着我必须在客户端进行傅里叶变换?我原本计划使用一个mp3文件,但文件的持续时间并不一致。如果我更改其中一个文件,我必须重新编制索引。使用“更改音高”,我的意思是你可以以不同的速度播放WAV数据。音高是钢琴弦的频率,您弹奏WAV文件的速度越快,音高(频率)就越高。根据您使用的播放库,您需要记住重采样。例如,如果在没有任何播放库的情况下播放样本,即,将每个样本的wav数据样本送入声音输出缓冲区(接收器),则需要在样本之间进行插值,以便音频质量不会降低。这方面有很多文献。啊,我只需要重新取样。这是一个很好的方法。我试试看。非常感谢。