我对声音了解的一些理论-声音是:
一个波,振荡,阻尼振荡,一个波可以用物理学来描述,一个波可以用数学来描述。
下载并测试程序
由于我们是在计算机上建模,因此使用字节序列(傅立叶级数)(字节数从-128到127到零)(即字节数组)描述波动。
振动方程最好用SIN函数来描述。
同意,如果我们仅通过数组运行SIN函数,那将太简单了。
因此,在有关Yamaha合成器设备描述的文章的指导下,我编写了以下算法:
1.使用SIN函数创建一个主波或建模波,这是一个可能对其他开发人员有用的公式:
for(int k = 0; k < SoundLabVisual.player.data.length;k++){ double sinusoid = amplitude1 * Math.sin(2 * (3.14/1 ) * k * frequency1 + faza); }
其中:
幅度 1-幅度
频率 1-振荡频率
faza-振荡的初始阶段
2.使用第二个SIN函数,创建一个主波,其振幅为第一波的值:
程序截图

我将测试声音加载到lmms程序中。
听mp3将实现另一种算法,该算法将在通道上运行,如果可能的话,我将在第二篇文章中进行介绍。
更新:
根据评论者的评论,算法现在可以自己乘以彼此。
if(jCheckBox8.isSelected()){ sinusoid = (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))) * (a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 ))); }else{ sinusoid = a1 + (sinusoid * Math.sin( (c1 * (double)k) * frequency2Double + d1 )); }
更新2:程序已更新,现在可以将波与声音混合。