我发现了一些使用 Web Audio API 进行乐器合成的库。
其中之一(Band.js)使用createOscillator()
, 与振荡器类型(正弦,正方形,...)结合使用,请参阅 source。
但这听起来太合成了(听的例子)我想要一些听起来更真实的东西,但我不想使用任何预编译的声音字体,所以应该合成它。它也应该在移动设备上工作。
所以我找到了另一个库(musical.js),它使用前 32 个谐波作为矩阵并结合了createPeriodicWave
see source。音色很棒,可以听听
正如在源代码的注释中所写的那样,谐波取自这个钢琴样本文件。还有更多其他乐器的示例文件。我试图更换谐波,甚至所有 2000,但它听起来总是像钢琴。
还有一些值可以调整和插入谐波和 ADSR 值。也许它们只针对钢琴声音进行了优化?
然后我找到了另一个库(吉他合成器),它的吉他音色非常好,听听。但是这个库不使用任何createPeriodicWave
API。相反,它使用createScriptProcessor
并getChannelData
结合了一些“简单”计算,但与其他库中的谐波完全不同,请参阅源代码
所以我的主要问题
可以移植吉他合成器以使用createPeriodicWave
API 吗?我想在musicjs中使用吉他音色。这样我就可以在钢琴音色和吉他音色之间切换。
顺便说一句:找到另一个合成声音乐器的库。这是演示,这里是源代码。声音也不错,但 music.js 库的音色更优美。但它看起来也使用了类似的东西,比如getChannelData
编码为 WAVE。它也不适用于我的 Android 移动设备。