在 python 中以任意音高制作合成声音



我发现很难找到一个用于python的合成器模块,它允许程序以任意音高演奏音符。最好音符应该不仅仅是一个纯粹的正弦波,并且应该至少包括一些谐波 - 它应该不仅仅是一个哔哔声。

这个想法是能够写出类似的东西

the_module.play(frequency, loudness, duration)

my_synth = the_module.newsynth()
my_synth.play(frequency, loudness, duration)

其中频率以 Hz 为单位指定,并从用户的扬声器播放合成音调。有JavaScript模块可以做到这一点,比如Tone.js,但是有人知道使用Python的方法吗?

如果在Windows上,您可以使用内置winsound.Beep

如果在 Linux 上,您需要直接写信给 /dev/audio ,就像这里建议的那样:

def beep(frequency, amplitude, duration):
    sample = 8000
    half_period = int(sample/frequency/2)
    beep = chr(amplitude)*half_period+chr(0)*half_period
    beep *= int(duration*frequency)
    audio = file('/dev/audio', 'wb')
    audio.write(beep)
    audio.close()

最新更新