我发现很难找到一个适合python的合成器模块,该模块允许程序以任意音高弹奏音符。最好,该音符不仅应不仅仅是纯正弦波,还应包括至少一些谐波-不仅应是蜂鸣声。
想法是能够写类似的东西
the_module.play(frequency, loudness, duration)
或
my_synth = the_module.newsynth()
my_synth.play(frequency, loudness, duration)
,其中频率以Hz为单位指定,并具有来自用户扬声器的合成音调。有执行此操作的JavaScript模块,例如Tone.js,但是有人知道使用Python的方法吗?
答案 0 :(得分:1)
如果在Windows上,则可以使用内置的winsound.Beep
。
如果在Linux上,则需要直接写入/dev/audio
,如建议的here:
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()