我发现很难找到一个用于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()