我发现了一些使用Web Audio API进行乐器合成的库。其中一个库(Band.js)结合振荡器类型(正弦、方波等)使用
因此,我找到了另一个库(musical.js),它将前32个谐波作为矩阵与
正如源代码的注释中所述,这些谐波来自于这个钢琴样本文件。还有其他乐器的样本文件。我尝试替换谐波,甚至所有2000个,但它始终听起来像钢琴。
还有一些值可以调整和插值谐波和ADSR值。也许它们只是为钢琴音色进行了优化?
然后我找到了另一个库(guitar-synth),它具有非常好的吉他音色,听一下。但是这个库没有使用
顺便说一下:还发现了另一个合成声音乐器的库。这里是演示和源代码。声音也很好,但是musical.js库有更美丽的音色。但它似乎也使用类似于
createOscillator()
函数,详见 源代码。但它听起来太合成了(可以听一下示例)。我想要更真实的声音,但是我不想使用任何预编译的声音字体,所以应该是合成的,并且可以在移动设备上使用。因此,我找到了另一个库(musical.js),它将前32个谐波作为矩阵与
createPeriodicWave
函数结合使用,详见 源代码。音色非常棒,可以听一下。正如源代码的注释中所述,这些谐波来自于这个钢琴样本文件。还有其他乐器的样本文件。我尝试替换谐波,甚至所有2000个,但它始终听起来像钢琴。
还有一些值可以调整和插值谐波和ADSR值。也许它们只是为钢琴音色进行了优化?
然后我找到了另一个库(guitar-synth),它具有非常好的吉他音色,听一下。但是这个库没有使用
createPeriodicWave
API。相反,它使用createScriptProcessor
和getChannelData
函数,结合一些“简单”的计算,但与其他库中的谐波无关,详见源代码。
所以我的主要问题是
能否将吉他合成器改用createPeriodicWave
API?我想在musicaljs中使用吉他音色,这样我就可以在钢琴音色和吉他音色之间切换。顺便说一下:还发现了另一个合成声音乐器的库。这里是演示和源代码。声音也很好,但是musical.js库有更美丽的音色。但它似乎也使用类似于
getChannelData
的东西,只是编码为WAVE。它也无法在我的Android手机上使用。