我正在开展一个有趣的解决数学问题和音乐的项目。生成特定音符(或音调)很容易:
ton = amplitude * sin(2pi * frequency * time / samplerate)
我正在使用python,并且有代码可以从http://code.google.com/p/scitools/执行此操作。
def note(frequency, length, amplitude=1, sample_rate=44100):
time_points = numpy.linspace(0, length, length * sample_rate)
return numpy.sin(2 * numpy.pi * frequency * time_points) * amplitude
当然,在真实音乐中,通常在同一时间步骤中播放多个音调。我尝试通过生成两个音调来实现这一点,即:
twotone = note(440,2)+ note(261.63,2)
但这只是废话。我将如何在数学上编码多个同时音调?
答案 0 :(得分:3)
当使用两个音调时,你应该将个别振幅减半,否则总振幅可能翻倍。如果使用两个以上,则应以反映其相对体积的比例混合,总幅度为1。