正弦波与声波分析:从基础到复杂组合
1. 正弦波转化为声音
将正弦波转化为声音时,会生成一个经过垂直和水平拉伸或压缩的正弦函数,以获得更理想的频率和振幅。例如,频率为 441 Hz、振幅为 10000 的正弦函数可代表一个可听声波。
生成该函数后,需要提取 44100 个均匀间隔的函数值传递给 PyGame。这个提取函数值的过程称为采样,可通过以下 sample 函数实现:
def sample(f,start,end,count):
mapf = np.vectorize(f)
ts = np.arange(start,end,(end-start)/count)
values = mapf(ts)
return values.astype(np.int16)
2. 改变正弦波的频率
以创建频率为 2 的正弦波为例,即函数在 0 到 1 之间重复两次。正弦函数的周期为 2π,默认情况下,重复两次需要 4π 个单位。为使输入变量 t 从 0 到 1 变化时正弦函数重复两次,可使用函数 sin(4πt) 。
一般来说,对于函数 f(t) = sin(kt) ,其周期会缩小为 2π/k,频率会从通常的 1/(2π) 增加到 k/(2π)。若要得到频率为 441 的正弦函数,k 的值应为 441 * 2 * π。
增加正弦波的振幅则相对简单,只需将正弦函数乘以一个常数因子,振幅就会按相同因子增加。
超级会员免费看
订阅专栏 解锁全文
506

被折叠的 条评论
为什么被折叠?



